1
/
5

Amazon ConnectとCloud Automatorを接続して、電話からAWSを操作してみる(Advent Calendar 9日目)【CEOブログより】

★この記事は「Cloud Automator Advent Calendar 2017」の 12/9 日分のエントリーになります

こんにちは、大石です。

みなさんAWSのサービスは何がお好きですか?
いろいろありますが、私が今一番エキサイトしながら触っているのが「Amazon Connect」です。電話もAWSでできちゃうんです!
2008年当時、私たちはAWSが出てきたので「サーバー購入禁止令」を引きましたが、今度はConnectのおかげて「電話購入禁止令」が出せそうです!
このAmazon Connect、「コンタクトセンターのクラウドサービス」と銘打たれていますが、コンタクトセンターだけでなく様々なアプリケーションとの連携も可能です。今日は「Cloud AutomatorとAmazon Connectとを接続することで、電話によるAWSの操作にも使える」ということを試してみたいと思います。

Cloud Automator側の準備

(何でも良いのですが)Cloud Automatorのジョブを作ります。

トリガーは「HTTP」を選びます。
アクションは今回は「EC2インスタンスを起動」を選んでみましょう。


ジョブを作成すると、このジョブ専用のエンドポイントが作成されます。
ジョブの一覧から「詳細」をクリックして

以下の画面にある「トリガー」のURLと「アクセストークン」を記録しておきます。


Lambdaの準備


次に、 電話のボタンが押された際に今作成したCloud AutomatorのジョブをHTTP(S)経由で呼ぶLambdaを用意します。

Lambdaのコンソールから requestCaJob という名前でLambdaを作成します。


この様なコードになります。コード中のURL, 認証情報(アクセストークン)は、先ほどCloud Automatorで作成したジョブで生成されたものになります。

なおこのブログにはコードブロックの定義がないので、Lambdaのコードはまさかのスクリーンショットです。昔はコードといえば雑誌を見ながら手で打ち込んだものです・・・

Connectから呼ぶだす際にLambdaのARNが必要となります(Lambdaのコンソールの一番右上です)。これを記録しておきましょう。

Connectから呼び出せるように、今作成したLambdaに権限を付与します(ドキュメントはこちら)。AWS CLIがある環境から、以下の通り実行します。

aws lambda add-permission –function-name function:(Lambda関数名。今回の例ではrequestCaJob) –statement-id 1 \–principal connect.amazonaws.com –action lambda:InvokeFunction –source-account (AWSアカウントNo) \–source-arn (ConnecctのARN。Connectの管理画面ではなくAWSのコンソールから「インスタンスARN」が取得できます)

Amazon Connectの準備

次に、Amazon Connectをセットアップします。


(なぜか本稿執筆時点2017/12/9 では日本の番号が取得できないようです。以前は取れていたので、一時的な問題かと考えられます。今回は以前から取得していた番号で試しました)

問い合わせフローを作る


いよいよ本丸の「問い合わせフロー」です。Connectの管理画面の「ルーティング」から「問い合わせフロー」を選択して、「問い合わせフローの作成」をクリックします。

かかってきた電話番号を確認する


まずはじめに、かかってきた電話番号が、Cooud Automatorの操作を許可してよい番号かどうかを確認します。

「ブランチ」の「問い合わせ属性を確認する」をドラッグドロップで持ってきます。
エントリポイントの「開始」からドラッグして、「問い合わせ属性を確認する」と接続します。

「問い合わせ属性を確認する」のキャプション部分をクリックして設定画面に入り、電話番号のチェック条件を入力します。

番号が一致していれば次に進みますが、一致していなければブチっと切ってしまいましょう。遠慮はいりません。「切断/ハングアップ」をドラッグ&ドロップして、「一致なし」と接続します。


音声の設定を行う

電話番号の認証がOKでしたら、いよいよ音声案内です。「設定」から「音声の設定」を配置して、先ほどの「問い合わせ属性を確認する」の「=」の場合と接続します。


音声のデフォルトがJoannaになっています。けしからんですね。日本人であれば安定の「Mizuki」さんに変えましょう。これまでと同様に「音声の設定」をクリックして「日本語」から「Mizuki」を選択します。


ボタン入力を受け付ける


アナウンスを流してから、プッシュしてもらいたいと思います。「操作」から「顧客の入力を取得する」を配置して「音声の設定」の「成功」とつなぎます。

「顧客の入力を取得する」をクリックすると、話す内容を設定できます。ここで「テキスト読み上げ機能」を選んで、テキストを入力します。


更にボタンをプッシュしたときの分岐を作ります。「別の条件の追加」を押すと「オプション」という項目が現れます。ここに今回は「1」を入れます。


Lambdaを呼び出す


「1」が押された場合の処理として、Lambdaを呼び出しましょう。「統合」から「AWS Lambda関数を呼び出す」を配置して、「Pressed 1」と接続します。「AWS Lambda関数を呼び出す」をクリックして、「関数のARN」というところに、先ほど作成したLambda関数のARNを入力します。


終了


Mizukiさんに「処理しました」とお話ししてもらって終了しましょう。「操作」から「プロンプトの再生」を選んで配置し、接続します。


最後に


Connectのフローでは、条件分岐は必ずどこかと接続されている必要があります。「顧客の入力を取得する」の例外も、プロンプトを再生して切断まで繋げてしまいます。


デプロイ


このフローを環境に適用しましょう。「保存して発行」を押すと、環境へのデプロイが行われます。(保存だけの場合は、環境には適用されません)


電話番号とフローのひもづけ


Connectの管理画面にある「ルーティング」の「電話番号」にいき、今回有効にしたいフローの電話番号をクリックします
「問い合わせフロー/IVR」を、今つくったフローに変更します。


試してみる

これで準備が整いました!
さっそく電話をかけてみましょう。
・・・おお!あのEchoで聞き慣れたMizukiさんの声がします!

案内の通り1を押すと「インスタンスを起動します」というMizukiさんのメッセージと共に無事にインスタンスが起動しました!
(Cloud Automatorのジョブ画面から「ログ」を見ると、HTTPで呼び出されたかどうかが確認できます)


Cloud AutomatorではジョブのトリガーとしてHTTPを使うことができますので、電話をはじめとする様々なアプリケーションと簡単に連携し、手軽にAWS運用を自動化することができるようになる、ということがおわかり頂けたのではないかと思います。
ぜひみなさんもCloud AutomatorでAWSの自動化にチャレンジしてみてください!

株式会社サーバーワークスでは一緒に働く仲間を募集しています

今週のランキング