IBM Cloud Docs
電話対話の処理

電話対話の処理

アシスタントが電話統合を使用する場合、さまざまな応答タイプを使用して、統合の動作をカスタマイズしたり、アシスタントが電話を介してお客様との会話のフローを管理したりすることができます。

応答タイプを使用して、以下の電話固有のアクションを実行できます。

場合によっては、複数のアクションを実行するために応答タイプを結合することができます。 例えば、電話のキーパッド入力を要求し、同じアクション・ステップからテキスト・メッセージを送信することによって、2 要素認証を実装できます。 詳細については、「 一連の電話コマンドを定義する 」を参照してください。

また、次のような電話機固有のアクションを実行することもできます:

詳しくは、 応答タイプのリファレンス を参照してください。

アシスタントに電話固有の応答を追加

アクションステップから音声専用のインタラクションを開始するには、 generic 配列に適切なレスポンスタイプを持つレスポンスを追加します。 JSON エディターを使用して応答を追加する方法について詳しくは、 JSON エディターを使用した応答の定義 を参照してください。

Speech to Text サービスへの詳細設定の適用

speech_to_text 応答タイプを使用して、電話統合によって使用される Speech to Text サービス・インスタンスに構成コマンドを送信します。 アクション・ステップから speech_to_text 応答を送信することにより、会話中に Speech to Text 構成を動的に変更できます。

デフォルトでは、実行した Speech to Text 構成の変更は、会話の残りの期間、またはそれらを再度更新するまで保持されます。 この動作を変更するには、parameters オブジェクトの update_strategy プロパティーを指定します。

speech_to_text 応答タイプの形式は次のとおりです。

{
  "generic": [
    {
      "response_type": "speech_to_text",
      "command_info": {
        "type": "<command type>",
        "parameters": {
          "parameter name1": "parameter value",
          "parameter name2": "parameter value"
        }
      }
    }
  ]
}

各コマンド・タイプとその関連パラメーターについて、以下のセクションで説明します。

command_info.type : configure

会話フローに基づいて構成パラメーターのセットを適用することにより、Speech to Text サービスを動的に再構成します。 例えば、会話の特定のポイントで特定のカスタマイズ ID または文法を選択したい場合があります。

パラメーター 説明 必須 デフォルト
narrowband_recognize 狭帯域コーデックに使用する Speech to Text サービス構成 (例えば、8 kHz でサンプリングされる PCMU および PCMA)。 このオブジェクトのパラメータは、音声認識リクエストのために Speech to Text サービスに接続するときに使用されます。 これらのパラメーターについて詳しくは、 Speech to Text API 資料を参照してください。 no 現在の Speech to Text 構成
broadband_recognize ブロードバンド・コーデック用に使用する Speech to Text サービス構成 (例えば、8 kHz でサンプリングされた G722)。 このオブジェクトのパラメータは、音声認識リクエストのために Speech to Text サービスに接続するときに使用されます。 これらのパラメーターについて詳しくは、 Speech to Text API 資料を参照してください。 no 現在の Speech to Text 構成
band_preference セッションで音声 CODEC をネゴシエーションするときに優先される音声バンド (narrowband または broadband) を指定します。 broadband に設定すると、可能であればブロードバンド音声を使用します。 no narrowband
update_strategy

音声構成の設定時に使用する更新戦略を指定します。 考えられる値は次のとおりです:

  • replace: セッションの残りの部分の構成を置き換えます。 新規構成のルート・レベル・フィールドは、前の構成を完全に上書きします。
  • replace_once: 会話の次のターンのためにのみ構成を置換します。 その後、以前のコンフィギュレーションが使用される。
  • merge 新しいコンフィグレーションは、残りのセッションのために既存のコンフィグレーションとマージされる。 変更されたパラメーターのみが上書きされます。その他の構成パラメーターは変更されません。
  • merge_once: 会話の次のターンのためにのみ、新しい構成を既存の構成とマージします。 その後、以前のコンフィギュレーションが使用される。
no replace

narrowband_recognize および broadband_recognize に設定できるパラメーターは、Speech to Text WebSocket インターフェースで使用可能になるパラメーターを反映します。 WebSocket API は、2 つのタイプのパラメーターを送信します。つまり、電話統合がサービスに接続するときに送信される照会パラメーターと、要求本体内の JSON データの一部として送信されるメッセージ・パラメーターです。 例えば、model は照会パラメーターであり、smart_formatting は WebSocket メッセージ・パラメーターです。 パラメーターの完全なリストについては、 Speech to Text API 資料を参照してください。

Speech to Text サービスへの電話統合の接続に対して、以下の照会パラメーターを定義できます。 narrowband または broadband に対して定義したその他のパラメーターは、WebSocket メッセージ要求の一部として渡されます。

  • model
  • acoustic_customization_id
  • version
  • x-watson-learning-opt-out
  • base_model_version
  • language_customization_id

