API リファレンス - Direct Line API 3.0

Direct Line API 3.0 を使用して、クライアント アプリケーションがボットと通信できるようにすることができます。 Direct Line API 3.0 では、HTTPS 経由で業界標準の REST と JSON が使用されます。

基底URI

Direct Line API 3.0 にアクセスするには、すべての API 要求に対して次のいずれかの基本 URI を使用します。

  • グローバル ボットの場合は、 https://directline.botframework.com

  • リージョン ボットの場合は、選択したリージョンに応じて次の URI を入力します。

    リージョン 基底URI
    ヨーロッパ https://europe.directline.botframework.com
    インド https://india.directline.botframework.com

Tip

リージョン ボットにグローバル ベース URI を使用すると、一部の要求が地理的境界を超える可能性があるため、要求が失敗する可能性があります。

ヘッダー

標準の HTTP 要求ヘッダーに加えて、Direct Line API 要求には、要求を発行しているクライアントを認証するためのシークレットまたはトークンを指定するAuthorization ヘッダーが含まれている必要があります。 次の形式を使用して、 Authorization ヘッダーを指定します。

Authorization: Bearer SECRET_OR_TOKEN

クライアントがDirect Line API 要求の認証に使用できるシークレットまたはトークンを取得する方法の詳細については、「認証」を参照してください。

HTTP 状態コード

各応答で返される HTTP 状態コード は、対応する要求の結果を示します。

HTTP 状態コード Meaning
200 要求は成功しました。
201 要求は成功しました。
202 申請は処理のために受理されました。
204 要求は成功しましたが、コンテンツは返されませんでした。
400 要求の形式が正しくないか、正しくありません。
401 クライアントは要求を行う権限がありません。 多くの場合、この状態コードは、 Authorization ヘッダーが見つからないか、形式が正しくないために発生します。
403 クライアントは、要求された操作の実行を許可されていません。 操作は、次の理由で失敗する可能性があります。
  • 無効なトークン: 要求が以前に有効であったが有効期限が切れたトークンを使用する場合、ErrorResponse オブジェクト内で返される Errorcode プロパティがTokenExpiredに設定されます。
  • データ境界違反: ボットがリージョン ボットであっても、ベース URI がリージョンではない場合、一部の要求が地理的境界を超える可能性があります。
  • 無効なターゲット リソース: ターゲット ボットまたはサイトが無効であるか、削除されました。
404 要求されたリソースが見つかりませんでした。 通常、この状態コードは無効な要求 URI を示します。
500 Direct Line サービス内で内部サーバー エラーが発生しました。
502 ボットが使用できないか、エラーが返されました。 これは一般的なエラー コードです。

Note

HTTP 状態コード 101 は WebSocket 接続パスで使用されますが、これは WebSocket クライアントによって処理される可能性があります。

Errors

4xx 範囲または 5xx 範囲の HTTP 状態コードを指定する応答には、エラーに関する情報を提供する ErrorResponse オブジェクトが応答の本文に含まれます。 4xx の範囲でエラー応答を受け取った場合は、 ErrorResponse オブジェクトを調べてエラーの原因を特定し、要求を再送信する前に問題を解決します。

Note

ErrorResponse オブジェクト内の code プロパティで指定された HTTP 状態コードと値は安定しています。 ErrorResponse オブジェクト内のmessage プロパティで指定された値は、時間の経過と同時に変更される可能性があります。

次のスニペットは、要求の例と結果のエラー応答を示しています。

依頼

POST https://directline.botframework.com/v3/directline/conversations/abc123/activities
[detail omitted]

応答

HTTP/1.1 502 Bad Gateway
[other headers]
{
    "error": {
        "code": "BotRejectedActivity",
        "message": "Failed to send activity: bot returned an error"
    }
}

トークン操作

これらの操作を使用して、クライアントが 1 つの会話にアクセスするために使用できるトークンを作成または更新します。

Operation Description
トークンの生成 新しい会話のトークンを生成します。
更新トークン トークンを更新します。

トークンの生成

1 つの会話に対して有効なトークンを生成します。

POST /v3/directline/tokens/generate
Content Description
リクエスト本文 TokenParameters オブジェクト
返品 Conversation オブジェクト

更新トークン

トークンを更新します。

POST /v3/directline/tokens/refresh
Content Description
リクエスト本文 n/a
返品 Conversation オブジェクト

会話操作

これらの操作を使用して、ボットとの会話を開き、クライアントとボットの間でアクティビティを交換します。

Operation Description
会話を開始する ボットとの新しい会話を開きます。
会話情報を取得する 既存の会話に関する情報を取得します。 この操作により、クライアントが会話への 再接続 に使用できる新しい WebSocket ストリーム URL が生成されます。
アクティビティを取得する ボットからアクティビティを取得します。
アクティビティの送信 ボットにアクティビティを送信します。
ファイルのアップロードと送信 ファイルを添付ファイルとしてアップロードして送信します。

