Oracle Cloud Infrastructureドキュメント

アプリケーションが開始した会話

お客様とのチャットを開始する場合は、Oracle Digital Assistantのアプリケーション開始の会話(AIC)機能を使用して、ユーザーとのTwilio/SMS会話を開始できます。 たとえば、AICを使用して、アポイントメント・リマインダ、トラフィック・アラートまたはフライト・ステータスを送信できます。

アプリケーションで開始される会話は、Digital Assistantが外部アプリケーションから受信するイベントにレスポンスして開始する会話です。 Digital Assistantはアプリケーション・イベント・メッセージのコンテンツを使用して、ユーザーに最初に通知するスキルの1つをトリガーし、イベントに適用可能なダイアログ・フローの状態で会話を開始します。

ユースケース: 経費精算書アプリケーション

初期ユーザー通知およびそれ以降のイベント固有の処理の概念を理解するには、経費精算書アプリによって送信されるイベントに反応するDigital Assistantについて考えます。 このアプリケーションは、経費精算書が承認または否認されるたび、さらに情報が必要になったときにメッセージを送信します。

イベントごとに開始状態を持つスキル(承認、却下および必要な情報)を作成できます。 開始状態では、イベントに関するメッセージを出力し、ユーザーが適切なアクションを実行できるフローを開始できます:

  • 承認を確認
  • 経費精算書の再発行
  • 不足している情報を追加して経費精算書を完了

アプリケーションで開始された会話の動作

ユーザーには、外部アプリケーションによって起動されるスキルについて以前に会話している必要はありません。 チャットがすでに行われたかどうかにかかわらず、通知を受信できます。 また、現在自分が他のスキルとの会話に参加している間にも、通知のフォーカスでない通知を受信できます。 ユーザーが別のスキルとの会話中に通知を受ける場合、通知で処理するために会話を切り替えるかどうかをユーザーに確認します。

ユーザーがはいと回答した場合(多くの場合、スキル間の切替えを意味します):
  • ユーザーは、通知フローでユーザーを起動するダイアログ・フローの状態に配置されます。

  • デジタル・アシスタントは、このフローを完了すると、前の会話を再開するかどうかを確認します。 "Yes"と答えると、これらはオフのままのポイントに戻ります。

ユーザーがいいえと回答した場合:
  • 学習者は現在のスキルで続行されます。

  • トランザクションが終了すると、デジタル・アシスタントは通知に対して処理を実行するように要求します。

チュートリアル: アプリケーションが開始した会話

このチュートリアルを調べて、アプリケーションで開始された会話を手に確認できます: アプリケーションが開始した会話を使用してリマインダを送信

AIC構成

AICを有効にするには、スキル、ユーザー・チャネル、アプリケーション・チャネルおよび外部アプリケーションを構成します。 オプションで、スキルをデジタル・アシスタントに追加し、スキルのAIC機能用としてデジタル・アシスタントを構成できます。

スキルの構成

外部アプリケーションがスキルに送信できるすべてのイベントを処理するようにスキルを構成する必要があります。

