電話対話の処理
アシスタントが電話統合を使用する場合、さまざまな応答タイプを使用して、統合の動作をカスタマイズしたり、アシスタントが電話を介してお客様との会話のフローを管理したりすることができます。
応答タイプを使用して、以下の電話固有のアクションを実行できます。
- Speech to Text サービスに詳細設定を適用する。
- Text to Speech サービスに詳細設定を適用する。
- 通話をライブ・エージェントに転送します。
- 保留音楽または録音音声を再生する。
- 「Enable keypad entry」。
- 会話をウェブチャット統合に転送する。
- 呼び出しを終了します。
- 電話での会話中にテキストメッセージを送る。
場合によっては、複数のアクションを実行するために応答タイプを結合することができます。 例えば、電話のキーパッド入力を要求し、同じアクション・ステップからテキスト・メッセージを送信することによって、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 |
音声構成の設定時に使用する更新戦略を指定します。 考えられる値は次のとおりです:
|
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 から動的に構成すると、 narrowband
や broadband
などのルート・レベル・フィールドのみが更新されます。 これらのフィールドをコマンドから省略すると、元の構成設定が保持されます。 update_strategy
値 merge
および 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_strategy
を merge_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 |
音声構成の設定時に使用する更新戦略を指定します。 考えられる値は次のとおりです:
|
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.com 、 tel:+18883334444 など、呼を転送するSIPまたは電話のURI。 hangup メソッドの場合はオプションです。 |
service_desk.sip.transfer_method |
refer |
通話の転送方法を決定します。
|
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 転送ヘッダーを送信する方式。
|
転送ターゲットとして SIP URI を定義する場合は、2 つの円記号 (@
) をアットマーク (\\
) の前に追加して、URI 内のアットマークをエスケープしてください。 これは、文字列がエンティティの省略記法の一部として認識されるのを防ぐためである。
"uri": "sip:12345556789\\@myhost.com"
ハングアップ後の転送
デフォルトでは、電話統合は SIP REFER
要求を使用して通話を転送します。 IVR サービス・プロバイダーによっては、代わりに SIP BYE
要求を使用するように通話中転送を構成しなければならない場合があります。
transfer_method
属性を使用して、 refer
または hangup
のいずれかを使用して通話の転送方法を指定します。 transfer_method
を refer
ではなく 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.loop
を true
に設定した場合は、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_count と maximum_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.text は vgwSMSMessage に設定され、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."
}
}
}
}
}
setAsInputText
が true
に設定されている場合のターン要求の例を以下に示します。
{
"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_data
を context.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"
}
]
}
詳しくは、 電話統合のコンテキスト変数 を参照してください。