会話を始めましょう

ボットとの新しい会話を開きます。

POST /v3/directline/conversations
Content Description
リクエスト本文 TokenParameters オブジェクト
返品 Conversation オブジェクト

会話情報を取得する

既存の会話に関する情報を取得し、クライアントが会話への 再接続 に使用できる新しい WebSocket ストリーム URL も生成します。 必要に応じて、要求 URI に watermark パラメーターを指定して、クライアントによって表示される最新のメッセージを示します。

GET /v3/directline/conversations/{conversationId}?watermark={watermark_value}
Content Description
リクエスト本文 n/a
返品 Conversation オブジェクト

アクティビティを取得する

指定した会話のアクティビティをボットから取得します。 必要に応じて、要求 URI に watermark パラメーターを指定して、クライアントによって表示される最新のメッセージを示します。

GET /v3/directline/conversations/{conversationId}/activities?watermark={watermark_value}
Content Description
リクエスト本文 n/a
返品 ActivitySet オブジェクト。 応答には、ActivitySet オブジェクトのプロパティとしてwatermarkが含まれています。 クライアントは、アクティビティが返されないまで watermark 値を進めることで、使用可能なアクティビティをページングする必要があります。

アクティビティの送信

ボットにアクティビティを送信します。

POST /v3/directline/conversations/{conversationId}/activities
Content Description
リクエスト本文 Activity オブジェクト
返品 ボットに送信されたアクティビティの ID を指定するid プロパティを含む ResourceResponse

ファイルのアップロードと送信

ファイルを添付ファイルとしてアップロードして送信します。 要求 URI で userId パラメーターを設定して、添付ファイルを送信するユーザーの ID を指定します。

POST /v3/directline/conversations/{conversationId}/upload?userId={userId}
Content Description
リクエスト本文 1 つの添付ファイルの場合は、要求本文にファイルの内容を設定します。 複数の添付ファイルの場合は、添付ファイルごとに 1 つのパーツを含むマルチパート要求本文を作成し、必要に応じて、指定された添付ファイルのコンテナーとして機能する Activity オブジェクトの 1 つのパーツを作成します。 詳細については、「 ボットにアクティビティを送信する」を参照してください。
返品 ボットに送信されたアクティビティの ID を指定するid プロパティを含む ResourceResponse

Note

アップロードされたファイルは 24 時間後に削除されます。

Schema

Direct Line 3.0 スキーマには、Bot Framework スキーマで定義されているすべてのオブジェクトと、Direct Lineに固有のオブジェクトが含まれます。

ActivitySet オブジェクト

一連のアクティビティを定義します。

財産 タイプ Description
activities Activity[] Activity オブジェクトの配列。
watermark 文字列 セット内のアクティビティの最大透かし。 クライアントは、 watermark 値を使用して、 ボットからアクティビティを取得 するとき、または 新しい WebSocket ストリーム URL を生成するときに表示された最新のメッセージを示します。

Conversation オブジェクト

Direct Line会話を定義します。

財産 タイプ Description
conversationId 文字列 指定したトークンが有効な会話を一意に識別する ID。
eTag 文字列 HTTP ETag (エンティティ タグ)。
expires_in 数値 トークンの有効期限が切れるまでの秒数。
referenceGrammarId 文字列 このボットの参照文法の ID。
streamUrl 文字列 会話のメッセージ ストリームの URL。
token 文字列 指定された会話に対して有効なトークン。

TokenParameters オブジェクト

トークンを作成するためのパラメーター。

財産 タイプ Description
eTag 文字列 HTTP ETag (エンティティ タグ)。
trustedOrigins string[] トークン内に埋め込む信頼できる配信元。
ユーザー ChannelAccount トークン内に埋め込むユーザー アカウント。

アクティビティ

クライアントがDirect Lineを介してボットから受け取るアクティビティごとに、次の操作を行います。

  • 添付ファイル カードは保持されます。
  • アップロードされた添付ファイルの URL は、プライベート リンクで非表示になります。
  • channelData プロパティは変更せずに保持されます。

クライアントは、ActivitySet の一部としてボットから複数のアクティビティを受信できます。

クライアントがDirect Lineを介してボットにActivityを送信する場合:

  • type プロパティは、送信する型アクティビティ (通常はメッセージ) を指定します。
  • from プロパティには、クライアントによって選択されたユーザー ID が設定されている必要があります。
  • 添付ファイルには、Direct Line添付ファイル エンドポイント経由でアップロードされた既存のリソースまたは URL への URL が含まれている場合があります。
  • channelData プロパティは変更せずに保持されます。
  • アクティビティの合計サイズ (JSON にシリアル化して暗号化する場合) は、256,000 文字を超えてはなりません。 アクティビティは 150K 以下にすることをお勧めします。 さらにデータが必要な場合は、アクティビティを分割するか、添付ファイルを使用することを検討してください。

クライアントは、要求ごとに 1 つのアクティビティを 送信 できます。

その他のリソース