各イベントについて、次のステップを実行します:

  1. 外部アプリケーションにメッセージ・ペイロードにvariablesオブジェクトが含まれる場合は、オブジェクト・プロパティの値を保持するコンテキスト変数を追加します。

    コンテキスト変数名は、variablesオブジェクトのプロパティ名と一致している必要があります。 たとえば、外部アプリケーションがアポイントメント・リマインダ・イベントに対してリクエスト本文を送信するとします:

    {
        "userId": "16035550100",
        "messagePayload": {
            "type": "application",
            "payloadType": "msgReminder",
            "channelName": "AppointmentUserChannel",
            "variables": {
            	"patientName": "Joe Doe",
            	"appointmentTime": "5:00 pm"
            }
        }
    }

    次のような同等の名前のコンテキスト変数を追加する必要があります:

    context:
      variables:
        patientName: "string"
        appointmentTime: "string"  
  2. ダイアログ・フローにイベントの開始状態があることを確認します。

    次に、appointment-reminderイベントの開始状態の例を示します:

      remindermessage:
        component: "System.Output"
        properties:
          text: "Hi ${patientName.value}, your next appointment is scheduled for ${appointmentTime.value}. Please reply to this message to confirm, cancel, or postpone your appointment."
        transitions:
          return: "done"

    ヒント:

    Twilio/SMSはテキストのみのチャネルであるため、スキルのダイアログ・フローで「自動採番」を構成することで、ユーザーの入力が少なくてエラーが発生しやすいようにすることを検討してください。 スキルをデジタル・アシスタントに追加する場合、デジタル・アシスタントの構成ページでポストバック処理で自動採番を有効にしますの設定を調整できます。 デフォルトでは、これは${(system.message.channelConversation.channelType=='twilio')?then('true','false')}に設定されます。
  3. イベントを開始状態にマップするには、設定 「設定」アイコンをクリックし、イベントをクリックして+マッピングの追加をクリックします。 その後、次のフィールドを入力します:

    • ペイロード・タイプ:イベントを識別する名前。 外部アプリケーションは、この名前を使用してメッセージを適用可能な状態にダイレクトします。

      外部アプリケーションは定数であるため、実際の状態名ではなく外部アプリケーションでペイロード・タイプを使用します。ダイアログ定義が修正されると、状態の名前が変更されることがあります。

    • 都道府県名:ダイアログ・フローでのイベントの開始状態。

    スキルをデジタル・アシスタントに追加すると、スキル・イベントから状態へのマッピングがデジタル・アシスタント・イベント・ページに自動的に追加されます。 このページには、デジタル・アシスタントの設定ページからアクセスします。

Twilio SMSユーザー・チャネルの作成

Twilioアカウントにスキルをリンクするには、ユーザー・チャネルが必要です。 ここでは、チャネルを作成するための基本的なステップを示します。 Twilioアカウントの取得および必要な情報の取得の詳細は、Twilio/SMSを参照してください。

  1. 左側のナビゲーション・バーから、チャネルユーザーの順にクリックします。

  2. +チャネルをクリックします。

  3. 「チャネルの作成」ダイアログで、次の手順を実行します:

    • 名前を入力し、チャネル・タイプドロップダウン・リストからTwilio SMSを選択します。

    • TwilioアカウントSID、認証トークン、および割り当てられた電話番号を入力します。

  4. 「作成」(コールバック)をクリックします。

  5. webフックURLを書き留めます。 これは、Twilioを構成する際に必要になります。

  6. チャネル有効をOnに切り替えます。

  7. ルーティング先ドロップダウン・リストで、チャネルに関連付けるスキルまたはデジタル・アシスタントを選択します。

    このリストからスキルを選択すると、このチャネルに送信されるすべての外部アプリ・メッセージが、選択したスキルにルーティングされます。 ただし、デジタル・アシスタントを選択する場合は、外部アプリケーション・メッセージ・ペイロードでターゲット・スキルを指定する必要があります。

  8. Twilioコンソールに移動し、電話番号 電話番号アイコンをクリックして、アクティブな数値をクリックします。

  9. 「アクティブな数値」ページのTwilio番号をクリックします。

  10. 構成ページのメッセージング・セクションで、webフックURLをメッセージ後処理フィールドに貼り付けます。

  11. 「Save」をクリックします

外部アプリケーションのチャネルの作成

