ちょっと話題の記事

[Amazon Connect] 既存の顧客かどうかをSalesforceから検索して問い合わせフローを分岐する

2019.06.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

1 はじめに

AIソリューション部の平内(SIN)です。

Amazon Connect(以下、Connect)を会社の代表電話などとして置き換えた場合、顧客からの重要な着信と、セールス電話などをうまく切り分けられるかも知れません。

顧客の情報がSalesforceで管理されているという前提で、発信者番号が、登録されている番号か否かで処理を分岐する問い合わせフローを考えてみました。

イメージは以下のような感じです。

  • ① A社の担当者として登録されている 番号から電話があった場合、A社担当に電話を転送します。
  • ② salexforceに登録されていない番号から電話あった場合は、共通電話へ転送します。
  • ③ 着信時にSalexforceへの問い合わせを行い、電話番号が登録されているかどうかを確認し、処理を分岐します。

2 Saleforce

Salesforce上には、顧客と顧客担当者の「電話番号」及び「携帯電話」が、検索のターゲットとなります。

3 jsforce

Salesforceで公開されている、jsforceを使用すると、内部のデータに簡単にアクセス可能です。

https://jsforce.github.io/start/

下記のようにインストールすることで、Node.jsからでも、コマンドラインからでも利用可能です。

$ npm install jsforce -g

下記は、コマンドラインから顧客の電話番号を取得しています。

$ jsforce -u username -p password --sandbox -e "query('select name,phone from account')"
{"totalSize":3,"done":true,"records":[{"attributes":{"type":"Account","url":"/services/data/v42.0/sobjects/Account/0016D00000AzgsSQAR"},"Name":"C社","Phone":"+81-60-0000-3333"},{"attributes":{"type":"Account","url":"/services/data/v42.0/sobjects/Account/0016D00000AzkgCQAR"},"Name":"A社","Phone":"+81-30-0000-1111"},{"attributes":{"type":"Account","url":"/services/data/v42.0/sobjects/Account/0016D00000B1U4LQAV"},"Name":"B社","Phone":"+81-30-0000-2222"}]}

参考:SOAP API 開発者ガイド query()

通常のselcel文と考えるとテーブル名として指定する箇所は、今回の場合下記のとおりです。

  • 顧客: Account
  • 顧客担当者: Contact

参考:SOAP API 開発者ガイド Account

また、カラムとして指定する箇所は、次のようなものになります。

  • 名前: Name
  • 電話: Phone
  • 携帯番号: MobilePhone

参考:SOAP API 開発者ガイド Contact

4 Lambda

下記は、Connectから呼び出すLambdaの一例です。

発信者番号から、顧客担当者の電話を検索して、ヒットした場合は、担当者の名前を返すようになっています。

このLamndaの戻り値に従って、コンタクトフローを分岐することで所要の処理が可能になります。

カラムやテーブルを組み合わせれば、必要な検索を実装できるはずです。

'use strict';
const jsforce = require('jsforce');

exports.handler = async function(event, _context) {
console.log(JSON.stringify(event));
// 発信者番号
const phone = event.Details.ContactData.CustomerEndpoint.Address;
// Salesfoceのアカウント情報
const username = process.env.USERNAME;
const password = process.env.PASSWORD;

const conn = new jsforce.Connection({ loginUrl : 'https://login.salesforce.com' });

try{
await conn.login(username, password);
const sql = "select Name, Phone from Contact where Phone='" + phone +"'";
const data = await conn.query(sql)
if(data.records.length > 0){
return {"Name": data.records[0].Name}
}
} catch (err) {
}
return {"Name": ""}
}

5 最後に

jsforceでは、OAuth経由でのアクセスも可能です。この場合、ログインの記述が下記のように変化するだけです。

const conn = new jsforce.Connection({
oauth2 : {
loginUrl : 'https://login.salesforce.com',
clientId : oauth_client_id,
clientSecret : oauth_client_secret
}
});

※ Salesfaorceでは、OAuthを有効にする必要があります。

参考:[日本語Alexa] Salesforceにアカウントリンクしてみました

MNP未対応など、いくつかの制約はありますが、会社の電話をConnectで受けると、いろいろ便利な応用ができる予感がします。


弊社では、Amazon Connectに関するキャンペーンを行なっています。

【6/27(木)東京】「1時間でクラウド型コンタクトセンターを構築できるようになる!無料Amazon Connectハンズオンセミナー」を開催します

また、音声を中心とした各種ソリューションの開発支援を行なっております。