IBM Cloud Docs
カスタム拡張機能の呼び出し

カスタム拡張機能の呼び出し

拡張機能は、外部サービスとの統合です。 アシスタントはアクションから拡張機能を呼び出すことにより、外部サービスに要求を送信したり会話で使用できる応答データを受信したりできます。

例えば、拡張機能を使用して、チケット発行システムやカスタマー・リレーションシップ・マネジメント (CRM) システムと対話したり、住宅ローン金利や気象条件などのリアルタイム・データを取得したりできます。 これにより、拡張機能からの応答データがアクション変数として使用可能になり、それをアシスタントが会話で使用できるようになります。

カスタム拡張機能の作成方法については、カスタム拡張機能の作成を参照してください。

ステップから拡張機能を呼び出す

アクションからカスタム拡張を呼び出すには、以下のようにします。

  1. アクション・エディターで、拡張機能の呼び出し元となるステップを作成するか、または開きます。

  2. オプション: 「アシスタントの応答」 フィールドに、拡張機能が呼び出される前に顧客に表示されるメッセージ (例えば、 Please wait while I retrieve your account balance...) を入力します。

    このステップからの出力は、グローバル・コンテキスト変数 skip_user_inputtrue に設定されたチャネルに送信されます。 この変数は、メッセージを表示するようにチャネルに指示しますが、顧客に応答を求めるプロンプトを出すことは しません 。 代わりに、チャネルは空のメッセージを送信して、アシスタントが拡張機能への呼び出しを続行できるようにします。

    すべての組み込みチャネル統合 (Web チャットなど) では、 skip_user_input コンテキスト変数が考慮されます。 API を使用してカスタム・クライアントを開発する場合は、この変数のロジック検査を組み込む必要があります。 詳しくは、 ユーザー入力の処理 を参照してください。

  3. ステップ・エディターで**「処理 (And then)」**をクリックします。

  4. **「拡張機能の使用 (Use an extension)」**をクリックします。

  5. **「拡張機能セットアップ (Extension setup)」**ウィンドウで以下の情報を指定します。

    • **「拡張機能」**フィールドで、呼び出す拡張機能を選択します。

    • **「操作」**フィールドで、実行する操作を選択します。 (_操作_は、拡張機能によってサポートされるメソッドまたは関数です。)

  6. 必須入力パラメーターごとに値を指定します。 _パラメーター_は、操作に送信される入力値です。例えば、取得する顧客レコードの ID や、天気予報に使用するロケーションなどです。

    パラメーターに値を割り当てるには、その値の入力フィールドをクリックします。 次に、使用可能な変数をリストから選択するか、または値を指定する式を作成します。

    パラメーター値の設定

    各パラメーターにはデータ・タイプ (_数値_や_ストリング_など) があります。 選択する変数は、パラメーターのデータ型と互換性がなければならない。詳細は、 パラメーターの互換変数を 参照。

    続行するには、すべての必須パラメーターに値を指定する必要があります。

  7. 任意のオプション・パラメーターに値を指定する場合は、**「オプション・パラメーター」**をクリックします。 その後で、使用するオプション・パラメーターごとに、このプロセスを繰り返すことができます。

  8. **「適用」**をクリックします。 ( **「適用」**ボタンが使用不可になっている場合は、すべての必須パラメーターに値が指定されていることを確認してください。)

ステップ・エディターの**「処理 (And then)」**セクションに、拡張機能の呼び出しの概要が表示されるようになりました。

拡張機能の構成済み呼び出しの概要

変更が必要な場合は、**「拡張機能の編集 (Edit extension)」をクリックして「拡張機能セットアップ (Extension setup)」**ウィンドウを再び開きます。

パラメーターの互換性のある変数

操作の入力パラメーター値を渡すには、互換性のあるアクション変数またはセッション変数を選択する必要があります。

アクション変数には、前のステップの顧客応答に基づく値が含まれます。 セッション変数には、顧客応答に基づく値、または式によって定義された値が含まれる場合があります。 (アクション変数とセッション変数について詳しくは、 会話情報を管理するための変数の使用 を参照してください。)

パラメーターに値を割り当てる場合、選択する変数はパラメーターのデータ・タイプと互換性がなければなりません。 (例えば、 number パラメーターには、テキストではなく数値を割り当てる必要があります。)

以下の表に、可能性がある顧客応答タイプと、各タイプと互換性のあるパラメーター・データ・タイプを示します。

互換性のあるパラメーター応答タイプ
顧客応答タイプ 互換性のあるデータ・タイプ 注記
options string 選択されたオプションは数値であっても、常にストリングとして扱われます。
number number
integer
REST API の動作によっては、integer パラメーターの値として浮動小数点数が渡されると、エラーが発生することがあります。
日付 string 日付は YYYY-MM-DD としてレンダリングされます。
時間 string 時刻は 24 時間フォーマットで HH:MM:SS としてレンダリングされ、ユーザーのタイム・ゾーンに変換されます。
通貨 number
integer
パーセント number
integer
パーセント値は整数として渡されます (したがって、75%75 になります)。
フリー・テキスト string
Regex string

