Microsoft Azure Web App Bot を使用したチャットシナリオの設定方法
チュートリアル「 チャット用に Microsoft Azure Web App Bot を設定する方法」では、テンプレートを使用して基本的な Web App Bot を設定する方法を学びました。
このシナリオ演習では、Bright Pattern コンタクトセンターのシナリオを編集し、チャット会話で Web App Bot を使用する方法を学びます。
手順
Direct Line Bot Framework への認証およびチャット会話の実行に Bright Pattern のシナリオブロックを使用するため、統合アカウントの設定は必要ありません。サンプルシナリオをダウンロードし、指示に従って編集してください。
ステップ 1: サンプルシナリオのインポートと編集
- Bright Pattern Contact Center 管理者アプリケーションで、ボットを使用するシナリオを開きます。
- サンプルシナリオ File:App Azure Web App Bot Example.zip をインポートすると、すぐに開始できます。この基本シナリオには、シナリオブロックの使用方法を説明するコメントが含まれています。
ステップ 2: 「変数の設定」でシークレットキーを追加する
最初の 「変数の設定」 ブロックで、以下のプロパティを設定してください:
- 変数名 - ブロックに名前を付けます(例:「Secret」)
- 値 - Direct Line チャネルの作成時に Azure Bot Framework によって生成されたシークレットキーです。Bright Pattern のシナリオでは、このシークレットキーを使用して、ボットとの通信のために発行する Direct Line API リクエストを認証します。
ステップ 3: Direct Line API 3.0 への認証
最初の Fetch URL ブロックでは、Direct Line チャネルの設定ページからコピーしたシークレットを使用して、Direct Line API 3.0 へのリクエストを認証するためのセッショントークンを取得します。
以下のプロパティを設定してください:
- タイトルテキスト - ブロックに名前を付けます(例:「トークンの取得」)
- リクエストタイプ - POST
- 取得する URL - https://directline.botframework.com/v3/directline/tokens/generate
- 追加ヘッダー - Authorization: Bearer $(secret)
- URL パラメータ - なし
- コンテンツタイプ - application/JSON
- 本文 - 空
- ユーザー名 - 空白のまま
- パスワード - 空欄のままにしてください
- 結果の JSON 内の初期パス - 空欄のままにしてください
- JSON データのシナリオ変数プレフィックス - jstoken
ステップ 4: 「変数の設定」にトークンを追加する
2 番目の 「変数の設定」 ブロックで、以下のプロパティを設定してください:
- 変数名 - ブロックに名前を付けます(例:「token」)
- 値 - $(jstoken.token)
ステップ 5: 会話を開始する
2 番目の 「メッセージ送信+」 ブロックでは、/v3/directline/conversations エンドポイントに対して POST リクエストを発行し、新規 Direct Line 会話を開始します。会話が開かれている間、ボットとクライアントの両方がメッセージを送信できます。
リクエストが成功した場合、レスポンスには、会話の ID(つまり、後のステップで必要となる「conversationId」)、トークン、トークンの期限切れまでの秒数を示す値、およびクライアントが WebSocket ストリーム経由でアクティビティを受信するために使用できるストリーム URL が含まれます。
以下のプロパティを設定してください:
- タイトルテキスト - ブロックの名前を指定します(例:「会話を開始」)
- リクエストタイプ - POST
- 取得する URL - https://directline.botframework.com/v3/directline/conversations/
- 追加ヘッダー - Authorization: Bearer $(token)
- URL パラメータ - なし
- コンテンツタイプ - application/JSON
- 本文 - 空
- ユーザー名 - 空白のまま
- パスワード - 空欄のままにしてください
- 結果の JSON 内の初期パス - 空欄のままにしてください
- JSON データのシナリオ変数プレフィックス - conversation
ステップ 6: 顧客にメッセージを送信する
「メッセージ送信+」 ブロックで、会話内で送信したいメッセージを指定してください。
以下のプロパティを設定してください:
- メディアタイプ - チャット
- メッセージ - 任意のテキストメッセージ(例:「こんにちは、ようこそ!」)
ステップ 7: 顧客からの返信を求めるか、待機する
「入力の要求」 ブロックでは、オプションで顧客からの応答を促し、その応答を「user_input」という変数名に保存することができます。あるいは、前のシナリオブロックからのテキスト入力を単に待つこともできます。
以下のプロパティを設定してください:
- プロンプトの内容 - テキストメッセージ
- 送信するメッセージ - 空欄のまま
- 結果の変数名 - user_input
ステップ 8: アクティビティの POST
3 番目の Fetch URL ブロックでは、Direct Line 3.0 プロトコルを使用して、メッセージアクティビティやタイピングアクティビティなど、ボットがサポートするアクティビティを交換します。/v3/directline/conversations/$(conversation.conversationId)/activities エンドポイントに対して POST リクエストを発行します。ここで「$(conversation.conversationId)」は、前の Fetch URL ブロックから /v3/directline/conversations エンドポイントへの POST リクエストで取得された ID です。
以下のプロパティを設定してください:
- タイトルテキスト - ブロックに名前を付けます(例:「アクティビティの投稿」)
- リクエストタイプ - POST
- 取得する URL - https://directline.botframework.com/v3/directline/conversations/$(conversation.conversationId)/activities
- 追加ヘッダー - Authorization: Bearer $(token)
- URL パラメータ - なし
- コンテンツタイプ - application/JSON
- 本文 - リクエストの本文にアクティビティオブジェクトを指定してください。
例:
{
"type": "message",
"from": {
"id": "user1"
},
"text": "$(user_input)"
}
- ユーザー名 - 空欄のままにしてください
- パスワード - 空欄のままにしてください
- 結果の JSON 内の初期パス - 空欄のままにしてください
- JSON データのシナリオ変数プレフィックス - message_id
ステップ 9: アクティビティの取得
4 番目の Fetch URL ブロックでは、HTTP GET を使用してアクティビティ(例:ボットの応答)を取得します。
以下のプロパティを設定してください:
- タイトルテキスト - ブロックの名前を指定してください(例:「ボットの応答を取得」)
- リクエストタイプ - GET
- 取得する URL - https://directline.botframework.com/v3/directline/conversations/$(conversation.conversationId)/activities
- 追加ヘッダー - Authorization: Bearer $(token)
- URL パラメータ - なし
- コンテンツタイプ - application/JSON
- 本文 - 空
- ユーザー名 - 空白のままにしてください
- パスワード - 空欄のままにしてください
- 結果の JSON における初期パス - activities
- JSON データのシナリオ変数プレフィックス - azure_bot_answer
- Get Next ブロックを使用してデータをループ処理する - チェックボックスを選択してください
ステップ 10: ボットの応答をルーティングするための条件を設定する
「If」 ブロックおよび 「メッセージ送信+」 ブロックでは、ボットに応答がある場合、$(azure_bot_answer.text) を使用してその応答をチャットメッセージとして顧客に送信するように指定します。
以下のプロパティを設定してください:
- 終了ラベル - 応答あり
- 条件
- シナリオ変数(文字列)
- azure_bot_answer.replyToId
- is
- =
- $(message_id.id)
- シナリオ変数(文字列)
ステップ 11: ボットの応答を顧客に転送する
「応答あり」の出口の下に 「メッセージ送信+」 ブロックを追加し、以下のプロパティを設定してください:
- メディアタイプ - チャット
- メッセージ - $(azure_bot_answer.text)
ステップ 12: 次のボットの応答を取得する
「Get Next Record」 ブロックでは、次のボットの応答がある場合、それを取得します。
以下のプロパティを設定してください:
- タイトルテキスト - 任意の名前
- 方向 - 次のレコード
- レコードセット名 - azure_bot_answer
ステップ 13: 「Goto」を使用して再度入力を要求する
ボットからの応答がこれ以上ない場合は、 「Goto」 ブロックを使用して、再度入力をリクエストしてください。
ステップ 14: ボットの応答を継続的に確認する
さらに 「Goto」 ブロックを追加し、 「If」 ブロックを指すように設定します。これにより、ボットの応答を取得し、チャットに送信し、応答がなくなるまでボットの応答をチェックし続けるループが作成されます。
ステップ 15: 会話を終了する
最後の Fetch URL ブロックでは、「endOfConversation」アクティビティを含む POST リクエストをチャネルのメッセージングエンドポイントに送信し、会話を終了します。
以下のプロパティを設定してください:
- タイトルテキスト - ブロックに名前を付けます(例:「会話を終了する」)
- リクエストタイプ - POST
- 取得する URL - https://directline.botframework.com/v3/directline/conversations/$(conversation.conversationId)/activities
- 追加ヘッダー - Authorization: Bearer $(token)
- URL パラメータ - なし
- コンテンツタイプ - application/JSON
- 本文 - 本文に「endOfConversation」アクティビティを指定してください:
{
"type": "endOfConversation",
"from": {
"id": "user1"
}
}
- ユーザー名 - 空欄のままにしてください
- パスワード - 空欄のままにしてください
- 結果の JSON における初期パス - 空欄のままにしてください
- JSON データのシナリオ変数プレフィックス - 空欄のままにしてください
ステップ 16: 保存
シナリオを保存します。
ステップ 17: チャットシナリオエントリーがこのシナリオを使用するように設定する
使用する メッセージング/チャットシナリオエントリー で、Web App Bot 対応のチャットに適切なシナリオとサービスが設定されていることを確認してください。
これで設定は完了です。チャットを起動して、お試しいただけます。