Amazon Connectの新規作成からプッシュボタン入力と発信元電話番号をLambdaで処理するまで
とりあえずやりたいことはタイトルに書いたとおり、「電話をかけて、プッシュボタンに入力した内容と発信元の電話番号をLambdaで処理する」です。
Amazon Connect初体験から、Lambdaでの該当処理完了まで、調べながら1時間でできました。
やったことを書いておきます。
目次
参考情報
先人の皆さま、ありがとうございます!
- Amazon Connect の使用開始(公式)
- Amazon Connect ~顧客入力の保存とLambda連携~
- [Amazon Connect] 超便利 Lambdaへのパーミッション追加がGUIからできるようになった(新機能)
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に、プッシュした数字と発信元の電話番号が渡されているところが見えればいいので、次のようなコードにしました。
処理の結果に基づいて、動的なメッセージを電話に返すこともあると思うので、サンプルとして固定の「ありがとうございます」をリターンしてます。
1 2 3 4 5 6 7 8 |
def lambda_handler(event, context): print(event) return { 'statusCode': 200, 'response_message': 'ありがとうございます' } |
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で見てみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
{ 'Details': { 'ContactData': { 'Attributes': {}, 'Channel': 'VOICE', 'ContactId': 'xxxxxxxxxxxxxxx', 'CustomerEndpoint': { 'Address': '+8180xxxxxxxx', 'Type': 'TELEPHONE_NUMBER' }, 'InitialContactId': 'xxxxxxxxxxxxxxxxxxxxxx', 'InitiationMethod': 'INBOUND', 'InstanceARN': 'arn:aws:connect:ap-northeast-1:xxxxxxxxxx:instance/xxxxxxxxxxxx', 'MediaStreams': { 'Customer': { 'Audio': None } }, 'PreviousContactId': 'xxxxxxxxxxxxxxx', 'Queue': None, 'SystemEndpoint': { 'Address': '+8150xxxxxxxx', 'Type': 'TELEPHONE_NUMBER' } }, 'Parameters': { 'input': '123456', 'number': '+8180xxxxxxxx' } }, 'Name': 'ContactFlowEvent' } |
パラメータで設定した内容が、Parametersにあります。
発信元の電話番号はCustomerEndpointにもあるのですね。
ふむ。
これで着信とLambdaの基本動作は確認できたので、業務自動化を進めていきたいと思います!!
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
CodeCommitリポジトリの復号化のCloudTrailログ確認
ユーザーガイドAWS Key Management Service と AWS …
-
EC2インスタンスの起動で、–cli-input-jsonと–cli-input-yamlを使いました
AWS CloudShellから実行しました。 JSON実行 [crayon-6 …
-
AWS CLIを使用したIAMロールの引き受けコマンドのメモ
よく忘れて調べるのでメモです。 公式のこちらAWS CLI を使用して IAM …
-
AWS Certificate Manager(ACM)メール検証をDNS検証の証明書に差し替えました
ブログの証明書 このブログの証明書の有効期限があと1週間です。 証明書はAWS …
-
WordPressの年ごとのブログ投稿数を調べるSQL
毎年年末に使いそうなのでメモです。 [crayon-674effcf104167 …
-
Pepperで撮影した写真をAmazon Rekognitionで分析してその結果をPepperがしゃべる ~(1)AWS編~
Pepperの機能を使えるところは使って、何かしたいなあと思ってまして。 目(カ …
-
AWS DeepLensセットアップの儀
AWS DeepLensのセットアップを開始します。 AWS DeepLensを …
-
Amazon Glacierのプロビジョニングされた迅速取り出し容量をなぜか購入しました
過去1年ぐらいのAWSコストをCost Explorerで見てまして、10/10 …
-
Amazon LinuxにAlfresco Community Editionをインストールする
ダウンロード準備 Alfresco公式サイトで、「エンタープライズコンテンツ管理 …
-
AWS Storage Gatewayボリュームゲートウェイを作成してWindowsから使用
ボリュームゲートウェイの作成 Storage Gateway作成メニューからボリ …