message オブジェクトでの添付ファイルの操作
message オブジェクトは、メッセージ添付ファイルを操作するための API およびプロパティーを提供します。
アセンブリーに解析ポリシーが含まれている場合、マルチパート・メッセージの要求または応答内の添付ファイルを操作してクライアントに返送することができます。 デフォルトでは、応答はマルチパート形式でクライアントに送信されます。
制約事項: 既存の添付ファイルが含まれていない要求または応答に添付ファイルを追加することはできません。
あるいは、 context.message.attachments をクリアして添付ファイルを破棄し、 message.body のみをクライアントに送信することもできます。注: アセンブリーに構文解析ポリシーが含まれていない場合は、以下の処理ルールが適用されます。
message.body変数が変更されていないマルチパート要求の場合、invoke ポリシーは添付ファイルを保持してサーバーに渡します。message.body変数が変更されていないマルチパート要求または応答の場合、結果 API アクションは最終応答として添付ファイルを渡します。message.body変数を変更すると、添付ファイルは破棄されます。
添付ファイルの取得
- GatewayScript の例
- 索引ロケーションごとに添付ファイルを取得します。
context.message.attachments[1]
メッセージへの添付ファイルの追加
- GatewayScript の例
var headers = JSON.parse ( '{ "Content-Type": "text/xml; charset=utf-8", "Content-Id": "<data>" }' ); context.message.attachments.append(headers, 'Hello world.');
配列内の添付ファイル数の取得
- 例
for (var i = 0; i < context.message.attachments.count; i++) { context.message.attachments[i].header.set('X-Foo', 'bar'); }
メッセージからの添付ファイルの削除
- GatewayScript の例
- 索引ロケーションごとに添付ファイルを削除します。
context.message.attachments.remove(1)
添付ファイルの本文の読み取り、アクセス、および操作
- GatewayScript の例
- 添付ファイルのペイロードをバイナリーで読み取り、その内容を
Buffer、Buffers、JSON、またはXML NodeListオブジェクトとして返すには、以下のようにします。context.message.attachments[0].body.readAsBuffer(function(errorObject,bufferObject){}) context.message.attachments[0].body.readAsBuffers(function(errorObject,buffersObject){}) context.message.attachments[0].body.readAsJSON(function(errorObject,jsonObject){}) context.message.attachments[0].body.readAsXML(function(errorObject,nodeList){})コンテンツHello worldを添付ファイルの現在のペイロードに書き込むには、以下のようにします。message.attachments[0].body.write("Hello world")
添付ファイルのヘッダーの操作
- GatewayScript の例
- 添付ファイル・ヘッダー全体の値を取得するには、以下のようにします。
context.message.attachments[0].headers添付ファイルの名前付きヘッダーの値を取得するには、以下のようにします。context.message.attachments[0].header.get();添付ファイルの現在のContent-Typeヘッダーを削除します。context.message.attachments[0].header.remove('Content-Type');添付ファイルの名前付きヘッダーの値を設定できます。 ヘッダーは、合体および非合体にすることができます。 次のコードを例に取ってみましょう。
値の型が配列の場合、context.message.attachments[0].header.set('MyCookie', ['cookie1', 'cookie2']);MyCookieヘッダーは連結されず、 HTTP ヘッダーに異なるエントリとして存在します。MyCookie: cookie1 MyCookie: cookie2