Speech to Text サービスの以下のパラメータは、電話統合で使用される固定値があるため、変更できません。

  • action
  • content-type
  • interim_results
  • continuous
  • inactivity_timeout

configure コマンドを使用して watsonx Assistant から動的に構成すると、 narrowbandbroadband などのルート・レベル・フィールドのみが更新されます。 これらのフィールドをコマンドから省略すると、元の構成設定が保持されます。 update_strategymerge および merge_once を使用して、構成パラメーターを既存の構成とマージすることができます。

カスタム言語モデルの使用

電話統合をセットアップするときに、常にカスタム言語モデルを使用するように統合を構成することができます。

ただし、ほとんどの場合は標準言語モデルを使用し、顧客を支援するためにアシスタントが設計されている特定のトピックにのみ使用するカスタム言語モデルを指定することもできます。 例えば、医療費のみに役立つアクションには、医療用語に特化したカスタム・モデルを使用できます。 会話の特定のブランチについてカスタム言語モデルを適用できます。

詳しくは、 カスタム言語モデルの作成を参照してください。

カスタム言語モデルをアクション・ステップに適用するには、speech_to_text 応答タイプを使用します。

{
  "generic": [
    {
      "response_type": "speech_to_text",
      "command_info": {
        "type": "configure",
        "parameters": {
          "narrowband_recognize": {
            "x-watson-learning-opt-out": true,
            "model": "en-US_NarrowbandModel",
            "profanity_filter": true,
            "smart_formatting": true,
            "language_customization_id": "81d3630-ba58-11e7-aa4b-41bcd3f6f24d",
            "acoustic_customization_id": "e4766090-ba51-11e7-be33-99bd3ac8fa93"
          }
        }
      }
    }
  ]
}

また、バックグラウンドノイズやアクセントなど、信号の質やノイズに関連するものを処理するためにトレーニングした音響モデルを適用することもできる。

カスタム文法の使用

Speech to Text サービスは文法の使用をサポートしています。 文法を使用して、特定の特性にのみ一致するように音声を構成できます。

  • カスタム言語モデルは、サービスの基本語彙を拡張します。
  • 文法は、サービスがその語彙から認識できる単語を制限します。

音声認識のためにカスタム言語モデルで文法を使用する場合、サービスはその文法によって認識される単語、句、およびストリングのみを認識できます。 例えば、 yes または no のレスポンスだけを受け取りたい場合。 選択したそれらのものだけを許可する文法を定義できます。

詳しくは、 カスタム言語モデルでの文法の使用を参照してください。

この例は、会話中にカスタム文法を指定する方法を示しています。

{
  "generic": [
    {
      "response_type": "speech_to_text",
      "command_info": {
        "type": "configure",
        "parameters": {
          "update_strategy": "merge_once",
          "narrowband_recognize": {
            "x-watson-learning-opt-out": true,
            "grammar_name": "names-abnf",
            "language_customization_id": "81d3630-ba58-11e7-aa4b-41bcd3f6f24d"
          }
        }
      }
    }
  ]
}

以下の例は、 speech_to_text 応答タイプを使用して構成コマンドを Speech to Text サービスに送信する方法を示しています。

例: 言語モデルの設定

この例では、言語モデルがスペイン語 (es-ES_NarrowbandModel) に切り替わり、スマート・フォーマット設定が有効になります。


{
  "generic": [
    {
      "response_type": "speech_to_text",
      "command_info": {
        "type": "configure",
        "parameters": {
          "narrowband_recognize": {
            "model": "es-ES_NarrowbandModel",
            "smart_formatting": true
          }
        }
      }
    }
  ]
}

例: 1 つの会話ターンのための recognizeBody プロパティーの更新

以下の例は、会話ターンの 1 回のターンに対してカスタム言語モデルの使用を指定する方法を示しています。 update_strategymerge_once に設定し、構成パラメーターでカスタム言語モデルの ID を指定します。

{
  "generic": [
    {
      "response_type": "speech_to_text",
      "command_info": {
        "type": "configure",
        "parameters": {
          "update_strategy": "merge_once",
          "narrowband_recognize": {
            "language_customization_id": "ao45vohgFuxyOQRgztu-02I10ut7aJcM-AdInT-VWgj3V"
          }
        }
      }
    }
  ]
}

Text to Speech サービスへの詳細設定の適用

text_to_speech 応答タイプを使用して、電話統合によって使用される Text to Speech サービス・インスタンスに構成コマンドを送信します。 アクション・ステップから text_to_speech 応答を送信することにより、会話中に Text to Speech 構成を動的に変更できます。

デフォルトでは、実行した Text to Speech 構成の変更は、会話の残りの期間、または再度更新するまで保持されます。 この動作を変更するには、parameters オブジェクトの update_strategy プロパティーを指定します。

speech_to_text 応答タイプの形式は次のとおりです。