外部アプリケーションがDigital Assistantにメッセージを送信できるように、アプリケーション・チャネルを作成する必要があります。

  1. 左側のナビゲーション・バーから、チャネルをクリックし、アプリケーションをクリックしてから、+アプリケーション構成をクリックします。

  2. 名前を入力し、オプションで説明を入力します。

  3. (オプション)チャネル関連のすべてのエラー・メッセージがサーバー・ログ・ファイルに記録されます。 また、Digital Assistantにより外部webサービスにエラー・メッセージが送信されるようにする場合は、アウトバウンド・アプリケーションURLフィールドにWebサービスURLを入力します。

    Twilio/SMSユーザー・チャネルを使用した会話の開始に関する問題など、エラーが発生すると、Digital AssistantbotIdsessionIdおよびmessageプロパティを持つJSONオブジェクトとしてエラー・メッセージを送信します。

  4. (オプション)ターゲット・スキルでSystem.OAuth2AccountLinkコンポーネントを使用した認証が必要で、外部アプリがTwilio/SMSユーザー・チャネルIDではなく認証されたユーザーIDを送信する場合は、認証済ユーザーIDの使用をオンに切り替えます。

    オンの場合、Digital Assistantは、認証されたユーザーのTwilio/SMSユーザー・チャネルIDをスキルに関連付けられている認証サービスから検索します。 ユーザーが参照を正常に完了するには、スキルを通じてサイン・インしている必要があることに注意してください。

  5. 「作成」(コールバック)をクリックします。

  6. アプリケーション有効をOnに切り替えます。

  7. 秘密キーとインバウンドURLをノートします。 これらは外部アプリケーションによって使用されます。

    • メッセージは、インバウンドURLにPOSTリクエストを送信することによって送信されます。
    • 秘密キーを使用してPOSTリクエストを認証します。

Digital Assistantの構成

AICスキルをデジタル・アシスタントに追加する場合、デジタル・アシスタントの設定「設定」アイコンページで、これらの構成パラメータを調整できます:

  • 割込みプロンプト:このプロンプトは、新しいフローを開始するためにフローを中断する際に表示されます。
  • ポストバック処理で自動採番を有効にする: Twilio/SMSはテキストのみのチャネルであるため、ユーザー入力のエラーが少なくなるように、すべてのTwilioチャネルに対してtrueに設定されていることを確認してください。 デフォルトでは、この設定はすべてのTwilioチャネル用trueです: ${(system.message.channelConversation.channelType=='twilio')?then('true','false')}

外部アプリケーションの構成

  • メッセージ・ペイロードに次のプロパティを含めます:

    • userId : これは次のIDのいずれかである必要があります:

      • Twilio/SMSチャネルID: ユーザーの携帯電話番号。 ユーザーは、Digital Assistantのユーザー・チャネル構成で指定されているTwilioアカウントの電話番号に関連付けられている数字の1つである必要があります。
      • システム生成ユーザーID: スキル・テスターからスキルをテストする場合は、スキル・テスター内のセッションに対してシステム生成されるユーザーIDである必要があります。 「スキル・テスターでのAICスキルのテスト」を参照してください。
      • 認証済ユーザーID: 関連付けられているDigital Assistantアプリケーション・チャネルで認証済ユーザーIDの使用がオンに切り替えられている場合、これは認証されたユーザーIDである必要があります。 この認証済ユーザーIDを持つユーザーは、System.OAuth2AccountLinkコンポーネントを介して、ターゲット・スキルにすでにサイン・インしている必要があります。
    • payloadType: ダイアログ・フローの開始状態にマップされるイベント(ペイロード・タイプ)の名前。

    • skillNameversion: メッセージ・ペイロードの受信者がデジタル・アシスタントの場合は、スキルskillNameおよびversionを含めて、ペイロードの送信先のスキルボットとバージョンをOracle Digital Assistantで決定できるようにします。

    • channelName: スキルまたはデジタル・アシスタントに構成されるTwilioのユーザー・チャネルの名前。 チャネル構成は、Twilioアカウントに割り当てられた電話番号を使用します。

      スキル・テスターからスキルをテストする場合は、channelNameをシステム・チャネルの名前に設定する必要があります。 「スキル・テスターでのAICスキルのテスト」を参照してください。

    • variables: ダイアログ・フロー・コンテキスト変数に渡される値。 対応するコンテキスト変数がダイアログ・フローで定義されている場合、メッセージ・ペイロードから渡される対応する値が移入されます。

    次に例を示します。

    {
        "userId": "16035550100",
        "messagePayload": {
            "type": "application",
            "payloadType": "msgReminder",
            "channelName": "AppointmentUserChannel",
            "variables": {
            	"patientName": "Joe Doe",
            	"appointmentTime": "5:00 pm"
            }
        }
    }
  • リクエストを認証するには、アプリケーション・チャネル秘密キーのSHA256ハッシュを使用してX-Hub-Signatureヘッダーを追加します。 例えば:

    X-Hub-Signature: sha256={{hash-secret-key}}