簡単にコールセンター!IoT Buttonをポチるとamazon connectから自動アウトバウンドコールがやってくる!

By |7月 30, 2018|AWS, |


こんにちは!うだるような暑さな毎日。
皆様どうお過ごしでしょうか。彦部です。

先日オフィスをぷらぷらしていたところ、うちのぶちょーから手招きされました。
何やら部のロッカーをごそごそ。なんかくれるんかな( *´艸`)ワクワク
そして中から取り出し手渡されたのがコイツです。

ボタン…?

ボタン…?

「これを押してAmazon connectからアウトバウンドコールをかけさせる仕組みを調べて」
あー。ふむふむ、なるほど。家の冷蔵庫が故障したときなんかに、電話でお知らせしてくれてそのまま修理を依頼できたら楽ちんだなあ。ってか、Amazon connectってなんぞや?

「Amazon Connect」の、コールセンターを変える「破壊力」
すごい。。確かに破壊力ぱない。。一日あればコールセンター作れそうやん!
これは熱いぞ~🔥

と、いうわけで、今日のテーマはこちら!

「AWS IoT Buttonを使ってAmazon Connectから電話を掛けさせる」

図にするとこんな感じ↓

Amazon Connectテ゛モ-004

準備するもの:
・AWSアカウント
・AWS IoT Button
・受電できる端末
(2台あると「もしもし~」「はいはい」的な一人芝居も試せて楽しいです)

手順:
1.AWS IoT Buttonの設定
2.Amazon Connectの準備
3.架電しAmazon Connectのフローを実行するLambda関数を作成
4.AWS IoT 1-ClickからLambda関数呼び出し
5.あとはボタンをぽちっ。

 

1.AWS IoT Buttonの設定

まずはこちらをまんまやってみてください。話はそれからです↓↓
AWS IoT Enterprise Button試してみたらホンマに簡単にLambda関数を実行できた

とても丁寧に解説されており、私も大変助かりました。お世話になりました。
と、無事「ボタンクリック」→「SMS受信」ができたらもうお察しかと思います。
そう、このデバイステンプレートの編集時、アクションとして「SMSを送信する」と選んだところを、「Lambda関数の選択」を選べば良いのです。
現段階ではまだLambda関数を作ってないのでとりあえずこのままそっとしておきましょう!

2.Amazon Connectの準備

いやいや、コールセンターをそんな簡単に作れるもんかいゞ( ̄∇ ̄)ビシッ っとも思ったのですが…

確かに一日で作れる!

インバウンドのフロー作成はこちらにハンズオン資料がありました。

Amazon Connect ハンズオン初級編
概要説明や初期設定も含め、一通りのAmazon Connect立ち上げの手順が説明されているので助かります。初めて立ち上げる方は、まずこれをやってみて基本的なAmazon Connectの仕組みを理解してください。
なお、他にも”やってみた”サイトはありましたが、こちらのサイトはAWS Japan自身が提供している資料なのでお勧めです。
最終的に電話をかけてみて、自分が設定したセリフをMizukiさん(TakumiさんとMizukiさんが選べる)が喋ってくれるのをきくと、なかなか感動しますよ!

さて、ここまでできたらベースは整いました!アウトバウンド用のフローを作成してみましょう。

タイプは「問い合わせフロー」なので要注意!「アウトバウンドウィスパー」にしてしまうと動きません!

タイプは「問い合わせフロー」なので要注意!「アウトバウンドウィスパー」にしてしまうと動きません!

先ほどのハンズオン資料にフローの作り方は書いてありますので詳しい説明は控えますが、
今回は架電し、修理依頼を行う場合は「1」を押してもらい、オペレーターに接続するフローにしました。

3.架電しAmazon Connectのフローを実行するLambda関数を作成

インバウンドについては結構サイトもあったのですが、一方アウトバウンドについてほとんど見当たらず、苦戦しました💦
調べたら、アウトバウンド用のAPIの一般利用可になったのはつい最近のようですね(Mar 30, 2018とのこと)。
そんな中、大変参考にさせてもらったのがこちらのサイト。
Amazon Connect Outbound ContactのPreview版を試してみる

まずはLambdaを開いて関数を作ります。
Lambda
からの↓

関数の作成
からの↓

「一から作成」を選択。こんな感じ。

「一から作成」を選択。こんな感じ。

なお、ロールですが、先ほどの参考サイトによると、
権限
とのこと。今回はこれ専用のロールを作ってみました。
「IAM」→「ロール」→「ロールの作成」→このロールを使用するサービスとして「Lambda」を選択
ポリシーも作成
ポリシーの作成

作ったロールを先ほどのLambda関数作成画面の「既存のロール」に設定します。
よし!ではいざコーディング!

exports.handler = async (event) => {
    
    // import entire SDK
    var AWS = require('aws-sdk');

    var connect;
    // create amazon connect object
    // リージョンはシドニー。まだamazon connectで東京は選択できない。
    connect = new AWS.Connect({apiVersion: '2017-08-08', region:"ap-southeast-2"});

    // create API request parameter
    var params = {
      ContactFlowId: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      // 今回かける先の電話番号は引数で設定
      DestinationPhoneNumber: process.env.PHONENUMBER,
      // amazon connectのコールセンターのインスタンスID
      InstanceId: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      // かける元の電話番号
      SourcePhoneNumber: "+8150XXXXXXXX"
    };
 
  // call API with parameter
  console.log("いざキック!");
  var calling = connect.startOutboundVoiceContact(params, function(err, data) {
    if (err) {
      console.log(err);
    } else {
      console.log("無事終了");
    }
  });
  return calling;
};

引数の説明:
ContactFlowId: 前項で作った問い合わせフローのページにありましたね。(下図参照)
DestinationPhoneNumber: 受電する用の電話番号。環境変数としてセットできるようにしてみました。こんな感じで、今回ベタで書いちゃっているところも用途に応じて環境変数としてセットできます。
環境変数
InstanceId:これも問い合わせフローのページに。(下図参照)
SourcePhoneNumber:Amazon Connectで取得した架電用電話番号をセットします。

青いラインがInstanceId、赤いラインがContactFlowId

青いラインがInstanceId、赤いラインがContactFlowId

さて、ではテスト。
受電
おお~。鳴ったーーー!!
ちゃんとMizukiさんの声をきいて、設定した言葉が喋られているのを確認してみてくださいね♪

4.AWS IoT 1-ClickからLambda関数呼び出し

最後の作業!先ほどのLambda関数をIoT 1-Clickに設定。

Lambda関数をI-clickで呼び出し

5.あとはボタンをぽちっ。

( *´艸`)

 

いかがでしたでしょうか?
これは実に使えそうですよね。
ってか、何より楽しい◎

次回はさらにこれをバージョンアップ!

Salesforce Service Cloudと連携して、アウトバウンドでのオペレーションをSalesforce Service Cloud上でできるようにします。
更に、AWS 1-Clickボタンを押されたタイミングでケースのレコードを作成。
アウトバウンドコールがオペレーションに繋がる頃には、既に該当するケースレコードが作成されているようにしたいと思います。
乞うご期待!

hiko

About hiko

営業部を裏で支える人。 salesforceのカスタマイズを長くやってきました。 最近はうちの製品であるenebuarと、IoTに向き合い中。 腰が痛くならない良質な椅子に巡り逢いたい。