{
  "generic": [
    {
      "response_type": "text_to_speech",
      "command_info": {
        "type": "<command type>",
        "parameters": {
          "parameter name": "parameter value",
          "parameter name": "parameter value"
        }
      }
    }
  ]
}

各コマンド・タイプとその関連パラメーターについて、以下のセクションで説明します。

command_info.type : configure

会話フローに基づいて構成パラメーターのセットを適用することにより、Text to Speech サービスを動的に再構成します。 例えば、会話の特定の時点で特定の音声を選択したい場合があります。

パラメーター 説明 必須 デフォルト
synthesize 音声の合成時に使用する Text to Speech サービス構成。 このオブジェクトで定義されるパラメータは、音声合成リクエストのために Text to Speech サービスに接続するときに使用されます。 これらのパラメーターについて詳しくは、 Text to Speech API 資料を参照してください。 はい 現在の Text to Speech 構成
update_strategy

音声構成の設定時に使用する更新戦略を指定します。 考えられる値は次のとおりです:

  • replace: セッションの残りの部分の構成を置き換えます。 新規構成のルート・レベル・フィールドは、前の構成を完全に上書きします。
  • replace_once: 会話の次のターンのためにのみ構成を置換します。 その後、以前のコンフィギュレーションが使用される。
  • merge 新しいコンフィグレーションは、残りのセッションのために既存のコンフィグレーションとマージされる。 変更されたパラメーターのみが上書きされます。その他の構成パラメーターは変更されません。
  • merge_once: 会話の次のターンのためにのみ、新しい構成を既存の構成とマージします。 その後、以前のコンフィギュレーションが使用される。
no replace

synthesize に設定できるパラメーターは、Text to Speech WebSocket インターフェースによって使用可能になるパラメーターを反映します。 WebSocket API は、2 つのタイプのパラメーターを送信します。電話統合がサービスに接続するときに送信される照会パラメーターと、要求本体内の JSON データの一部として送信されるメッセージ・パラメーターです。 パラメーターの完全なリストについては、 Text to Speech API 資料を参照してください。

command_info.type : disable_barge_in

音声バージインを無効にして、音声の再生中に発信者が話すときに再生が中断されないようにします。

パラメーターはありません。

command_info.type : enable_barge_in

音声バージインを有効にして、発信者が発言によって再生を中断できるようにします。

パラメーターはありません。

アシスタントの音声の変更

保証する会話の特定のトピックを扱うアシスタントの音声を変更することができます。 例えば、英国のお客様にのみ適用される会話のブランチに、英国アクセント付きの音声を使用することができます。

この例は、会話中に音声を指定する方法を示しています。


{
  "generic": [
    {
      "response_type": "text_to_speech",
      "command_info": {
        "type": "configure",
        "parameters": {
          "synthesize": {
            "voice": "en-GB_KateV3Voice"
          }
        }
      }
    }
  ]
}

voice パラメーターで、使用したいボイス・モデルを指定します。 音声モデルのオプションについては、 対応言語と音声をご覧ください。

指定するモデルは、統合で使用するように構成されている Text to Speech サービスインスタンスでサポートされているものでなければなりません。

ライブエージェントに電話を転送する

電話統合を設定する際、オプションでバックアップコールセンターサポートを設定することができ、アシスタントが人間に電話を転送することが可能になります。 アクションステップで[ エージェントに接続] 応答タイプを使用すると、会話の特定の時点でライブエージェントへの転送を開始できます。 「エージェントへの接続 (Connect to agent)」 応答が電話統合に送信されると、SIP REFER メッセージ ( RFC 5589で定義) を使用して SIP 転送が開始されます。

会話中にライブエージェントへの転送を開始する方法の詳細については、以下のドキュメントを参照してください:

電話統合は、 エージェントへの接続レスポンスタイプに、より多くのパラメータをサポートします。 JSONエディタを使用して、これらの電話固有のパラメータを connect_to_agent レスポンスタイプに追加できます。

connect_to_agent 応答タイプは、transfer_info パラメーターでターゲット転送情報を指定する機能をサポートします。

以下の例は、すべての構成可能パラメーターを使用する転送を示しています。

{
  "generic": [
    {
      "response_type": "connect_to_agent",
      "transfer_info": {
        "target": {
          "service_desk": {
            "sip": {
              "uri": "sip:user\\@domain.com",
              "transfer_headers": [
                {
                  "name": "Customer-Header1",
                  "value": "Some-Custom-Info"
                },
                {
                  "name": "User-to-User",
                  "value": "XXXXXX"
                }
              ],
              "transfer_headers_send_method": "refer_to_header"
            }
          }
        }
      },
      "agent_available": {
        "message": "I'll transfer you to an agent"
      },
      "agent_unavailable": {
        "message": "Sorry, I could not find an agent."
      },
      "message_to_human_agent": "The caller needs help resetting their password"
    }
  ]
}

connect_to_agent 応答タイプは、以下の電話固有のプロパティーをサポートします。

