Amazon Connect CTI Adapter V2 for SalesforceでAmazon Connect Salesforce Lambda packageをインストールして使ってみる
事業開発部の酒匂です。この記事は内容としては独立しておりますが、下記の続きです。
Amazon Connect CTI Adapter V2 for Salesforceの自動ログイン/画面ポップ拡張/コンタクト属性値表示/ミュート/コールタスク登録機能について
Amazon Connectのコンタクトフロー上からLambda関数を呼び出してSalesforce(以下、SFDC)と連携させることが可能です。
SFDCのAPI経由でオブジェクトを検索したりするLambda関数をイチから作るのもいいと思いますが、Amazon Connect CTI Adapter for SalesforceのV2には、「Amazon Connect Salesforce Lambda package」というものがあります。
これを使えば関数をイチから作る必要がなさそうです。どんなものか試してみたいと思います。
Amazon Connect Salesforce Lambda packageのインストール
SFDC環境のインストール先を決定する
Production環境にインストールするかSandbox環境にインストールするか決めておきます。
前者にインストールする場合は、Production Enviroment
をtrue
、後者の場合はfalse
をセットしますので、控えておきます。
Salesforce REST APIのConsumer Key と Secretの発行
Amazon ConnectのコンタクトフローからLambda経由でSFDCにアクセスする際、SFDCのREST APIを使用しますので、KeyとSecretを発行しておきます。
- SFDCの
設定 > アプリケーション > アプリケーションマネージャ
をクリックします。表示された画面右上の新規接続アプリケーション
をクリックします。
接続アプリケーション名
、API参照名
、取引先責任者メール
に任意の値を入力します。OAuth設定の有効化
にチェックをつけます。コールバックURL
にhttps://www.salesforce.com
と入力します。
選択したOAuth範囲
にデータへのアクセスと管理(api)
と基本情報へのアクセス(id,profile,email,address,phone)
を選択します。
- 画面下にある
保存
ボタンをクリックします。
次へ
をクリックします。
- 画面上の
コンシューマー値
を控えておきます。
コンシューマーの秘密
にあるクリックして公開
をクリックして、表示される値を控えておきます。
- 画面の上の方にある
Manage
ボタンをクリックします。
ポリシーを編集
をクリックします。
OAuthポリシー
の許可されているユーザー
の値を
すべてのユーザーは自己承認可能
に変更します。
- 変更する際に下記のような確認画面が出ます。
OK
をクリックします。
- 引き続き、同じく
OAuthポリシー
のIP制限の緩和
の値を
IP制限の緩和
に変更します。
- 画面下の
保存
ボタンをクリックします。
ユーザー名(Username)、パスワード(Password)、セキュリティトークン(Security Token)を決定する
Lambda関数が使用するSFDCのAPIユーザーを作成します。
- SFDCの
設定 > ユーザ > プロファイル
をクリックします。画面上の新規プロファイル
をクリックします。
既存のプロファイル
にシステム管理者
を設定し、プロファイル名
に任意の名前を入力します。保存
ボタンをクリックします。
- 画面上の
パスワードポリシー
欄の編集
ボタンをクリックします。
パスワードポリシー
欄のパスワードの有効期限
を無期限
にします。
システム管理者権限
欄のLightning Experience ユーザー
のチェックを外しします。
保存
ボタンを押します。-
設定 > アプリケーション > 接続アプリケーション > 接続アプリケーションを管理する
をクリックします。画面上に表示される先ほど作成したアプリケーションをクリックします。
プロファイル
欄のプロファイルを管理する
をクリックします。
Amazon Connect API Only
を選択します。選択したら画面右下にある保存
ボタンをクリックします。
- 設定 > ユーザ > ユーザ
をクリックします。画面上の
新規ユーザ```ボタンをクリックします。
一般情報
欄の必須項目に任意の値を入力します。右側のロール
は未設定
のまま、ユーザーライセンス
はSalesforce
を設定、プロファイル
はさきほど作成したAmazon Connect API Only
を設定します。設定したら保存
ボタンをクリックします。
- 保存すると、下記のようなメールが送信されますので、
アカウントの確認
をクリックします。
- パスワードなどを設定し、
パスワードの変更
をクリックします。
- ログイン状態になるので、ユーザー名を選択して、メニューの
私の設定
をクリックします。
個人用 > 私のセキュリティトークンのリセット
をクリックします。画面上のセキュリティトークンのリセット
をクリックします。
- 下記のような画面が表示されます。
- メールを確認します。セキュリティトークンを控えておきます。
Amazon Connect Lambda Packageのインストール
SFDC側の設定が終わったので、今度はAmazon Connect側の作業を行います。
- AWSマネジメントコンソールにログインしておきます。
-
ブラウザから、https://aws.amazon.com/serverless/serverlessrepo/にアクセスします。
Browse all applications
ボタンをクリックします。
- 検索ボックスに
amazon connect salesforce
と入力して検索します。検索結果に出てくるAmazonConnectSalesforceLambda
をクリックします。
Deploy
ボタンをクリックします。
- 下記の画面が表示されますので、下の方に移動します。
- 下記の枠で囲った部分を入力します。入力したら
Deploy
ボタンをクリックします。
- 下記のような画面が表示されますので、しばらく待ちます。
- Deployが完了しました。
- Lambda関数を確認すると、
aws-serverless-repository-AmazonConnec-sfInvokeAPI-1HD61FLDVRSGO
という関数が作成されていることが確認できます。
Lambda関数のテスト
電話番号をキーにSFDCの取引先責任者オブジェクトを検索
- Lambda関数を選択して、
event-phoneLookup.json
を開きます。内容をクリップボードにコピーします。
テストイベントの設定
を選択します。
- テストイベントの設定内容にクリップボードの内容を貼り付けます。
イベント名
は任意の名前(phoneLookup
)を入力して、保存します。sf_phone
の値は取引先責任者オブジェクトの電話番号ですので、お使いの環境に存在するものを指定してください。
- 作成したテストを実行します。
-
テストで指定した電話番号にヒットする取引先責任者が存在しない場合は、結果は成功しますが、何もヒットしません。
- 今度はヒットするように、テストパラメータの電話番号を変更してみます。すると、このように結果が返ってきます。
SFDCの取引先責任者オブジェクトに紐づくケースオブジェクトを作成
- 今度は、
event-create.json
を開いて、内容をクリップボードにコピーします。
- テストイベントの設定を行い、クリップボードの内容を貼り付けます。
イベント名
はは任意の名前(createCase
)を入力して、保存します。ContactId
の値はケースを作成する取引先責任者のオブジェクトのIDですので、お使いの環境に存在するものを指定してください。
- テストを実行します。成功すると下記のような結果になります。
- ケースが作成されているはずなので、SFDC上で確認してみます。作成されておりました。
SFDCのケースオブジェクトを更新
さきほど作成したケースの状況をClosed
に変えてみます。
- 今度は、
event-update.json
を開いて、内容をクリップボードにコピーします。
- テストイベントの設定を行い、クリップボードの内容を貼り付けます。
イベント名
はは任意の名前(updateCase
)を入力して、保存します。ContactId
の値は更新するケースオブジェクトのIDですので、お使いの環境に存在するものを指定してください。
- テストを実行します。成功すると下記のような結果になります。
- ケースが更新されているはずなので、SFDC上で確認してみます。
Closed
に更新されておりました。
Amazon ConnectのコンタクトフローからAmazon Connect Salesforce Lambda関数を呼び出す
いよいよ、最後のところまできました。
SFDC側の設定が終わり、Lambda関数のインストールと動作確認が取れましたので、本来の目的であるAmazon Connectのコンタクトフロー上からLambda関数を呼び出してみます。
コンタクトフローからは下記のことができます。
- 電話番号をキーにSFDCの取引先責任者オブジェクトの検索
event-phoneLookup.json
で試した内容のことができます。
- SFDCオブジェクト(例えばケース)の作成
event-create.json
で試した内容のことができます。
- SFDCオブジェクト(例えばケース)の更新
event-update.json
で試した内容のことができます。
- SFDCのオブジェクトの検索
event-lookup.json
は上記では試していないですが、下記のようにsf_object
に検索対象のオブジェクトを指定し、phone
のように検索対象のフィールドを指定することで検索が可能になります。
{ "Details": { "Parameters": { "sf_operation": "lookup", "phone": "+81-5012345678", "sf_object": "Account", "sf_fields": "Id, Name" } } }
Lambda関数の実行権限の付与
Amazon Connectから先程インストールしたLambda関数を実行できるようにします。
aws lambda add-permission --region ap-southeast-2 --function-name function:(lambdaの関数名) --statement-id 1 --principal connect.amazonaws.com --action lambda:InvokeFunction --source-account (AWSアカウントID) --source-arn (amazon connectインスタンスのARN)
検索処理を行う場合
コンタクトフローから先程インストールしたLambda関数のarnを指定してAWS Lambda関数を呼び出す
ブロックから下記パラメータを指定して呼び出します。
パラメータ名 | 内容 | 設定値 |
---|---|---|
sf_operation | 実行する処理内容を指定する | lookup を指定する。 |
sf_object | 処理対象のSFDCオブジェクト | 取引責任者(Contact )、ケース(Case )などを指定する。 |
sf_fields | 処理結果として受け取るSFDCオブジェクトのフィールド | Id 、Name などを指定する。 |
下記のようなフローを作成しました。
AWS Lambda関数を呼び出す
ブロックは下記のようにしております。
このようにコンタクトフロー上でSFDCのオブジェクト検索ができております。
{ "ContactFlowId": "arn:aws:connect:ap-southeast-2:************:instance/************/contact-flow/e9f00976-9df3-4547-b06c-b41fd943a0d6", "Parameters": { "FunctionArn": "arn:aws:lambda:ap-southeast-2:************:function:aws-serverless-repository-AmazonConnec-sfInvokeAPI-1HD61FLDVRSGO", "Parameters": { "sf_operation": "lookup", "phone": "+81********", "sf_object": "Contact", "sf_fields": "Id,Name" }, "TimeLimit": "3000" }, "ExternalResults": { "Id": "0037F00000yy7DkQAI", "sf_count": "1", "Name": "テストいち" }, "ContactId": "a3d66bdb-1c12-4ef0-881d-853906463467", "ContactFlowModuleType": "InvokeExternalResource", "Timestamp": "2018-10-14T20:51:20.570Z" }
作成処理を行う場合
コンタクトフローから先程インストールしたLambda関数のarnを指定してAWS Lambda関数を呼び出す
ブロックから下記パラメータを指定して呼び出します。
パラメータ名 | 内容 | 設定値 |
---|---|---|
sf_operation | 実行する処理内容を指定する | create を指定する。 |
sf_object | 処理対象のSFDCオブジェクト | ケース(Case )などを指定する。 |
この他に作成対象のオブジェクトの必須項目(例えばケースを紐付ける取引先責任者のオブジェクトIDなど)は、パラメータに全て指定する必要があります。
更新処理を行う場合
コンタクトフローから先程インストールしたLambda関数のarnを指定してAWS Lambda関数を呼び出す
ブロックから下記パラメータを指定して呼び出します。
パラメータ名 | 内容 | 設定値 |
---|---|---|
sf_operation | 実行する処理内容を指定する | update を指定する。 |
sf_object | 処理対象のSFDCオブジェクト | ケース(Case )などを指定する。 |
この他に更新対象のSFDCオブジェクトのID(sf_id
)の指定と更新する値の指定が必要です。
電話番号による検索処理を行う場合
コンタクトフローから先程インストールしたLambda関数のarnを指定してAWS Lambda関数を呼び出す
ブロックから下記パラメータを指定して呼び出します。
パラメータ名 | 内容 | 設定値 |
---|---|---|
sf_operation | 実行する処理内容を指定する | phoneLookup を指定する。 |
sf_phone | 検索キーに使用する電話番号指定する | 通常はコンタクトフロー上で取得できる発信者番号を指定する |
sf_fields | 処理結果として受け取るSFDCオブジェクトのフィールド | Id 、Name などを指定する。 |
さいごに
インストールと設定さえすれば、あとはパラメータを指定して使うだけ、という便利なものなのですが、そこに至るまでいろいろとやることがあるため、当ブログ記事が結構長くなってしまいました。
まだ他にも試していない機能があるため、今後も記事を書いていこうと思います。