IBM Cloud Docs
ダイアログからアクションを呼び出す

ダイアログからアクションを呼び出す

watsonx Assistantでは、主要なダイアログ会話でアクションを使用することができます。 ダイアログ機能はアクションより優先されます。 アクションを使用すればダイアログ・ベースの会話を補足できますが、ダイアログはユーザーの要求に合わせてユーザーとの会話を推進します。

ダイアログ・ノードは、アクションを呼び出してタスクを実行してから、ダイアログに戻ります。 単一のダイアログ・ノードからは Webhook またはアクションのいずれかを呼び出すことができますが、両方を呼び出すことはできません。 次のように、ニーズに最も適した方法を選択します。

  • 個別の自己完結型タスクを実行する場合は、アクションを呼び出します。その後、ダイアログに戻り、新規ユーザー要求に対応できるようにします。 アクション処理中にユーザーから収集されたデータは、ダイアログに渡すためにセッション変数として保管する必要があります。

  • Web サービスに要求を送信してタスクを実行し、このダイアログで後で使用できる応答を戻したい場合は、Web フックを呼び出してください。 詳しくは、Webhook を使用してアシスタントを拡張を参照してください。

どのような場合にダイアログからアクションを呼び出すか

以下のシナリオでは、ダイアログからアクションを呼び出すことをお勧めします。

  • あるアクションを複数のダイアログ・スレッドから実行したい場合。

    例えば、サービスにどの程度満足しているかを顧客に尋ねる必要があるとします。 顧客の満足度を確認するアクションを 1 つ定義し、そのアクションを複数のブランチで終了するダイアログ・ノードから呼び出すことができます。

    このシナリオでは、#check_satisfaction などのインテントを定義する必要はありません。 アクションが自動的に呼び出され、別のダイアログ・ノードの応答へのジャンプが置き換えられます。

  • アクションの仕組みを確認するとします。

    このシナリオでは、アクションで処理するインテントを選択できます。 ダイアログからのみ呼び出すアクションを計画する場合は、ダイアログ・ノードをトリガーするインテントのユーザー例を定義することに時間を費やすことができます。 アクションを定義するときは、1 つの顧客例のみを追加できます。これにより、アクションの作成に費やさなければならない時間が短縮されます。

呼び出しをアクションに追加する

開始する前に、**「アクション」**ページを開き、以下のことを確認します。

  • 呼び出すアクションの名前。

  • 呼び出すアクションがセッション変数を使用している場合に、セッション変数に値を設定して値をアクションに渡すには、セッション変数の ID をメモしてください。

    「変数」セクションでセッション変数をクリックして開きます。 **「ID」**フィールドに、変数名に使用される構文が表示されます。 その変数 ID をクリップボードにコピーします。

    セッション変数に割り当てる値のタイプも知っておく必要があります。 わからない場合は、セッション変数がアクションでどのように使用されているか確認してください。

ダイアログ・ノードからアクションを呼び出すには、以下のようにします。

  1. ダイアログ・ノードで、**「カスタマイズ」**をクリックします。

  2. 「Webhook/アクションのコールアウト (Call out to webhooks / actions)」オンに設定します。

  3. **「アクションの呼び出し (Call an action)」**を選択します。

    アクションの呼び出しを追加すると、そのダイアログ・ノードでは、複数の条件付き応答が自動的に有効になります。

  4. **「適用」**をクリックします。

  5. ダイアログ・ノードで、呼び出すアクションを選択します。

  6. オプション: 呼び出すアクションがセッション変数を使用している場合は、アクションの開始時にセッション変数の値を設定できます。

    **「パラメーター」**セクションで、アクションの呼び出しで渡すキーと値のペアを追加します。

    変数 ID (先ほどクリップボードにコピーしたもの) を**「キー」フィールドに追加し、「値」**フィールドに、変数に設定する値を指定します。

    例えば、given name という名前のセッション変数がアクションにあるとします。 次のようにして、(事前に尋ねて $name コンテキスト変数に保存しておいた) 現行ユーザーの名前をアクションに渡すことができます。

    Action call key and value pair example
    キー
    given_name "$name"
  7. 複数のダイアログ・ノードからアクションを呼び出す場合は、すべてのダイアログ・ノードで固有の名前になるように、戻り変数の名前を変更してください。 例えば、既にアクションを呼び出し、戻り変数の名前が $action_result_1 であった場合は、新しい戻り変数の名前を $action_result_2 にします。

    戻り変数は、自動的に作成されるコンテキスト変数です。 これは、呼び出されたアクションの処理中に作成されたセッション変数値、またはその値が変更されたセッション変数値を保管します。

  8. **「アシスタントの応答」**セクションでは、最初の条件付き応答の条件に、アクション呼び出しからの戻り変数が自動的に取り込まれます。

    この戻り変数の名前は、変更しない限り $action_result_1 です。

    呼び出されたアクションでセッション変数が作成されたり値を変更されたりすると、そのセッション変数が戻され、JSON オブジェクトとして結果変数に保管されます。

    例えば、アクションで given namemembership status セッション変数の値が変更された場合は、以下の JSON オブジェクトが戻されます。

    {"given_name":"Sally","membership_status":"true"}
    
  9. セッション変数の送信も変更も行わない場合は、最初の条件付き応答を削除できます。 そうでない場合は、呼び出したアクションから戻り変数が返された場合に示す応答を追加することを検討してください。

    アクションに渡したセッション変数の値が、アクションの処理時に対話が行われた結果として変更された場合に示すカスタム応答を指定したほうがよい場合があります。

    例えば、ダイアログで利用者の名前を尋ね、その名前を $name コンテキスト変数に保管するとします。 その後、ダイアログで名前を given_name セッション変数としてアクションに渡します。 次に、呼び出したアクションで、アシスタントから、ニックネームを使用したほうがよいか顧客に尋ねます。 そして、そのアクションで、given_name セッション変数に保管されていた値を、顧客から送信されたニックネームに置き換えます。

    この例で進めるには、好みのニックネームがわかったので、そのニックネームでユーザーに呼びかける必要があります。 Thanks for your business, <? $action_result_1.given_name ?>!<? $action_result_1.given_name ?> 式は、呼び出されたアクションから返された given_name セッション変数の値を抽出します。」という応答を追加できます。

  10. 戻り変数が返されなかった場合に示す応答を、2 番目の条件付き応答として追加します。

    自動的に追加される 2 番目の応答には、anything_else 条件が入っています。 この応答は、他の条件付き応答が何も示されない場合に表されます。

    自動的に追加される条件付き応答は、削除したり編集したりできます。 条件付き応答を追加して並べ替えることもできます。

  11. 「X」 をクリックしてダイアログ・ノードを閉じます。 変更内容は自動的に保存されます。

  12. **「プレビュー」**ページを使用して、ダイアログとアクションの対話をテストします。