パラメーター デフォルト 説明
service_desk.sip.uri 該当なし sip:12345556789\@myhost.comtel:+18883334444 など、呼を転送するSIPまたは電話のURI。 hangup メソッドの場合はオプションです。
service_desk.sip.transfer_method refer

通話の転送方法を決定します。

  • refer: 通話は SIP REFER 要求を送信することによって転送されます。これはデフォルト値です。
  • hangup: 通話は SIP BYE 要求を送信することによって転送されます。
service_desk.sip.transfer_target_header Transfer-Target 通話の転送に BYE 要求が使用される場合に、転送ターゲットを含む SIP ヘッダー。 このオプションは、 hangup メソッドでのみサポートされます。
service_desk.sip.transfer_headers 該当なし 転送(transfer)リクエストに追加されるカスタムヘッダーフィールドの名前と 値のペアのリスト。
service_desk.sip.transfer_headers_send_method custom_header

SIP 転送ヘッダーを送信する方式。

  • custom_header: 転送ヘッダーを SIP メッセージの一部として送信します。これはデフォルト値です。
  • contact_header: Contact ヘッダー内の転送ヘッダーを送信します。 このオプションは、 hangup メソッドではサポートされません。
  • refer_to_header: Refer-To ヘッダー内の転送ヘッダーを送信します。 このオプションは、 hangup メソッドではサポートされません。

転送ターゲットとして SIP URI を定義する場合は、2 つの円記号 (@) をアットマーク (\\) の前に追加して、URI 内のアットマークをエスケープしてください。 これは、文字列がエンティティの省略記法の一部として認識されるのを防ぐためである。

    "uri": "sip:12345556789\\@myhost.com"

ハングアップ後の転送

デフォルトでは、電話統合は SIP REFER 要求を使用して通話を転送します。 IVR サービス・プロバイダーによっては、代わりに SIP BYE 要求を使用するように通話中転送を構成しなければならない場合があります。 transfer_method 属性を使用して、 refer または hangup のいずれかを使用して通話の転送方法を指定します。 transfer_methodrefer ではなく hangup に設定すると、転送アクションの動作が変わります。 電話統合は、SIP REFER 要求を送信する代わりに、関連するテキストを再生してから、SIP BYE 要求を送信して通話をハングアップします。

ハングアップ後、電話統合は、 url 属性で指定された転送宛先を BYE メッセージの呼び出しアンカーに渡します。 転送ターゲットを含むヘッダー・フィールドは、 transfer_target_header 属性によって決定されます。 transfer_target_header 属性が指定されていない場合、電話統合は Transfer-Target を使用します。

{
  "generic": [
    {
      "response_type": "connect_to_agent",
      "transfer_info": {
        "target": {
          "service_desk": {
            "sip": {
              "uri": "sip:user\\@domain.com",
              "transfer_method": "hangup",
              "transfer_target_header": "Transfer-Target"
            }
          }
        }
      },
      "agent_available": {
        "message": "Please hold on while I connect you with a live agent."
      },
      "agent_unavailable": {
        "message": "Sorry, I could not find an agent."
      },
      "message_to_human_agent": "The caller needs help resetting their password"
    }
  ]
}

障害発生時の転送

失敗時の転送を構成するには、電話統合設定の 「拡張」 タブに移動します。 以下の選択が設定できる:

  • 転送失敗メッセージ

  • 転送の失敗時に通話を切断

詳しくは、 通話および転送の失敗の処理 を参照してください。

SIP シグナリングで watsonx Assistant メタデータを渡す

発信者と watsonx Assistant の間の会話履歴のロードをサポートするために、電話統合は、Web チャット統合で使用できるキーとして User-to-User ヘッダーの値を指定します。 transfer_headers リストで User-to-User が指定されている場合、セッション履歴鍵は X-Watson-Assistant-Session-History-Key ヘッダーで送信されます。

SIP ヘッダーの値は 1024 バイトに制限されています。

このデータが SIP REFER メッセージにどのように表示されるかは、 transfer_headers_send_method の値によっても異なります。

この例では、ヘッダーとして含まれるデータを示している:

REFER sip:b@atlanta.example.com SIP/2.0
Via: SIP/2.0/UDP agenta.atlanta.example.com;branch=z9hG4bK2293940223
To: <sip:b@atlanta.example.com>
From: <sip:a@atlanta.example.com>;tag=193402342
Call-ID: 898234234@agenta.atlanta.example.com
CSeq: 23 REFER
Max-Forwards: 7
Refer-To: sip:user@domain.com
X-Watson-Assistant-Token: 8f817472-8c57-4117-850d-fdf4fd23ba7
User-to-User: 637573746f6d2d757365722d746f2d75736572;encoding=hex
Contact: sip:a@atlanta.example.com
Content-Length: 0

カスタム User-to-User ヘッダーが指定されている場合、セッション履歴鍵は X-Watson-Assistant-Session-History-Key ヘッダーに設定されます。

