IVR ワークフローでの外部 API の使用

Prev Next

Dialpad エキスパートモードでは、外部 API ノードを使用して REST API を介してCRM などのプラットフォームからデータを取得できます。以下では、より複雑な IVR を導入するためのガイドです。

API リクエストをローカルで参照・テストする

API がパブリックインターネット経由でアクセスできることを確認してください。Postman や curl リクエストを用いたコマンドラインなどのツールを使用し、外部 API コンポーネントがどのように動作するかを模倣します。

ローカル環境で API をテストした後、以下を把握している必要があります:

  • リクエスト URL

  • リクエストメソッド (GET、POST、または PUT)

  • リクエストボディ (API が要求する場合)

  • リクエストヘッダー (通常 API により必要)

    Note

    ヘッダーは JSON オブジェクトとして構成されます。

  • レスポンスボディの可能性

    Tip

    Sublime Text や Notepad++ など、JSON のテキストエディターを使用して、これらのレスポンスをローカルに保存してください。

ワークフローを作成する

IVR ワークフローを作成するには、管理者設定を開きます。

  1. [チャネル & IVR] > [IVR ワークフロー] を選択します。

  2. [ワークフローを作成] を選択し、ワークフロー名を入力します。

    Note

    IVR ワークフローの名前に使用できるのは英数字とスペースのみです。

  3. [+] を選択してステップを追加します。

  4. [ステップを追加] ウィンドウで、[エキスパート] を選択します。

  1. [Expert を起動] をクリックし、以下のエキスパートステップのコンポーネントを順番に追加し、接続します:

    • Call Park:Voice Widget コンポーネントで利用できます。[voice/call-park] のウィジェットドロップダウンを選択します

    • Send a Message:リクエストパラメータを記録するために使用します

    • External API (Server):API リクエストを実行するために使用します

    • Call Resume:[Prompt and Wait] コンポーネントを使用し、[voice/call-resume] ウィジェットを選択します

    • Send a Message:レスポンスパラメータを記録するために使用します

  2. [Expert を公開] を選択し、[ワークフローを公開] を選択します。エキスパートフローは下図のような構成になります。

Example of a completed IVR workflow with an external API added with an Expert node.

テスト用コンタクトセンターまたはグループを作成

IVR ワークフローをテストするには:

  1. アクティブな電話番号を持つグループまたはコンタクトセンターに IVR ワークフローを割り当てます。

Note

テスト用ルーティンググループが存在しない場合は、新規に作成してください。電話番号を追加し、通話ルーティング設定を変更して新しい IVR ワークフローを指すように設定します。

  1. ワークフローを割り当てた後、初回テスト通話を行い、新しいルーティンググループが正常に新しい IVR ワークフローへ到達することを確認します。

IVR ワークフローのログは会話履歴から確認できます。

API 詳細を IVR ワークフローに追加する

基本的な API を設定したら、API リクエストの詳細を追加します。

URL

コピーした URL をテキストフィールドに貼り付けます。必要に応じて、URL 内に変数を使用できます (変数は二重中括弧で囲みます)。ただし、URL の先頭 (https://) は必ず URL に含めてください。

Method

リクエストで使用するメソッドです。有効なオプションは GET、POST、PUT のみです。

Additional Headers

ヘッダーフィールドでは、ヘッダー名をキーとする有効な JSON オブジェクトを作成します。

Note

Content-Type ヘッダーは、Additional Headers フィールドに上書きされない限り常にapplication/JSON と見なされます。以下はその例です:

{"BearerToken":"XXYY","Authorization":"Bearer XXYY"}

CSV JSONPath フィールドの編集

外部 API ノードは JSONPath を使用して API レスポンスからデータを抽出し、API レスポンス内の値を IVR 変数に割り当てます。形式は [IVR 変数名]:[JSON Path] です。 複数ある場合は、カンマで区切りで記録する必要があります。

この 変数:JSONPath のコンマ区切りリストを作成するには、jsonpath.com などの外部ツールを使用しAPI レスポンスから必要な値をすべて特定します。

JSON レスポンスの例

{
    "firstName": "John",
    "lastName": "doe",
    "age": 26,
    "address": {
        "streetAddress": "naist street",
        "city": "Nara",
        "postalCode": "630-0192"
    },
    "phoneNumbers": [
        {
            "type": "iPhone",
            "number": "0123-4567-8888"
        },
        {
            "type": "home",
            "number": "0123-4567-8910"
        }
    ]
}

JSONPath を編集するには:

  1. API レスポンスの本文を JSONPath テスターにコピーし、抽出する必要がある各変数の JSON Path を確認します。

  2. 変数名を選択します。変数名を最初に入力し、その後ににコロンを入れ、続けて JSONPath 式を記録します。以下の例をご参照ください:

    JSONPath 式

    first:firstName, (= "John")
    last:lastName, (="doe")
    streetAddress:address.streetAddress
    city:address.city
    phoneNo1:phoneNumbers[0].number
    phoneType1:phoneNumbers[0].type
    phoneNo2:phoneNumbers[1].number
    phoneType2:phoneNumbers[1].typefirst:firstName, (= "John")

    改行を削除すると、外部 API ノードの CSV JSONPath テキストフィールドは以下の例のようになります:

    外部 API ノードの CSV JSONPath

    first:firstName,last:lastName,streetAddress:address.streetAddress,city:address.city,phoneNo1:phoneNumbers[0].number,phoneType1:phoneNumbers[0].type ,phoneNo2:phoneNumbers[1].number,phoneType2:phoneNumbers[1].type
  3. これをテキストフィールドに追加し、 [保存] を選択します。

  4. IVR ワークフローを公開します。

ログの追加

次に、ログを追加する必要があります。API リクエストの前後にある 2 つの [Send a Message] ノードは、トラブルシューティング用に一部のデータを会話履歴に記録するために使用されます。

API リクエストで変数が使用されている場合は、最初のリクエストにそれらを含めるだけでなく、レスポンスも含めます。

response.status と response.code の 2 つの組み込み変数を必ずレスポンスメッセージに記録します。さらに、CSV JSONPath で作成されたすべての変数もログに残します。

テストとアドオン

初回のテスト通話を実行し、その通話を会話履歴で確認します。IVR の出力は、ログ内でレスポンス値として表示されます。

IVR のレスポンス値を確認するには:

  1. 会話履歴を開きます。

  2. [会話タイプ] を [デジタルのみ] に設定します。

  1. 会話を選択し、 [トランスクリプト] を選択します。

Note

IVR セッション履歴は別のブラウザタブまたはウィンドウで開き、基本情報を表示します。

必要に応じて、エキスパートノード内または外部にブランチを追加し、API が成功したかどうかに応じてプロンプトやメッセージを提供できます。