14
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS Lambda関数からAmazon Connectコンタクトフローを呼び出し~電話の転送を行う

Last updated at Posted at 2019-03-22

◆概要

  • AWS Lambdaを使用したLINEbotの作成 で作成したLINE botに受け答えをするとAmazon Connectのコンタクトフロー経由で有人の通話に切り替えるシナリオを作ってみます。
    • システムの流れ
      • ①ラムダからAmazon Connect が呼ばれる
      • ②Amazon Connectが自動で修理業者等へ電話をかける
      • ③修理業者とIVRで通話
      • ④ユーザに電話を転送し、ユーザと修理業者をつなぐ

◆事前準備

  • AWSアカウントの作成
  • Amazon Connectインスタンスの作成

◆LINE botの修正

webhook.js
case 'location': // 位置情報
const address = webhookData.message.address;
const latitude = webhookData.message.latitude;
const longitude = webhookData.message.longitude;

// SFDC Invoke APIコール
const callHello = (message) => {
  const request = require('request-promise');
  const options = {
    method: 'POST',
    headers: { 'Content-Type': 'application/json; charset=UTF-8' },
    // Amazon Connect Salesforce lambda packageをAPI GWとして呼び出す
    uri: `https://・・・・`,
    body: message,
    json: true
  };
  return request(options)
    .then(function (parsedBody) {
      return parsedBody;
    })
    .catch(function (err) {
      console.log(err);
      return null;
    });
};
(async () => {
  // SFDC ContactID取得
  const response1 = await callHello({
    "Details": {
      "Parameters": {
        "sf_operation": "lookup",
        "LINE__c": userId,
        "sf_object": "Contact",
        "sf_fields": "Id, Name, HomePhone"
      }
    }
  });
  const SFDC_ContactId = response1.Id;
  const SFDC_ContactName = response1.Name;
  const SFDC_ContactHomePhone = response1.HomePhone;

  // SFDCケース登録
  const response2 = await callHello({
    "Details": {
      "Parameters": {
        "sf_operation": "create",
        "sf_object": "Case",
        "Origin": "LINE",
        "Status": "New",
        "ContactId": SFDC_ContactId,
        "Subject": "修理予約",
        "Priority": "High",
        "Description": "SFDC登録名:" + SFDC_ContactName + "  (LINE登録名:" + displayName + ") 様より車両の修理依頼受領。(ご申告位置情報: " + address + ")" +
          "--> 修理対応者決定(修理サービス)"
      }
    }
  });

  // LINEエンドユーザへリプライ送信
  replyMessage = displayName + 'さん(ご契約名義:' + SFDC_ContactName + '様)、位置情報の送付ありがとうございます。' + address + 'に急行するよう、修理手配中です。しばらくお待ちください。';
  Line.replyMessage(replyToken, { type: 'text', text: replyMessage });

  // 電話コールバック
  var connect;
  // Amazon Connectのリージョンを指定してオブジェクト作成
  connect = new AWS.Connect({ apiVersion: 'latest', region: "ap-southeast-2" });

  // APIリクエストのパラメータ作成
  var params = {
    ClientToken: null,
    // Amazon ConnectのコンタクトフローのID
    ContactFlowId: "・・・・・・・・",
    // 今回かける先の電話番号は引数で設定
    DestinationPhoneNumber: process.env.PHONENUMBER,
    // Amazon ConnectのコールセンターのインスタンスID
    InstanceId: "・・・・・・・・・",
    // かける元の電話番号
    SourcePhoneNumber: "+81・・・・・・・・"
  };

  // APIをキック
  var calling = connect.startOutboundVoiceContact(params, function (err, data) {
    if (err) {
      console.log(err);
    } else {
      console.log("無事終了");
    }
  });
})();
break;

◆コンタクトフローの作成

1. キューの設定

  • 今回作成するキューはアウトバウンド発信者ID名、アウトバウンド発信者ID番号を設定します。
    • 設定する番号・名前がユーザに通知されます。(番号がない場合には取得してください)

2. コンタクトフロー

  • 今回は下記の図のようなコンタクトフローを作成します。
    flow_2.png

①音声の設定

  • 言語を日本語に設定し、音声を選択します。

②キューの設定

  • この問い合わせフローのために新規でキューを作成し、それを指定してください。

③ログ記録動作の設定

  • ログ記録動作を有効化します。

④通話記録動作の設定

  • 顧客専用を選択します。

⑤プロンプトの再生

  • テキスト読み上げ機能(アドホック)を選択
  • テキストの入力
お世話になっております。修理手配センターです。

⑥Lambda関数を呼び出す

  • ARNはAmazon Connect salesforce lambda package により追加された関数のARNを使用してください。
    • 関数入力パラメータ:
    宛先キー タイプ 属性
属性を使用する homephone システム お客様の電話番号
テキストの使用 sf_object Contact
属性を使用する sf_fields Id,Name,Email,AssistantName,Mycar__c,
テキストの使用 sf_operation lookup

⑦問い合わせ属性の設定

  • SFから取得したID・名前をAmazon Connect上の問い合わせ属性として保存します。
宛先キー タイプ 属性
属性を使用する SFDCContact_cst_id 外部 id
属性を使用する SFDCContact_cst_name 外部 Name

⑧プロンプトの再生

  • テキスト読み上げ機能(アドホック)を選択
  • テキストの入力
$.Attributes.SFDCContact_cst_nameさん

⑨顧客の入力を取得する

  • 「先ほどお送りした、XXXXXXさまの車の修理、30分以内に現地にいけますか?」と読み上げ、顧客の「はい」を認識します。
  • テキスト読み上げ機能(アドホック)を選択
  • テキストの入力
先ほどお送りした、XXXXXXさまの車の修理、30分以内に現地にいけますか?
  • ブランチの設定でAmazon Lexを選択
  • Lexボット(STEP1の(3)で設定)を設定

⑩プロンプトの再生

  • テキスト読み上げ機能(アドホック)を選択
  • テキストの入力
$.Attributes.SFDCContact_cst_nameさん、修理受付、ありがとうございます。
それでは30分以内に現地かけつけ、よろしくお願します。詳細について、XXXXXXさまにお知らせいただきたいので、
このままお電話をおつなぎします。よろしくお願いします。

⑪電話番号への転送

  • 転送したい先の電話番号を設定します。

◆参考サイト

14
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?