REFER sip:b@atlanta.example.com SIP/2.0
Via: SIP/2.0/UDP agenta.atlanta.example.com;branch=z9hG4bK2293940223
To: <sip:b@atlanta.example.com>
From: <sip:a@atlanta.example.com>;tag=193402342
Call-ID: 898234234@agenta.atlanta.example.com
CSeq: 93809823 REFER
Max-Forwards: 70
Refer-To: sip:user@domain.com
User-to-User: 637573746f6d2d757365722d746f2d75736572;encoding=hex
X-Watson-Assistant-Session-History-Key: dev::latest::212033::0a64c30d-c558-4055-85ad-ef75ad6cc29d::978f1fd7-4e24-47d8-adb0-24a8a6eff69e::b5ffd6c2-902f-4658-b586-e3fc170a6cf3::7ad616a350cc48078f17e3ee3df551de
Contact: sip:a@atlanta.example.com
Content-Length: 0

この例は、照会パラメーター ( SIP RFC 3261で定義) として Refer-To ヘッダーに渡されるメタデータを示しています。

REFER sip:b@atlanta.example.com SIP/2.0
Via: SIP/2.0/UDP agenta.atlanta.example.com;branch=z9hG4bK2293940223
To: <sip:b@atlanta.example.com>
From: <sip:a@atlanta.example.com>;tag=193402342
Call-ID: 898234234@agenta.atlanta.example.com
CSeq: 23 REFER
Max-Forwards: 70
Refer-To: sip:user@domain.com?User-to-User=637573746f6d2d757365722d746f2d75736572%3Bencoding%3Dhex
Contact: sip:a@atlanta.example.com
Content-Length: 0

カスタム User-to-User ヘッダーが指定されている場合、セッション履歴鍵は X-Watson-Assistant-Session-History-Key ヘッダーに設定されます。

REFER sip:b@atlanta.example.com SIP/2.0
Via: SIP/2.0/UDP agenta.atlanta.example.com;branch=z9hG4bK2293940223
To: <sip:b@atlanta.example.com>
From: <sip:a@atlanta.example.com>;tag=193402342
Call-ID: 898234234@agenta.atlanta.example.com
CSeq: 93809823 REFER
Max-Forwards: 70
Refer-To: sip:user@domain.com?User-to-User=637573746f6d2d757365722d746f2d75736572%3Bencoding%3Dhex&X-Watson-Assistant-Session-History-Key=dev::latest::893499::dff9c274-adc4-4f63-93de-781166760bf8::978f1fd7-4e24-47d8-adb0-24a8a6eff69e::b5ffd6c2-902f-4658-b586-e3fc170a6cf3::7ad616a350cc48078f17e3ee3df551de
Contact: sip:a@atlanta.example.com
Content-Length: 0

Twilio Flex の場合、 User-to-User ヘッダーは encoding=ascii を使用します。

保留音または音声録音の再生

保留音を再生したり、記録されたメッセージを再生したりするには、audio 応答タイプを使用します。 応答タイプについて詳しくは、 JSON エディターを使用した応答の定義 を参照してください。

通話中転送時に保留音を再生することはできません。 ただし、アシスタントが何らかの種類の処理 (クライアント・サイド・アクションの呼び出しや Web フックへの呼び出しなど) を実行するために時間が必要な場合は、保留音を再生することをお勧めします。

電話統合では、audio 応答タイプの以下のプロパティーがサポートされます。

プロパティー 説明
source 一般にアクセス可能な .wav オーディオファイルの URL。 音声ファイルは、単一チャネル (モノ) および PCM エンコードでなければならず、サンプルごとに 16 ビットの 8,000 Hz のサンプリング・レートでなければなりません。
channel_options.voice_telephony.loop 終了後に音声再生を繰り返し再開するかどうか。 デフォルト値は falseです。

channel_options.voice_telephony.looptrue に設定した場合は、vgwActForceNoInputTurn コマンドを使用してユーザー定義の応答を追加します。 このコマンドは、発信者からの入力を待たずに vgwNoInputTurn テキストを使用してターンを開始するように電話統合に指示します。 vgwNoInputTurn ターンでは、発信者が保留中にトランザクションを開始できます。 vgwNoInputTurn のターンが完了すると、ループ音声は停止します。

以下の例は、 loop=true を指定した audio 応答と、 vgwActForceNoInputTurn コマンドを指定した user_defined 応答を示しています。

{   
  "generic": [
    {
      "response_type": "user_defined",
      "user_defined": {
        "vgwAction": {
          "command": "vgwActForceNoInputTurn"
        }
      }
    },
    {
      "response_type": "audio",
      "source": "https://upload.wikimedia.org/wikipedia/commons/d/d8/Random_composition3.wav",
      "channel_options": {
        "voice_telephony": {
          "loop": true
        }
      }
    }
  ]
}

キーパッド入力の使用可能化

