本ドキュメントは、「Amazon Connect からのパートナーテレフォニーを使用した Service Cloud Voice」をパートナーテレフォニーのコンタクトセンターを作成画面から作成した際のプロビジョニング時に行われるデプロイ処理について説明したドキュメントです。
前提
Amazon Connect からのパートナーテレフォニーを使用した Service Cloud Voice バージョン 19.0 のプロビジョニングのアーキテクチャです。
プロビジョニング完了後のCloudFormationスタックのデプロイ状況、Cloud Trailのログを参照した結果に基づいています。
公式で示された内容ではないため、実際の環境と相違がある可能性や将来変更に伴い差異が発生する可能性がある点に注意してください。
デプロイされるリソース群
デプロイされるリソース群と、CloudFormationのカスタムリソースで処理される内容の概要図を以下に示します。
SCVBYOATenantStack
まず初めに、us-east-1 (固定)に SCVBYOATenantStack デプロイされます。
このスタックの責務は、
- ネストされたスタック
SCVManagedPolicyStack - CloudTrailの証跡
-
scvBYOACloudTrail名前で固定です - マルチリージョンの証跡が有効になっているため、us-east-1 の1つだけだけが作成されます
- CloudTrailの出力先のS3バケット
-
- IAM の IDプロバイダーを作成するためのカスタムリソース
-
ProviderCreatorの名前が付くLambda関数 -
SalesforceServiceVoiceIdpの固定名で、IAM ID プロバイダが作成されます
-
- Lambda関数のためのIAMロール
- 各種固定名で IAM ロールが作成されます
SCVManagedPolicyStack
us-east-1 (固定)に デプロイされます。
- Lambda関数のための管理されたIAMポリシー
- 各種固定名で IAM ポリシーが作成されます
${コンタクトセンターAPI参照名}-SCVBYOAContactCenterStack
Service Cloud Voiceのセットアップで指定したリージョンにデプロイされます。
これは、Amazon Connectとの連携で使用するベースとなるスタックです。
- ネストされたスタック
- ConnectConfigurationStack
- EventRulesStack
- RealtimeAlertStack
- VoiceMailStack
- S3バケット
- S3Bucket: Amazon Connectインスタンスに設定される 通話記録、Contact Lensの分析結果格納先
- Lambda関数
- CTRDataSyncFunction
- InvokeTelephonyIntegrationApiFunction
- InvokeSalesforceRestApiFunction
- kvsTranscriber
- kvsConsumerTrigger
- HandleContactEventsFunction
- ContactDataSyncFunction
- PostCallAnalysisTriggerFunction
- ContactLensProcessorFunction
- ContactLensConsumerFunction
- AuthKeysSSMUtilFunction: 初回作成時、パートナーテレフォニーコンタクトセンターから[キーを更新]したときに実行される。Telephony Integration API で利用するJWT Bearer Flow向けの秘密鍵を更新する
- 各種Lambda関数のLayer
- Kinesis Data Stream
- CTRStream
- ContactLensStream
- パラメータストア
- CustomSSMResource: CloudFormationのカスタムリソースから以下のパラメータストアを作成
${コンタクトセンターAPI参照名}-salesforce-rest-api-access-token${コンタクトセンターAPI参照名}-salesforce-rest-api-auth-consumer-key${コンタクトセンターAPI参照名}-salesforce-rest-api-access-token${コンタクトセンターAPI参照名}-salesforce-rest-api-audience${コンタクトセンターAPI参照名}-salesforce-rest-api-subject
- CustomSSMResource: CloudFormationのカスタムリソースから以下のパラメータストアを作成
- KMSキー
- ScvDataStreamIdKey: (使われていない)
- LiveMediaStreamKmsKey: Kinesis Video Stream用の鍵
${コンタクトセンターAPI参照名}-SCVBYOAContactCenterStack-VoiceMailStack
Service Cloud Voiceのセットアップで指定したリージョンにデプロイされます。
これは、Voicemail(留守録)の機能のためのスタックです。
- Lambda関数
- 各種Lambda関数のLayer
${コンタクトセンターAPI参照名}-SCVBYOAContactCenterStack-ConnectConfigurationStack
Service Cloud Voiceのセットアップで指定したリージョンにデプロイされます。
これは、Amazon Connectインスタンスと紐づくリソース群の構成を行うスタックです。
- 事前定義された属性
Routing
- 承認済みオリジン
https://***.my.salesforce.comhttps://***.lightning.force.com
- Lambda関数
- ConnectConfiguration
- 承認済みオリジンが重複でエラーにならないように事前に削除する
- コンタクトフローから呼び出すLambda関数の登録が重複でエラーにならないように事前に削除する
- マルチパーティコールを設定する (OFFするパラメータが渡される)
- S3バケットの紐付け
- ライブメディアストリーミングの設定を追加する
- CTR 向け Kinesis Data Streams の紐付け
- Contact Lens 向け Kinesis Data Streams の紐付け
- エージェントのカスタムステータスを追加 (
sfdc_pendingが渡される)
- ConnectConfiguration
- Lambda関数の連携
- InvokeTelephonyLambda:
InvokeTelephonyIntegrationApiFunction関数 を紐付ける - KvsConsumerTrigger:
kvsConsumerTrigger関数を紐付ける - InvokeSfRestApi:
InvokeSalesforceRestApiFunctionを紐づける - ContactLensConsumer:
ContactLensConsumerFunctionを紐づける- Contact Lens の Kinesis Data から呼び出される前提のLambda関数であるため、コンタクトフローから呼び出すためのこの登録は、現在は無意味である
- InvokeTelephonyLambda:
${コンタクトセンターAPI参照名}-SCVBYOAContactCenterStack-EventRulesStack
Service Cloud Voiceのセットアップで指定したリージョンにデプロイされます。
これは、EventBridgeのルールをまとめたスタックです。
- EventBridge
- HandleContactEvents関数を実行する
- PSR (PendingServiceRouting)をクリアする
- 再ルーティング指示
- オムニチャネルの統合ルーティングを有効にしている必要があります
- 5分ごとに 空の Telephony Integration API のLambda関数をコール
- コールドスタートにならないよう、ウォーム状態 を保つための機能
- HandleContactEvents関数を実行する
${コンタクトセンターAPI参照名}-SCVBYOAContactCenterStack-RealtimeAlertStack
Service Cloud Voiceのセットアップで指定したリージョンにデプロイされます。
これは、監視向けのアラート関連の機能をまとめたスタックです。
- Lambda 関数
- RealtimeAlertLambda: CloudWatch Alarmが発火したとき、Rest APIをコールするLambda関数
- Lambda 関数の Layer: RealtimeAlertLambda向けのLayer
- SNS Topic
- Cloud Watch Alarmが発火をサブスクライブして、RealtimeAlertLambdaへパブリッシュする
- Cloud Watch Alarm群
- アラートの一覧はリンク先を参照
- Cloud Watch Dashboard
- Amazon Connectを監視するためのダッシュボード
- Lambda関数を監視するためのダッシュボード
${コンタクトセンターAPI参照名}-SCVBYOACContactCenterStack-BYOACConfigurationStack (既存インスタンス:BYOAのみ)
Service Cloud Voiceのセットアップで、指定したリージョンに新規ではなく既存のAmazon Connectインスタンスを利用することを選択した場合のみデプロイされます。
これは、Amazon Connectインスタンスと紐づくリソース群の構成を行うスタックです。
- カスタムリソース
- S3バケットポリシーにルートアカウントからのアクセスとTranscribeサービスからのアクセスを許可するバケットポリシーを追加
- 既存のKMSキーにタグ
resourceOwner:scvを追加する- ライブメディアストリーミング(LMS)のKinesis Video Streamを暗号化する時に使用されるキー向け
- IAMポリシー
SCVKinesisDataStreamAccessPolicyに CTR, Contact Lens向けのKinesis Data Streamsへのアクセス許可を追加する- CloudFormationパラメータで指定したKinesis Data StreamsのARNが追加される
複数組織
デプロイの手順については、TODO
${コンタクトセンターAPI参照名}-SCVBYOAContactCenterStack-SecretManagerStack
- カスタムリソース
- Secrets Manager
- salesforce-secret: REST API, Integration API 向けの秘密鍵、コンシューマー鍵などを格納する
- alesforce-access-secret: アクセストークンをキャッシュするための
- Secrets Manager
${コンタクトセンターAPI参照名}-SCVBYOAContactCenterStack
- Lambda関数
${コンタクトセンターAPI参照名}-SCVBYOAContactCenterStack-VoiceMailStack
その他細かなv18 -> v19差分
- Lambda関数で利用するNode.js のランタイムが 20.x から 22.x へ移行
- 秘匿情報をパラメータストアのSecureStringの利用から、Secrets Managerの利用へ変更
- 手動でデプロイ時、Lambda関数に接頭辞がつけられるように変更
参考URL
- オープンになっている公式のCloudFormationテンプレート
https://github.com/service-cloud-voice/ServiceCloudVoiceLambdas/tree/master/cloudformation

