ヤマムギ

growing hard days.

*

Amazon Connectの新規作成からプッシュボタン入力と発信元電話番号をLambdaで処理するまで

   

とりあえずやりたいことはタイトルに書いたとおり、「電話をかけて、プッシュボタンに入力した内容と発信元の電話番号をLambdaで処理する」です。

Amazon Connect初体験から、Lambdaでの該当処理完了まで、調べながら1時間でできました。
やったことを書いておきます。

参考情報

先人の皆さま、ありがとうございます!

Amazon Connect インスタンス新規作成

まずはAmazon Connect インスタンスを新規に作成します。

「今すぐはじめる」をクリックしました。

Amazon Connectインスタンスを使用するリージョンを選択します。
東京リージョンを選択しました。

ID管理はAmazon Connectで管理することにしました。
管理画面のURLを決めます。
QuickSightと同じような感じですかね。

管理ユーザーの情報を入力しました。

着信、発信をするかどうかの設定です。
両方ありにしました。

データの保存先バケットと、ログの書き込み先のCloudWatch Logsの設定です。

設定内容が表示されるので確認して、インスタンスの作成をします。

セットアップが始まりました。
わくわくしますね。

作成できました!!

電話番号の取得

作成後、[今すぐ始める]をクリックすると、Amazon Connectの管理画面になりました。
デフォルトは英語ですが、日本語も選択できました。

電話番号の取得をしました。
Direct Dialを選択すると、050から始まる電話番号が選択できました。

Toll Freeを選択すると、0800から始まるフリーダイヤルの電話番号が選択できました。
今回はDirect Dialを選択しました。

お試しでかけてみました。
ちゃんと通話中になりました。

Lambdaの準備

とりあえずLambda関数が実行されたときのeventに、プッシュした数字と発信元の電話番号が渡されているところが見えればいいので、次のようなコードにしました。
処理の結果に基づいて、動的なメッセージを電話に返すこともあると思うので、サンプルとして固定の「ありがとうございます」をリターンしてます。

IAMロールは、AWS管理ポリシーの AWSLambdaBasicExecutionRoleだけが有効なロール(CloudWatchにログを書き込む権限のみ)を使用しました。
Lambdaの設定は以上です。

Amazon Connectマネジメントコンソールでの設定

マネジメントコンソールでAmazon Connectにアクセスすると、作成したインスタンスが表示されています。

アクセスURLをクリックすると、Amazon Connectのダッシュボードの画面でした。
インスタンスエイリアスをクリックすると、インスタンスの設定画面でした。

まずは、インスタンスの設定画面で作成したLambdaを有効にします。

左のナビゲーションペインで[問い合わせフロー]を選択しました。

下にスクロールすると、Lambda関数が選択できたので作成したLambd関数を追加しました。

Amazon Connectダッシュボードで問い合わせフローを作成

アクセスURLをクリックして、Amazon Connectダッシュボードのアクセスします。
ログイン画面になったので、インスタンス作成時に設定した管理ユーザーでログインしました。

[ルーティング]メニューの[問い合わせフロー]を選択して、[問い合わせフローの作成]をクリックして、問い合わせフローを新規に作成しました。

作成したフローはこちらです。

左のペインの[操作]や[設定]にブロックという機能パーツがあります。
今回使ったのは、[操作]と[設定]と[統合]です。

ログ記録動作の設定

インスタンス作成時のデータストレージで設定した、CloudWatch Logsにログを書き込むことを有効化している設定です。

音声の設定

音声を話すPollyの音声IDを指定します。
今回は日本語でMizukiさんを指定しました。

顧客の入力を保存する

プッシュで入力された値を保存します。

テキスト読み上げで入力したテキストは、電話をかけるとMizukiさんが発話してくれます。
桁数を6文字にしました。
(この先やりたいことの仕様で試してます)

AWS Lambda関数を呼び出す

Amazon Connectインスタンスに追加しているLambdaから対象のLambdaを選択しました。
プッシュされた数字(顧客の入力)は、「タイプ: システム」、「属性: 保存済のお客様の入力」でした。
宛先キーは input にしました。

もう一つパラメータを追加して、「タイプ: システム」、「属性: お客様の電話番号」を追加しました。
タイムアウトは最大の8秒にしました。
Lambdaは8秒でレスポンスを返さないといけないのですね。

プロンプトの再生

Lambdaの処理結果を電話でMizukiさんに発声してもらいます。

「タイプ: 外部」「属性: response_message」としています。
response_messageは、Lambdaでリターンしているキーです。

あと、一応エラー用のプロンプトも用意して、最後は切断としました。

最後に右上のメニューから[保存して発行]を実行しました。

電話番号への問い合わせフローの設定

[ルーティング]-[電話番号]を選択しました。

[電話番号の管理]で対象の電話番号をクリックします。

編集画面で作成した問い合わせフローを選択して保存します。

電話をかけてみる

想定どおりに動きました!!!

Lambdaの結果をCloiudWatch Logsで見てみます。

パラメータで設定した内容が、Parametersにあります。
発信元の電話番号はCustomerEndpointにもあるのですね。
ふむ。

これで着信とLambdaの基本動作は確認できたので、業務自動化を進めていきたいと思います!!


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「AWS認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS ,

  関連記事

名前解決してセッションマネージャが使えるようにVyOSのhost_name.pyを編集しました

発生したエラー セッションマネージャからこんなエラーが出力されました。 [cra …

JAWS FESTA 2019 Sapporo 参加&当日スタッフ&企業サポーターで!

2019年のJAWS FESTA は札幌です! 今回もありがたいことに、所属して …

EC2ユーザーデータからメタデータを取得してRocket.Chatで80ポートを使用する

Rocket.Chatのデフォルトポート番号は3000です。 80を使うようにす …

AWS Organizationsで新規メンバー登録したアカウントを組織から離して解約

2021年現在ではこの方法しかないと認識していますので書き残します。 そのうち新 …

CloudFormation StackSetsでOrganizations組織のアカウントに一気にIAMロールを作成した

Organizationsで管理している各アカウントにIAMロールを作成したい場 …

Amazon Location Service入門ワークショップ-マップの操作

関連記事 Amazon Location Service入門ワークショップの前提 …

AWS Client VPNを設定しました

ユーザーガイドのクライアント VPN の開始方法に沿ってやりました。 AWSクラ …

Microsoft TeamsのIncoming Webhooksを使ってAWS Lambda(Python)からFeedlyの記事を自動投稿する

Microsoft Teamsの検証を始めましたので、Slackで自動化している …

AWS CodeStarで静的webサイトのテンプレートプロジェクトを作成する

執筆環境の検討中です。 CodeCommitは使うつもりで、コミットしたときにE …

EKS「現在の IAM プリンシパルは、このクラスター上の Kubernetes オブジェクトにアクセスできません」

マネジメントコンソールでクラスターのオブジェクトを見ようと、リソースの名前空間や …