話す代わりに電話のキーパッドで入力して顧客が情報を送信できるようにしたい場合は、電話キーパッド入力のサポートを追加できます。 このタイプのサポートを実装する最良の方法は、デュアル・トーン多重周波数 (DTMF) シグナル方式を使用可能にすることです。 DTMFは、ユーザーがプッシュボタン式電話機のキーを押したときに発生するトーンを送信するためのプロトコルである。 トーンには、電話網で解釈できる特定の周波数と持続時間があります。

ユーザーが電話のキーを押したときにトーンを聞き始めるには、アクション・ステップで dtmf 応答タイプを使用します。 このレスポンス・タイプは、JSONエディターを使って追加することができる。

{
  "generic": [
    {
      "response_type": "dtmf",
      "command_info": {
        "type": "<command type>",
        "parameters": {
          "parameter name": "parameter value",
          "parameter name": "parameter value"
        }
      },
      "channels": [
        {
          "channel": "voice_telephony"
        }
      ]
    }
  ]
}

command_info プロパティーは、電話統合用の DTMF コマンドを指定します。 サポートされるコマンドとその関連パラメーターは以下のとおりです。

command_info.type : collect

ユーザーから Dual-Tone Multi-Frequency (DTMF) 入力を収集するように電話統合に指示します。 このコマンドは、以下のパラメーターをサポートします。

