本ドキュメントは、AWS側からSalesforceのService Cloud Voiceで提供される Telephony Integration API についての解説です。
以下の、Service Cloud Voiceのセットアップが完了し、発着信ができる状態になった後に実施内容になります。
セットアップが完了しているとすぐに利用することができます。
なお、本内容はAmazon Connect からのパートナーテレフォニーを使用した Service Cloud Voiceのエディションで、バージョンは 18.0 を対象にしています。
概要
AWS Lambda 関数 InvokeTelephonyIntegrationApi を介してService Cloud Voice の Telephony Integration API をコールするための機能です。
主に、以下の機能をAmazon Connect のコンタクトフローから呼び出して利用します。
- 音声通話 ( VoiceCall ) レコードの作成
- インバウンド用
createVoiceCall - 転送用
createTransferVC
- インバウンド用
- オムニチャネルフローの実行:
executeOmniFlow
加えてイベントドリブンで動作したり、裏方の機能として以下のような機能があります。
- 通話終了後 CTR 情報で音声通話レコードを更新:
updateVoiceCall - 不在着信・放棄された通話の一次情報 PendingServiceRouting (PSR) レコードをクリア:
cancelOmniFlowExecution - オムニチャネル経由で再ルーティングを実現する:
rerouteFlowExecution - 留守番録音データの文字起こし結果の送信:
sendMessage
使い方の紹介
着信用・転送用音声通話レコード作成
音声通話レコードを作成する機能では、標準で渡される情報に加えて sfdc- プレフィックスをつけたユーザー定義属性( コンタクト属性の設定ブロック )を、Lambda関数を呼び出す前に設定することで音声通話レコードの任意の項目に値を設定することができます。
属性設定のサンプル
音声通話レコードにカスタム項目 MyField__c に対して、"設定したい値"という文字を書き込みたい場合、以下のように値を設定します。
- 名前空間:
ユーザー定義済み - キー:
sfdc-MyField__c - 値:
設定したい値
Lambdaの呼び出しパラメータ:
- methodName:
createVoiceCallまたは、createTransferVC
応答
以下の形式で応答が返るため、コンタクトフローでは $.External.attributeName または、名前空間「外部」から音声通話レコードのレコードID( voiceCallId )を参照することができます。
{
"voiceCallId": "0LQRM0000006CSz",
"errors": []
}
以下の情報が、Salesforceに連携されます。
| ラベル | 項目名 | /telephony/v1/voiceCallsのプロパティ名 | 説明 |
|---|---|---|---|
| 前の通話 | PreviousCallId | parentVoiceCallId | 転送時の1つ前の音声通話レコード |
| ベンダー通話キー | VendorCallKey | vendorCallKey | Amazon ConnectのコンタクトID |
| 受信者の連絡先情報 | ToPhoneNumber | to | 音声: 着信時のAmazon Connectの電話番号 WebRTC: メールアドレス |
| 通話者の連絡先情報 | FromPhoneNumber | from | 音声: 音声通話の発信元または転送元の電話番号または電子メールアドレス WebRTC:メールアドレス |
| 通話元 | CallOrigin | callOrigin | - Preview: プレビューダイヤラーを表します- Progressive: プログレッシブダイヤラー- Voicemail: 留守番電話上記以外は空 |
| 通話種別 | CallType | initiationMethod | - Inbound: 着信 - Transfer: 転送- Voicemail: 留守番電話補足: 発信(Outbound)はサポートされていません。Salesforceシステム内部が自動不要されるため |
| キュー名 | QueueName | queue | Amazon Connectのキュー名 転送の場合は空白です |
| 通話開始日時 | CallStartDateTime | startTime | 音声通話が開始された日時 (UTC) |
オムニチャネルフローの実行
Salesforceのオムニチャネルフローを実行します。
実行するオムニチャネルフローの実行対象は以下のように判断されます。
1.コンタクトセンターチャネルの設定
着信時のAmazon Connectの電話番号と一致する電話番号がパートナーテレフォニーコンタクトセンターの「コンタクトセンターチャネル」に設定されている場合、こちらの設定が優先され、コンタクトフローの flowDevNameは無視されます。
[通話のルーティング種別]で "オムニチャネルフロー" を設定している場合、ここで設定されたオムニチャネルフローが実行されます。フローの実行に失敗した場合、コンタクトセンターチャネルに設定した [代替キュー]が使用されます。
[通話のルーティング種別]で "キュー"を設定している場合、ここで設定されたキューが使用されます
一致する電話番号を設定していない場合、次の「コンタクトフローから指定」に沿った設定が行われます。
2.コンタクトフローから指定
着信、転送時のコンタクトフローで flowDevName で指定したオムニチャネルフローを実行します。
オムニチャネルフローの変数にパラメータを渡す
flowInput- 接頭辞をつけたパラメータを Lambda呼び出しのブロックのパラメータに設定すると、オムニチャネルフローの変数に値を渡すことができます。
例えば、サンプルのコンタクトフロー Sample SCV Omni-Channel Subflow - Basic Routing with Case Creation では、パラメータとして flowInput-IncomingCallPhoneNumber で顧客の電話番号を渡しています。実行される側であるテンプレートのオムニチャネルフロー Voice Calls Routed to Basic Queue with Case Creation は変数 IncomingCallPhoneNumber でパラメータを受け取る設定がされています。
オムニチャネルフローを実行するLambda呼び出しブロックの例

Lambdaの呼び出しパラメータ:
- methodName:
executeOmniFlow -
flowInput-***オムニチャネルフローに渡すパラメータ。***の部分がパラメータとして渡されます
応答
オムニチャネルフローを実行結果として、以下の形式で結果が返ります。
オムニチャネルフローの 作業を転送 (routeWork)で設定した 「ルーティング先」に応じてそれぞれのARNが格納されます。キューを選択した場合は、Amazon ConnectのキューARNが、エージェントを選択した場合はエージェントのARNが返却されます。
オムニチャネルフローの実行時エラーが起きた場合、パラメータで指定したフォールバックキューが返却されます。
{
"agent": "<AGENT_INFO>",
"queue": "<QUEUE_INFO>"
}
応答の値に基づいてコンタクトフローで作業キューの設定ブロックをすることで、オムニチャネルフローからルーティングの制御を行うことができるようになります。
エラーがある場合、以下の形式で結果が返ります。
{ "errors": ["error1", "error2"] }
補足:
(原理は分かりませんが) Service Cloud Voiceのバージョン 18.0 時点で、オムニチャネルフローの実行をするためには事前に音声通話レコードの作成(createVoiceCall / createTransferVCが成功)済みしている必要があります。


