【ハンズオン】Amazon ConnectとSORACOMボタンで自動コールシステムをつくる
ハンズオンの内容
SORACOM LTE-M Button powered by AWSを利用し、ボタンを押すとAmazon Connectから電話が掛かってくる仕組みを作成します。
ハンズオンの構成
本日の貸し出し機材
- SORACOM LTE-M Button powered by AWS(※ボタン貸出枠で参加の方)
参加者の持ち物
- Wifi に繋がるPC (貸出PCもありますので必要な方はお申し出下さい)
- AWSアカウント
- 会場で着信可能な携帯電話
- ボタンを押したら電話がかかってくる宛先となります
参加費用
無料
- 但しAWSの利用料金が数十円が発生します。
本ハンズオンの設定を残した場合に発生する費用
- 取得したAmazon Connect電話番号を削除せず残した場合、1日あたり0.1ドルの課金が発生します。
- AWS IoT 1-Clickに登録したデバイスを無効化あるいは削除せず残した場合、1ヶ月あたり0.25ドルの課金が発生します。
目次
- SORACOM LTE-M Button を AWS IoT 1-Click に登録する
- Amazon Connectのインスタンス作成
- Amazon Connectの電話番号取得
- Amazon Connectの問い合わせフロー作成
- AWS Lambda関数の設置
- AWS IoT 1-Clickのプロジェクト設定
- 動作確認
- チャレンジ:電話が掛かってきた際の問い合わせフロー作成
- お片付け
プログラム
1. SORACOM LTE-M Button を AWS IoT 1-Click に登録する
AWS IoT 1-Click へ LTE-M Button を登録する AWS マネジメントコンソールを開きログインした後、AWS IoT 1-Clickのコンソールを開きます。
AWS IoT 1-Click のコンソールから [デバイスの登録] をクリックします。
LTE-M Button の電池カバーを開けて DSN を AWS IoT 1-Click に入力し [登録] をクリックします。
LTE-M Button からのボタン押下を待ち受ける状態になります。 このタイミングで LTE-M Button のボタンを1回押してください。 (LED が赤点灯(= データ送信失敗)となった場合は、再度ボタンを押して下さい)
登録済みになりましたら [完了] をクリックします。
以下のようにデバイス一覧が表示されていれば登録成功です。
一覧に表示されている意味は以下の通りです。
- デバイス ID
- DSN と呼ばれる一意の番号です。 AWS IoT 1-Click 対応デバイスには SORACOM LTE-M Button の他に AWS IoT エンタープライズボタンといったものがありますが、それら全てにおいて一意になる番号です。
- タイプ
- デバイスの形状を表します。現在は
button
のみです。
- デバイスの形状を表します。現在は
- デバイスリージョン
- デバイスが管理されているリージョンです。現在のところ利用者はリージョンを選ぶことができず、オレゴン(us-west-2) 固定となります。
- 有効
- 有効 もしくは 無効 です。初期状態は 無効 です。 有効 は課金対象デバイスです。
- プロジェクト、配置
- ボタンに紐づいた機能(Lambda 関数)の状況です。初期状態は双方とも 未割り当て です。
- ヘルス
- ボタンの寿命です。
登録したボタンの右にある […] をクリックした後、[デバイスの有効化] をクリックします。 これでボタンが利用可能な状態になりました。
2. Amazon Connectインスタンスの作成
AWS マネジメントコンソールを開き、東京リージョンであることを確認後、Amazon Connectのコンソールを開きます。
初回アクセス時には以下のような画面が出ますので「今すぐ始める」をクリックします。
「Amazon Connect内にユーザを保存」を指定し、Amazon ConnectのインスタンスURLを入力します。 このURLは次章以降で開くコンソールのログインURLとなりますので、任意の名前を指定します。 入力が終わったら「次のステップ」をクリックします。
管理者の名前を決めて入力します。 自身のお名前とユーザ名・パスワード・電子メールアドレスを入力し、「次のステップ」をクリックします。 パスワードは大文字・小文字・数字を含み8文字以上とする必要があります。
本インスタンスで電話の発信・着信処理を行うかどうかの選択を行います。 両方にチェックを入れ、「次のステップ」をクリックします。
データストレージを指定します。 問い合わせフローのログやデータの保存先はご自身のAWSアカウントに紐付くS3バケットとなります。 デフォルトで問題ありませんので、そのまま「次のステップ」をクリックします。
確認画面が表示されます。確認し「インスタンスの作成」を選択します。
インスタンスの作成には1~2分程度の時間が掛かります。
作成が完了したら、「今すぐ始める」をクリックし、次章に進んでください。
3. Amazon Connect電話番号の取得
前章で指定したAmazon Connectインスタンスの開始画面に切り替わります。 「今すぐ始める」をクリックします。
電話番号の取得を行います。 「国/地域」からJapan(+81)を選択、タイプとして「Direct Dial」を選択すると、電話番号の欄に電話番号の候補が表示されます。 お好みの電話番号を選択し「次へ」をクリックします。
電話番号が取得できました。 発信のテスト画面が表示されますが、ここではスキップして問題ありません。
4. Amazon Connect問い合わせフローの作成
電話をかけた後、任意のメッセージを再生できるよう、問い合わせフローの作成を行います。 左側のメニューから「ルーティング」⇒「問い合わせフロー」を選択します。
問い合わせフローの一覧画面が表示されます。 「問い合わせフローの作成」をクリックします。
問い合わせフローの編集画面が表示されます。 今回は以下のようなフローを作成します。
説明
- 音声の設定 : 発話者を設定します(日本語の再生に必須です)日本語のデータは現在、男声(takumi)/女声(mizuki)の2種類です。
- プロンプトの再生 : 任意の文字列や音声データ(wav)を再生できます。
- 切断/ハングアップ : 電話を切ります。
まず、左側の一覧から「設定」⇒「音声の設定」を右側にドラッグし、開始エントリと線でつなぎます。 「音声の設定」をクリックし、日本語を選択、音声をMizuki/Takumiのどちらからか選びます。
続けて「操作」⇒「プロンプトの再生」をドラッグし、「音声の設定」と線でつなぎます。 「プロンプトの再生」を開き、テキスト読み上げ機能(アドホック)⇒「動的に入力する」を選択し、以下のように入力します。
さらに「終了」⇒「切断/ハングアップ」をドラッグし、「プロンプトの再生」と線でつなぎます。 最後にフロー名を入力し、「公開」ボタンをクリックします。
公開して良いかどうか表示されます。「公開」をクリックします。
公開済みになったことを確認します。 左側にある「追加のフロー情報の表示」をクリックし、表示される以下の情報をコピーしておきます。
- インスタンスID(“instance/”と”/contactflow/”の間の文字列)
- ARN情報(“contact-flow/”以下の文字列)
5. AWS Lambda関数の設置
SORACOM LTE-M Buttonが押された際にAmazon Connectを呼び出すプログラム(Lambda関数)を設置します。 Lambda関数を実行させる際、電話の発信元(Amazon Connectの電話番号)や電話の発信先(自身の携帯電話)の番号が必要ですが、それらの値は環境変数に与えます。 また、LambdaからAmazon Connectのインスタンスを呼び出せるよう、実行権限を付与します。
AWS マネジメントコンソールを開きログインした後、Lambdaのコンソールを開きます。
関数の作成をクリックします。
関数の作成画面が開きます。以下の情報を入力します。
- 作成方法:一から作成
- 関数名:任意の名前(callbuttonなど)
- ランタイム:Python3.7
- 実行ロール:基本的なLambdaアクセス権限で新しいロールを作成
続いて関数の編集画面が開きます。以下の設定を行います
- 関数コードのセクション
- コードエントリタイプ:コードをインラインで編集
- lambda_function:import jsonから始まる現在の設定をすべて消し、Lambda関数の内容にすべて置き換えてください。(コピーして貼り付けで可)
引き続き同画面で、環境変数値を入力します。電話の発信元や電話の発信先の番号などの入力になります。
- 環境変数のセクション
- 画像を参考にキーと値にそれぞれ以下の内容を入力
- FlowID : (ConnectのフローID。Amazon Connectダッシュボードにおいて「追加のフロー情報の表示」をクリック。ARNの値、contact-flow/の右側の値をペースト)
- InstanceID : (ConnectのインスタンスID。AWSコンソールからAmazon Connect、インスタンスエイリアスを選択。インスタンスARNの値、instance/の右側の値をペースト)
- YourMobilePhoneNumber : (自分の電話番号。発信先電話番号。国番号(日本は+81)から。空白、ハイフンなし。最初の桁を外す。090-1234-5678なら、+819012345678)
- YourConnectPhoneNumber : (Amazon Connectの電話番号。発信元電話番号。Amazon Connectダッシュボードにおいて「電話番号の表示」をクリック。国番号(日本は+81)から。空白、ハイフンなし。最初の桁を外す。)
引き続きLambdaにAmazon Connect実行権限を付与します。 同画面で以下操作をしてください。
IAMのページが別タブで開くので、ポリシーをアタッチしますをクリック。
検索欄に「connect」と入力し、「AmazonConnectFullAccess」を選択し、ポリシーのアタッチをクリック。
ロールにConnectのポリシー(権限)を付与しました。
Lambdaの画面に戻ります。 Lambdaの画面から動作を確認しましょう。関数への実行時パラメータとなるテストイベントを作成します。 画面右上、テストイベントの設定をクリック
開いた画面で以下入力します。
- イベント名:任意。TestClickButtonで良い。
- 入力欄:以下の内容をコピーして上書き。編集不要です。※このclickTypeの値によって処理が変化します。
{
"deviceInfo": {
"deviceId": "XXXXXXXXXXXXXX",
"type": "button",
"etc1": "無関係イベントの値は省略しています。"
},
"deviceEvent": {
"buttonClicked": {
"clickType": "SINGLE",
"reportedTime": "2018-11-09T16:29:40.474Z"
}
},
"placementInfo": {
"etc1": "無関係イベントの値は省略しています。"
}
}
入力したら作成をクリック。
画面右上の保存をクリックすると準備は完了です。
これでLambdaが動作すると電話がかかる、という形になります。
「テスト」をクリックすると、テストイベントを元に関数が実行されます。 設定がうまく行けば電話がかかってきます。 うまく行かない場合はエラーログが出力されています。
テストイベントを編集し、SINGLEとなっているclickTypeをDOUBLEなどに変えてテストを再度実行すると、電話口のメッセージが変わります。 余裕があれば試してみてください。
最後に画面上方にある「保存」ボタンをクリックして下さい。 以上で完了です。
6. AWS IoT 1-Clickのプロジェクト設定
AWS IoT 1-Clickプロジェクト設定
AWS IoT 1-Click コンソールから [管理] > [プロジェクト] を開いた後 [プロジェクトの作成] をクリックします。
プロジェクト名として任意の名前を入力します。
プレイスメントのテンプレート
プロジェクトのプレイスメントのテンプレートの定義画面に移ります。 デバイステンプレートの定義の箇所をクリックします。
「すべてのボタンタイプ」の箇所をクリックします。
続けて先程作成したLambda関数と紐付けます。以下の情報を入力します。
- デバイステンプレート名:任意の名前
- アクション:Lambda関数の選択
- AWSリージョン:(先程Lambda関数を作成したリージョン)
- Lambda関数:先程作成したLambda関数名
ここまで入力が完了したら、画面下方にある「プロジェクトの作成」をクリックします。
プロジェクトが作成されました。[プレイスメントの作成] をクリックします。
プレイスメント設定
続けてプレイスメントの設定を行います。 プレイスメントの設定で、登録したボタンのDSNコードと紐付けます。
プロジェクトの新しいプレイスメントでは以下のように設定した後 [プレイスメントの作成] をクリックします。
- デバイスのプレイスメント名:
button1
(任意の文字列) - [デバイスの選択] をクリック
- ボタンの一覧が表示されます。結び付けたいボタンをクリックします。
- プレイスメントの属性は特に編集することはありません
- 先に作成した「テンプレート」で設定した内容が引き継がれています
- 逆にここでテンプレートから引き継がれた内容を上書きすることも可能です
以上で設定は完了です。
7. 動作確認
ここまでの作業で AWS IoT 1-Click を通じて Amazon Connect経由で電話がかけられるようになりました。
ボタンを押すと、ご自身の携帯電話に電話が掛かってくるようになったでしょうか。
シングルクリック、ダブルクリック、長押しでメッセージが変わることを確認してください。
(※うまく動作しない方はスタッフまでお問い合わせ下さい)
8. チャレンジ:電話が掛かってきた際の問い合わせフロー作成
※時間に余裕がある方は以下の課題にもチャレンジしてみて下さい。
6章までの手順ではボタンを押すことで電話をかける、アウトバウンドコールの問い合わせフローを作成してみました。 逆に、Amazon Connectの電話番号に電話を受電した際の問い合わせフローを作成することができます。
以下のユニットなどを利用して、受電した際の問い合わせフローを作成してみましょう。
- プロンプトの再生:メッセージを再生する
- 顧客の入力を取得する:トーン信号の入力を要求し回答を得る
- 問い合わせ属性の設定:入力を基にキーに値を入れる
- AWS Lambda関数を呼び出す:Lambda関数を実行する
作成した問い合わせフローは、ルーティング⇒電話番号から電話番号を選択し、「問い合わせフロー/IVR」の欄で設定することで呼び出されます。
9. お片付け
最後にAWSの設定上の後片付けを行います。 全員が実施する部分と、ボタン貸出枠参加者のみ実施する部分がありますのでご注意ください。
Amazon Connect電話番号の削除
※ 参加者全員、この手順を実施してください。
手順において、Amazon Connectで電話番号を取得しました。 ただし、番号を取得したままにすると少額ですが毎日コストがかかることになります。 ここでは取得したAmazon Connectの電話番号を解放(リリース)します。
Amazon Connectダッシュボードにおいて、画面左から「キュー」を開きます。
今回作成したキューである、「Basic Queue」を選択します。
アウトバウンド発信者 ID 番号 に今回設定した番号が与えられているので、番号横の x ボタンを押して、番号の紐付け設定を解除します。保存します。
Amazon Connectダッシュボードにおいて、画面左から「電話番号」を開きます。
今回使用した電話番号にチェックをし、「リリース」をクリックします。
問題ありません。「削除」します。
番号一覧から今回使用した電話番号が削除されました。
これで電話番号が解放されました。次の手順に進んでください。 なお、電話番号がちゃんと解放されているか確認する場合は、Lambdaをテスト実行してみると良いでしょう。 電話番号が解放された後にLambdaを実行すると、以下のようなメッセージが出力されます。 No Resource Found. つまり電話をかけるためのリソースがありませんよ、というメッセージが出力されます。 このため、誤ってLambdaを実行しても電話はかかってきません。
AWS IoT 1-Click ボタンの設定解除
※ ボタン貸出枠で参加の方のみ、以下の手順を実施してください。
ボタン貸出枠の方は、貸与されたボタンとAWS IoT 1-Clickとの紐付けを解除する必要があります。 デバイスの登録解除をAWS IoT 1-Clickの画面から行います。
AWS IoT 1-Click のコンソールを開きます。リージョンがオレゴンになっていることを確認してください。 [管理] > [プロジェクト] とクリックした後、解除を行いたいデバイスが所属しているプロジェクトをクリックします。
[プレイスメント] から解除したいデバイスの […] をクリックした後に表示される [プレイスメントの編集] をクリックします。
デバイスが表示されている部分の [クリア] をクリックした後、[プレイスメントの更新] をクリックします。
これでデバイスとプレイスメントの割り当てが無くなりました。 [管理] > [デバイス] とクリックした後、解除を行いたいデバイスの […] をクリックした後に表示される [デバイスの登録解除] をクリックします。 最後に確認ダイアログの [登録解除] で解除が完了します。
※プレイスメントに割り当てられているデバイスは解除できませんので、プレイスメントから外してから行ってください。
一覧から対象デバイスが無くなれば解除完了です。 こちらでハンズオンは終了です。お疲れ様でした。
最後に
最後に貸し出ししたSORACOM LTE-M Buttonをスタッフに手渡してください。 お渡し頂くタイミングで、プレイスメントの割り当てが無くなっているかを確認させていただきます。