配列

サポートされる顧客応答タイプに加えて、変数に配列値を含めることもできます。 配列パラメーターを操作に渡す必要がある場合は、配列セッション変数を作成する必要があります。

  1. ステップ・エディターで 「変数値の設定」 を使用するか、 「変数」>「作成者」 ページから、新しいセッション変数を作成します。 (セッション変数の作成方法について詳しくは、 セッション変数の作成 を参照してください。)

  2. Type ]フィールドで[ Any ]を選択する。

  3. 「初期値」 フィールドで、 「式の使用」 トグルをクリックして有効にします。 配列値を定義する式 ( ["New York", "London", "Tokyo"][123, 456, 789][] など) を入力します。

この変数には配列値が含まれているため、アクションで配列メソッドを持つ式を使用して、配列値にアクセスしたり、配列値を変更したりすることができます。 例えば、最初は空の配列 ([]) を含む変数を作成してから、 add() メソッドを使用して一度に 1 つのエレメントずつリストを作成することができます。 式で使用できる配列メソッドについて詳しくは、 配列メソッド を参照してください。

配列を必要とするパラメーターの値として、この変数を選択できるようになりました。

拡張機能応答データへのアクセス

拡張機能を呼び出した後、応答データの値は、後続のステップでアクセスできる特殊なアクション変数に保管されます。

この変数には、他のアクション変数にアクセスする場合と同じ方法でアクセスできます。 これは、**「アシスタントが伝える内容 (Assistant says)」**テキスト内で参照したり、ステップ条件の一部として評価したり、他のアクションがアクセスできるようにセッション変数に割り当てたりできます。 応答変数は、使用可能な変数のリストに表示されます。応答変数は、拡張機能の名前と、呼び出し元のステップの下に分類されます。

応答変数の参照

拡張機能を呼び出すたびに、個別の応答変数セットが作成されます。 アクションがさまざまなステップから同じ拡張機能を何度も呼び出す場合は、必ず、正しいステップから変数を選択してください。

各変数は、応答本体からの値を表します。 その値に簡単にアクセスできるようにするために、データは、ネストされた複雑なオブジェクトから抽出され、個々の応答変数にマップされます。 各変数の名前は、応答本体における変数の位置を反映します (例えば、body.namebody.customer.address.zipcode)。

例えば、以下のアクション・ステップでは、拡張機能応答内の availability プロパティーを検査するために式が使用されます。

ステップ条件における拡張機能変数

応答変数に配列が含まれている場合は、配列メソッドを使用して配列のエレメントにアクセスする式を作成できます。 例えば、ステップ条件で contains() メソッドを使用して、配列に特定の値が含まれているかどうかをテストしたり、 join() メソッドを使用して、アシスタント応答に含めることができるストリングとして配列からのデータをフォーマットしたりすることができます。 配列メソッドについて詳しくは、 配列メソッド を参照してください。

成功か失敗かの確認

カスタム拡張機能の呼び出し時に発生するエラーをアシスタントが処理できるようにすることができます。 これを行うには、拡張機能の呼び出しからの応答とともに返される Ran successfully 応答変数を確認します。 この変数はブール (true または false) 値です。

Ran successfully 変数を検査するステップ条件を定義すれば、拡張機能の呼び出しが成功したかどうかに応じてアシスタントが別々に応答できるようにするステップを作成できます。 (ステップ条件について詳しくは、ステップ条件を参照してください。)

以下の例は、ステップ 3 の拡張機能からの障害を検査するステップ条件を示しています。 この条件を使用すれば、エラーが発生したことを顧客に通知するステップを作成したり、場合によってはエージェントに連絡して追加支援を求めるように申し出たりできます。

拡張機能障害を検査するステップ条件

HTTPによる条件付け

Ran successfully の変数に加えて、レスポンスHTTPに基づくステップ条件を作成することもできます。 これを行うことにより、障害の原因に応じて異なる方法で状況を処理するステップを作成できます。 例えば、タイムアウトエラー HTTP ステータス408)によりコールが失敗した場合、コールを再試行したい場合もあるでしょう。

考えられる HTTP 状況コードは多数あり、さまざまなメソッドで、成功または失敗のさまざまなタイプを示すためにさまざまな状況コードが使用されます。 HTTPを条件とするには、外部サービスがどのような HTTP ステータスコードをどのような状況で返すのかを知る必要があります。 これらのステータスコードは通常、外部APIを記述する OpenAPI ドキュメントで指定される。

HTTPに基づくステップ条件を作成するには、以下の手順に従います

  1. テストする値について、 「式」 をクリックします。

  2. 使用可能な変数のリストを表示するには、式フィールドにドル記号 ($) を入力します。

  3. 拡張機能からの応答値である任意の変数を選択します。 (拡張応答変数である限り、どの変数を選択しても問題ありません)。

    式は自動的に更新され、選択した変数への参照がフォーマット ${step_xxx_result_y.body.variablename} で表示されます。 例えば、応答変数 body.id を選択した場合、参照は ${step_596_result_1.body.id} となると考えられます。

  4. 中括弧 ({}) 内で、この参照を編集して .body.variablename を削除します。 ${step_596_result_1} のようなものを残しておく必要があります。

  5. 右中括弧 (}) の後に .status を追加します。 結果の参照では、拡張機能の呼び出しから返された状況コードが識別されます (例えば、${step_596_result_1}.status)。

    式の作成について詳しくは、式の作成を参照してください。

  6. 演算子と比較値を追加して式を完成させ、式がブール値 (true/false) に評価されるようにします。 例えば、以下の式はタイムアウトエラーを示す HTTP ステータス408をテストします

    ${step_549_result_1}.status==408
    