パラメーター名 説明 必須 デフォルト
termination_key DTMF 終了キー。DTMF 入力の終わりをシグナル通知します (例えば、#)。 no 該当しない
count 収集する DTMF の桁数。100 以下の正の整数でなければなりません。 termintation_key、または minimum_countmaximum_count が定義されていない場合は必須 該当しない
minimum_count 収集する DTMF 桁数の最小値。 このプロパティーは、収集する桁数の範囲を定義するために maximum_count とともに使用されます。 この値は、最小値が 1 で最大値が maximum_count より小さい正整数でなければなりません。 terminatation_key および count が定義されていない場合は必須です。 該当しない
maximum_count 収集する DTMF 桁数の最大数。 このプロパティーは、収集する桁数の範囲を定義するために minimum_count とともに使用されます。 この桁数が収集されると、会話のターンが開始されます。 この値は、100 以下の正整数でなければなりません。 termintation_key および count が定義されていない場合は必須です。 該当しない
inter_digit_timeout_count DTMF 桁が受信された後、新しい DTMF 桁を待機する時間 (ミリ秒)。 アクティブな DTMF 収集期間において、このタイムアウトは、最初の DTMF 収集を受け取ったときにカウントが起動されます。 数字間のタイムアウトがアクティブな場合、応答後のタイムアウト・タイマーを非アクティブにします。 inter_digit_timeout_count パラメータが指定されていない場合、ポスト応答タイマは各 DTMF デジットの後にリセットされ、ポスト応答タイムアウトカウントが満たされるか、 またはコレクションが完了するまでアクティブなままになる。 この値は、100,000 (または 100 秒) 以下の正整数です。 no 該当しない
ignore_speech 収集が完了するかタイムアウトになるまで、DTMF 桁の収集中に音声認識を無効にするかどうか。 このパラメーターが true の場合、最初の DTMF シグナルを受信すると、音声認識は自動的に無効になります。 no false
stop_after_collection DTMF 収集の完了時に DTMF 入力を停止するかどうか。 このコマンドの後、 start レスポンス・タイプを使用して再び有効にするまで、すべての DTMF 入力は無視される。 no false

command_info.type : disable_barge_in

DTMF バージインを無効にして、発信者がキーを押したときに電話統合からの再生が中断されないようにします。 disable_barge_in が有効になっている場合、再生中に押されたキーは無視されます。

このコマンドにパラメーターはありません。

command_info.type : enable_barge_in

DTMF バージインを有効にして、電話統合の再生を発信者がキーを押して中断できるようにします。

このコマンドにパラメーターはありません。

command_info.type : send

電話機との連携でDTMF信号を送信します。

このコマンドは、以下のパラメーターをサポートします。

パラメーター 説明 必須 デフォルト
digits 各エレメントが呼び出し元に送信される DTMF トーンを表す JSON オブジェクトの配列。 はい 該当しない
digits[].code 送信するイベント・コード。 0 から 9 までの数字に加えて、以下のコードを指定できます:
-10: *
-11: #
-12: A
-13: B
-14: C
-15: D
はい 該当しない
digits[].duration イベントの所要時間 (ミリ秒)。 no 200
digits[].volume トーンの電力レベル (dBm0を参照)。 サポートされる範囲は 0 から -63 dBm0 です。 no 0
send_interval リストの次のDTMFトーンが送信されるまでの待ち時間(ミリ秒単位)。 no 200

この例は、DTMF 入力を収集するために使用される、collect コマンドによる dtmf 応答タイプを示しています。

{
  "generic": [
    {
      "response_type": "dtmf",
      "command_info": {
        "type": "collect",
        "parameters": {
          "termination_key": "#",
          "count": 16,
          "ignore_speech": true
        }
      },
      "channels": [
        {
          "channel": "voice_telephony"
        }
      ]
    }
  ]
}

この例は、DTMF シグナルを送信するために使用される、send コマンドによる dtmf 応答タイプを示しています。

{
  "generic": [
    {
      "response_type": "dtmf",
      "command_info": {
        "type": "send",
        "parameters": {
          "digits": [
            {
              "code": "9",
              "volume": -8
            },
            {
              "code": "11"
            }
          ],
          "send_interval": 100
        }
      },
      "channels": [
        {
          "channel": "voice_telephony"
        }
      ]
    }
  ]
}

Web チャット統合への会話の転送

channel_transfer 応答タイプを使用して、発信者を現在の電話から Web チャット・セッションに転送できます。

アシスタントは、発信者がタップして電話のブラウザーに Web チャット・ウィジェットをロードできる URL を含む SMS メッセージを発信者に送信します。 ウェブチャットセッションは、電話の履歴を表示し、トランザクションを完了するために必要な情報を収集するプロセスを開始することができます。

これは、顧客が話すよりも書面で情報を提供する方が簡単な場合に便利です(例えば、住所の変更など)。

転送が正常に完了した後、発信者は電話を切り、ウェブチャットを使用して会話を続けることができます。

channel_transfer 応答タイプを電話統合で使用できるのは、SMS with Twilio 統合もアシスタントに対して構成されている場合のみです。

{
  "generic": [
    {
      "response_type": "text",
      "values": [
        {
          "text": "I will send you a text message now with a link to our website."
        }
      ],
      "selection_policy": "sequential"
    },
    {
      "response_type": "channel_transfer",
      "message_to_user": "Click the link to connect with an agent using our website.",
      "transfer_info": {
        "target": {
          "chat": {
            "url": "https://example.com/webchat"
          }
        }
      }
    }
  ]
}

コールの終了

この例に示すように、 end_session レスポンスタイプを使って、アシスタントに電話の終了を指示することができます。

{
  "generic": [
    {
      "response_type": "end_session"
    }
  ]
}

オプションで、電話統合がこの応答タイプを受信したときに生成される SIP BYE 要求に組み込むカスタム・ヘッダーを組み込むことができます。

この例は、カスタム SIP ヘッダーを持つend_session応答タイプを示しています。

{
  "generic": [
    {
      "response_type": "end_session",
      "channel_options": {
        "voice_telephony": {
          "sip": {
            "headers": [
              {
                "name": "Customer-Header1",
                "value": "Some-Custom-Info"
              },
              {
                "name": "User-to-User",
                "value": "XXXXXX"
              }
            ]
          }
        }
      }
    }
  ]
}

電話会話中のテキスト・メッセージの送信

音声出力を書き起こすよりも、書面で正確にコミュニケーションする方が簡単である状況では、進行中の音声中にテキスト・メッセージを送信できます。 例えば、住所や方向などです。

通話中にSMSメッセージを送信する前に、 SMS インテグレーションを設定する必要があります。 詳細については、 SMSとの統合を 参照してください。

会話中に顧客とテキストを交換すると、アシスタントは SMS メッセージ交換を開始します。 テキスト・メッセージがユーザーに送信され、ユーザーに応答を求めます。

アクション・ステップから特定のメッセージを送信するには、user_defined 応答タイプを vgwActSendSMS コマンドで使用します。

{
  "generic": [
    {
      "response_type": "text",
      "values": [
        {
          "text": "I will send you a text message now."
        }
      ],
      "selection_policy": "sequential"
    },
    {
      "response_type": "user_defined",
      "user_defined": {
        "vgwAction": {
          "command": "vgwActSendSMS",
          "parameters": {
            "message": "To send me your street address, respond to this text message with your address."
          }
        }
      }
    }
  ]
}

parameters オブジェクトには、以下のいずれかのパラメーターを指定できます。

パラメーター タイプ 説明
メッセージ ストリング 送信する SMS メッセージのテキストです。 必須。
mediaURL リスト MMS 添付ファイルとしてメッセージとともに送信されるメディア・ファイルの URL のリスト。 オプション。
tenantPhoneNumber ストリング テナントに関連付けられている電話番号。 数値の形式は、SMS プロバイダーが必要とする形式と一致している必要があります。 tenantPhoneNumber 値が指定されていない場合は、アクティブな通話の電話統合構成のテナント ID が使用されます。 オプション。
userPhoneNumber ストリング SMS メッセージの送信先の電話番号。 数値の形式は、SMS プロバイダーが必要とする形式と一致している必要があります。 userPhoneNumber 値が指定されていない場合は、着信 SIP INVITE 要求の From ヘッダーからの音声発信者の電話番号が使用されます。 オプション。
setAsInputText ブール値 input.text でユーザーから SMS メッセージを送信するかどうか。 true を指定すると、ユーザーからの SMS メッセージが input.text で送信されます。 そうでなければ、 input.textvgwSMSMessage に設定され、SMSメッセージは統合変数とコンテキスト変数として送信される。 オプション。 デフォルト: false。

SMS 統合が複数のSMS電話番号をサポートしている場合、またはSMSプロバイダとは異なるSIPトランクを使用している場合は、テキストメッセージの送信に使用する電話番号を必ず指定してください。 そうでない場合は、電話をかけたのと同じ電話番号を使ってテキストが送信される。

アシスタントが SMS メッセージを受信すると、テキスト入力 vgwSMSMessageを使用して新しい会話ターンが開始されます。 この入力は、呼び出し元からメッセージが受信されたことを示します。 お客様のメッセージのテキストは、 vgwSMSMessage コンテキスト変数と sms_message 統合変数の値として組み込まれます。

アシスタントが SMS メッセージを発信者に送信できない場合は、テキスト入力 vgwSMSFailed を使用して新しいターンが開始されます。 この入力は、SMSメッセージを発信者に送信できなかったことを示す。 入力テキスト vgwSMSFailed によってトリガーされるアクションを作成することにより、このような障害に対処するようにアシスタントを設計できます。

{
  "input": {
    "text": "vgwSMSMessage",
    "integrations": {
      "voice_telephony": {
        "sms_message": "230 Leigh Farm rd"
      }
    }
  },
  "context": {
    "skills": {
      "main skill": {
        "user_defined": {
          "vgwSMSMessage": "1545 Lexington Ave."
        }
      }
    }
  }
}

setAsInputTexttrue に設定されている場合のターン要求の例を以下に示します。

{
  "input": {
    "text": "230 Leigh Farm rd",
    "integrations": {
      "voice_telephony": {
        "sms_message": "230 Leigh Farm rd"
      }
    }
  },
  "context": {
    "skills": {
      "main skill": {
        "user_defined": {
          "vgwSMSMessage": "1545 Lexington Ave."
        }
      }
    }
  }
}

一連の電話コマンドの定義

複数のコマンドを連続して実行する場合は、generic 配列に複数の応答を含めます。 これらのコマンドは、配列に指定されている順序で処理されます。

この例では、2つの応答を示している。1つ目はテキスト応答、2つ目は通話を終了するための end_session 応答である。

{
  "generic": [
    {
      "response_type": "text",
      "values": [
        {
          "text": "Goodbye."
        }
      ],
      "selection_policy": "sequential"
    },
    {
      "response_type": "end_session"
    }
  ]
}

CDR ログ・イベントにカスタム値を注入

ログ Webhook を使用して発着信詳細記録 (CDR) イベントをログに記録する場合は、cdr_custom_data コンテキスト変数を使用して、ログに記録されたイベントにカスタム・データを追加できます。 この方法は、通話中のデータを記録するために使用できます(たとえば、特定のタスクの完了を示すため)。

カスタム CDR データをログに記録するには、JSON エディターを使用してコンテキストを編集します。 以下の例にあるように、cdr_custom_datacontext.integrations.voice_telephony オブジェクトの子として定義します。

  "context": {
    "integrations": {
      "voice_telephony": {
        "cdr_custom_data": {
          "key1": "value1",
          "key2": "value2"
        }
      }
    }
  }

cdr_custom_data オブジェクトには、任意の有効な JSON データを含めることができます。

CDR レポートを生成すると、以下の例にあるように、カスタム・データが injected_custom_data フィールドに組み込まれます。

{
  "payload": {
  ...
    "injected_custom_data": {
      "key1": "value1",
      "key2": "value2"
    }
  ...
  }
}

CDR ログ・イベント・ペイロードの構造について詳しくは、CDR ログ・イベント・リファレンスを参照してください。

カスタム CDR データのマージおよび削除

cdr_custom_data オブジェクトがアクションによって定義されるたびに、新規データはすべての既存データとマージされます。 以前に定義されたプロパティに指定された新しい値は、以前の値を上書きし、新しいプロパティが追加されます。それ以外の場合、以前に定義されたデータは変更されません。

既に定義されているプロパティーを削除するには、次の例にあるように、対象のプロパティーを空の値に明示的に設定する必要があります。

  "context": {
    "integrations": {
      "voice_telephony": {
        "cdr_custom_data": {
          "key1": ""
        }
      }
    }
  }

アクションから電話統合コンテキスト変数にアクセスする

電話統合コンテキスト変数にアクセスする場合は、JSON エディターを使用してコンテキストを編集します。

以下の例は、ユーザーの電話番号 (通話の受信元の電話番号) にアクセスする方法を示しています。

  "context": {
    "variables": [
      {
        "value": {
          "expression": "${system_integrations.voice_telephony.private.user_phone_number}.replace('+','')"
        },
        "skill_variable": "user_phone_number"
      }
    ]
  }

詳しくは、 電話統合のコンテキスト変数 を参照してください。