4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VisualStudio2017でガルーンAPIを使ってファイル添付メッセージを送ってみる

Last updated at Posted at 2018-08-23

偉大なる先人

VisualStudio2017でガルーンAPIを使ってメッセージを送ってみる
SOAPど素人なこともあって、ガルーンAPIの実装でかなり悩んでたところ
こんな素敵な記事を見つけて一命を取り止めました。ありがたや。
感謝と尊敬の念を込めてタイトルパクりました。

やりたいこと

上記のメッセージ送信APIに添付ファイルを追加する。

実装

メッセージ送信処理については上記記事に詳しく記載されているため割愛。
ファイル添付のリクエスト作成処理のみ抜粋。

FileMessageTest.cs

// 添付したいファイルのパス
string[] fileDirArray = { @"C:\hoge.jpg", @"C:\fuga.jpg" };

// 添付ファイル実体配列
MessageCreateThreadTypeFile[] files = new MessageCreateThreadTypeFile[0];
// 添付ファイル情報配列
contentFile[] cFiles = new contentFile[0];

// ファイル数分ループ
for (int cnt = 0; cnt < fileDirArray.Length; cnt++)
{
    string fileDir = fileDirArray[cnt];
    string fileName = fileDir.Substring(fileDir.LastIndexOf('\\') + 1);

    //------------------
    // ファイル実体
    //------------------

    // 1.添付するファイルをバイト配列にする
    FileStream fs = new FileStream(fileDir, FileMode.Open, FileAccess.Read);
    byte[] bs = new byte[fs.Length];
    fs.Read(bs, 0, bs.Length);
    fs.Close();

    // 2.ファイル設定
    MessageCreateThreadTypeFile file = new MessageCreateThreadTypeFile();
    file.content = bs;
    file.id = cnt.ToString();

    // 3.添付ファイル配列に追加
    Array.Resize(ref files, cnt + 1);
    files[cnt] = file;

    //------------------
    // ファイル情報
    //------------------

    // 1.ファイル情報設定
    contentFile cFile = new contentFile();
    cFile.id = cnt.ToString();
    cFile.size = (ulong)bs.Length;
    cFile.name = fileName;
    cFile.mime_type = "image/jpeg";

    // 2.添付ファイル配列に追加
    Array.Resize(ref cFiles, cnt + 1);
    cFiles[cnt] = cFile;
}

// 添付ファイル実体配列、添付ファイル情報配列をそれぞれセット
messageThreadType.file = files;
threadType.content.file = cFiles;

調査結果

ファイル形式について

Reference.cs内でバイト配列からBase64形式にデシリアライズしてくれてるっぽい。
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType="base64Binary")]

ファイル実体と情報について

ファイル自体のバイト配列とファイルの情報(ファイル名、サイズ、MIME_TYPE)は全然違うとこに持ってた。
それぞれのidでお互い紐づいている模様。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?