カスタム拡張機能のデバッグ失敗

拡張機能への呼び出しが失敗している場合、システムAPIに送信され、システムAPIから返される内容についての詳細な情報を見て、問題をデバッグしたいと思うかもしれない。 これを行うには、プレビューペインのインスペクタを使用します:

  1. アクションページまたはアクションエディターに移動し、プレビューをクリックしてプレビューペインを開きます。

    プレビューページの {{site.data.keyword.ai-assistant}} プレビューからはインスペクタにアクセスできません。これは、顧客が目にする内容のみを表示します。 代わりに、「アクション」ページの一部であるプレビュー機能を使用してください。これにより、追加情報にアクセスできます。

  2. {{site.data.keyword.ai-assistant}} に顧客として対話してください。

  3. 拡張機能が呼び出されるたびに、詳細情報にアクセスできるメッセージがプリビューペインに表示されます。

    拡張機能の呼び出しに関する詳細を表示するには、 「検査」 をクリックします。

    拡張インスペクタのアイコンアイコン をクリックして、インスペクタを表示または非表示にすることもできます。 ただし、内線への特定の通話に関する情報を表示するには、プレビューペインで 「検査」をクリックする必要があります。

    インスペクタの[概要] タブには、内線番号への通話に関する以下の情報が表示されま す:

    デバッグオプション 説明
    内線 拡張機能の設定で指定されている拡張機能の名前。
    操作 呼び出された操作です。
    ステータス レスポンスの HTTP ステータスコード。 このコードは、外部サービスからエラーが返されているかどうかを判別するときに役立つ可能性があります。
    要求パラメーター リクエストの一部としてシステムAPIに送信された入力パラメータ。
    応答プロパティー システムAPIからの応答に含まれるすべてのプロパティの値。 これらは、拡張機能の呼び出しが完了した後にアクション変数にマップされる値です。

    「要求パラメーター」 表と 「応答プロパティー」 表では、長いプロパティー名が切り捨てられて、JSON パスの最後の部分のみが表示される場合があります。 完全なパスとプロパティー名を表示するには、テーブル内のプロパティー名の上にマウス・ポインターを移動します。

  4. 未加工の要求データと応答データを表示するには、拡張インスペクターの 「拡張」 タブをクリックします。

    • 要求は cURL コマンドとして表示されます。このコマンドは、コマンド・プロンプトで実行することも、 Postmanなどのツールにインポートすることもできます。 (セキュリティー上の理由から、 Authorization ヘッダーの内容は含まれません。)
    • レスポンスは、システムAPIから返された完全なJSONデータとして表示されます。

欠落している拡張機能の再構成

誰かが 「統合 (Integrations)」 ページでアシスタントから削除した場合、またはアクションがエクスポートされてから、必要な拡張が構成されていない別のアシスタントにインポートされた場合、拡張機能が使用不可になることがあります。 これが発生すると、拡張機能を呼び出すすべてのアクション・ステップが無効になります。

この問題を訂正するには、以下のステップを実行します。

  1. 必要に応じて、以前に使用したものと同じ OpenAPI 仕様を使用して拡張を再作成します。 (詳しくは、 カスタム拡張の作成 を参照してください。)

  2. 拡張機能がアシスタントに追加されていることを確認してください。 (詳しくは、 アシスタントへの拡張機能の追加 を参照してください。)

  3. アクション・エディターで、拡張機能を呼び出すアクション・ステップを編集し、拡張機能への呼び出しが正しく構成されているかどうかを確認します。 watsonx Assistant が必要な拡張機能を認識した場合、拡張機能の構成は自動的に復元されます。

    メッセージ Extension not fully configured が表示された場合、これは watsonx Assistant が必要な拡張機能を検出しなかったことを意味します。 「拡張の編集」 をクリックします。

  4. 内線設定ウィンドウで、電話をかけたい内線を選択します。

    watsonx Assistant が、同じ OpenAPI 文書を使用して作成された使用可能な拡張機能を認識すると、この拡張機能を選択したことを示すメッセージが表示されます。 ただし、使用可能な任意の拡張機能を選択できます。

  5. 「操作」 フィールドと 「パラメーター」 フィールドに正しい値が指定されていることを確認します。

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

  7. アクションの作成に使用した拡張機能とは異なる拡張機能を選択した場合は、拡張機能の応答プロパティーにアクセスする後続のステップを変更する必要が生じることがあります。 応答プロパティーを参照する後続のステップを確認し、参照がまだ有効で正しいことを確認してください。