Direct Line API 1.1 でボットにメッセージを送信する

重要

この記事では、Direct Line API 1.1 を利用してボットにメッセージを送信する方法について説明します。 クライアント アプリケーションとボットの間に新しい接続を作成する場合は、代わりに Direct Line API 3.0 を使用します。

クライアントは、Direct Line 1.1 プロトコルを使用してボットとメッセージを交換できます。 これらのメッセージは、ボットがサポートするスキーマ (Bot Framework v1 または Bot Framework v3) に変換されます。 クライアントは、要求ごとに 1 つのメッセージを送信できます。

メッセージの送信

ボットにメッセージを送信するには、クライアントで Message オブジェクトを作成してメッセージを定義し、POST 要求を https://directline.botframework.com/api/conversations/{conversationId}/messages に発行し、要求の本文でその Message オブジェクトを指定する必要があります。

次のスニペットは、メッセージ送信要求と応答の例を示しています。

Request

POST https://directline.botframework.com/api/conversations/abc123/messages
Authorization: Bearer RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0
[other headers]
{
  "text": "hello",
  "from": "user1"
}

Response

メッセージがボットに配信されると、サービスは、ボットの状態コードを反映する HTTP 状態コードで応答します。 ボットでエラーが生成されると、クライアントからのメッセージ送信要求への応答として、HTTP 500 応答 ("内部サーバー エラー") が返されます。 POST が正常に実行されると、サービスから HTTP 204 状態コードが返されます。 応答の本文で返されるデータはありません。 クライアントのメッセージと、ボットからのメッセージは、ポーリングで取得できます。

HTTP/1.1 204 No Content
[other headers]

メッセージ送信要求/応答の合計時間

Direct Line 会話にメッセージを POST するための合計時間は次を足したものになります。

  • HTTP 要求がクライアントから Direct Line サービスに至るための移動時間
  • Direct Line 内の内部処理時間 (通常、120 ミリ秒未満)
  • Direct Line サービスからボットまでの移動時間
  • ボット内の処理時間
  • HTTP 応答がクライアントに戻るための移動時間

ボットに添付ファイルを送信する

状況によっては、クライアントから画像や文書などの添付ファイルをボットに送信しなければならないことがあります。 POST /api/conversations/{conversationId}/messages を利用して送信される Message オブジェクト内で添付ファイルの URL を指定するか、POST /api/conversations/{conversationId}/upload を利用して添付ファイルをアップロードすることで、クライアントから添付ファイルを送信できます。

URL で添付ファイルを送信する

POST /api/conversations/{conversationId}/messages を利用して Message オブジェクトの一部として 1 つ以上の添付ファイルを送信するには、メッセージの images 配列または attachments 配列 (あるいはその両方) に添付ファイル URL を指定します。

アップロードで添付ファイルを送信する

クライアントから送信する画像や文書がデバイスにあるものの、それらのファイルに対応する URL がないことがしばしばあります。 そのような場合、クライアントでは、アップロードでボットに添付ファイルを送信する POST /api/conversations/{conversationId}/upload 要求を発行できます。 要求の形式とコンテンツは、クライアントから 1 つの添付ファイルを送信するか、複数の添付ファイルを送信するかによって変わります。

アップロードで 1 つの添付ファイルを送信する

アップロードで 1 つの添付ファイルを送信するには、次のような要求を発行します。

POST https://directline.botframework.com/api/conversations/{conversationId}/upload?userId={userId}
Authorization: Bearer SECRET_OR_TOKEN
Content-Type: TYPE_OF_ATTACHMENT
Content-Disposition: ATTACHMENT_INFO
[other headers]

[file content]

この要求 URI で、 {conversationId} を会話の ID に置換し、 {userId} をメッセージを送信するユーザーの ID に置換します。 要求ヘッダーで、Content-Type を設定して添付ファイルの種類を指定し、Content-Disposition を設定して添付ファイルのファイル名を指定します。

次のスニペットは、(単一の) 添付ファイル送信要求と応答の例を示しています。

Request

POST https://directline.botframework.com/api/conversations/abc123/upload?userId=user1
Authorization: Bearer RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0
Content-Type: image/jpeg
Content-Disposition: name="file"; filename="badjokeeel.jpg"
[other headers]

[JPEG content]

Response

要求が成功すると、アップロードの完了時にメッセージがボットに送信され、サービスから HTTP 204 状態コードが返されます。

HTTP/1.1 204 No Content
[other headers]

アップロードで複数の添付ファイルを送信する

アップロードで複数の添付ファイルを送信するには、/api/conversations/{conversationId}/upload エンドポイントに対して、マルチパート要求の POST を実行します。 要求の Content-Type ヘッダーを multipart/form-data に設定し、パートごとに Content-Type ヘッダーと Content-Disposition ヘッダーを含めて各添付ファイルの種類とファイル名を指定します。 要求 URI で、userId パラメーターを、メッセージを送信するユーザーの ID に設定します。

Content-Type ヘッダー値 application/vnd.microsoft.bot.message を指定するパートを追加することで、要求内に Message オブジェクトを含めることができます。 これにより、クライアントは、添付ファイルが含まれるメッセージをカスタマイズできます。 要求にメッセージが含まれている場合、ペイロードの他の部分で指定された添付ファイルは、送信される前にそのメッセージに添付ファイルとして追加されます。

次のスニペットは、(複数の) 添付ファイル送信要求と応答の例を示しています。 この例では、要求により、テキストと 1 つの画像添付ファイルが含まれるメッセージが送信されます。 要求にさらにパートを追加して、このメッセージに複数の添付ファイルを含めることができます。

Request

POST https://directline.botframework.com/api/conversations/abc123/upload?userId=user1
Authorization: Bearer RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0
Content-Type: multipart/form-data; boundary=----DD4E5147-E865-4652-B662-F223701A8A89
[other headers]

----DD4E5147-E865-4652-B662-F223701A8A89
Content-Type: image/jpeg
Content-Disposition: form-data; name="file"; filename="badjokeeel.jpg"
[other headers]

[JPEG content]

----DD4E5147-E865-4652-B662-F223701A8A89
Content-Type: application/vnd.microsoft.bot.message
[other headers]

{
  "text": "Hey I just IM'd you\n\nand this is crazy\n\nbut here's my webhook\n\nso POST me maybe",
  "from": "user1"
}

----DD4E5147-E865-4652-B662-F223701A8A89

Response

要求が成功すると、アップロードの完了時にメッセージがボットに送信され、サービスから HTTP 204 状態コードが返されます。

HTTP/1.1 204 No Content
[other headers]

その他のリソース