SORACOM UG 信州 #6 2019/3/30
ハンズオンの内容
SORACOM LTE-M Button powered by AWS(通称:あのボタン)を使い、ボタンを押したらTwilio経由で電話が掛かってくる仕組みを作成します
(参考:SORACOM Buttonで会議脱出ボタンをつくる)
SORACOM LTE-M Button for Enterprise(通称:しろボタン)を使う場合はこちらです
ハンズオンの構成
本日の貸し出し機材
- SORACOM LTE-M Button powered by AWS(※あのボタン貸出枠で参加の方)
お客様の持ち物
- Wifi に繋がるPC
- クレジットカード(AWSアカウント作成に必要になります)
- 会場で着信可能な携帯電話
- AWSのアカウント作成時に電話音声による認証が必要となります(非通知からの電話に対する着信拒否設定の解除が必要)
- Twilioのアカウント作成時にSMSによる認証が必要となります
- ボタンを押したら電話がかかってくる宛先となります
参加費用
無料(ただしAWSの利用料金、数円が発生します)
目次
- AWS アカウントの作成
- SORACOM LTE-M Button を AWS IoT 1-Click に登録する
- Twilio アカウントの作成
- Twilio セットアップ
- Twilio Studio Flowの作成
- AWS Lambda関数の設置
- AWS IoT 1-Clickのプロジェクト/プレイスメント設定
- 動作確認
- お片付け
プログラム
1. AWS アカウントの作成
(※既にアカウントをお持ちの方は読み飛ばして下さい)
AWS アカウント作成の流れ (AWS のページに飛びます) から進み作成してください。
アカウント作成時のポイント
電話音声による認証が必要となります
「非通知」からの着信となるため、必要ならば非通知着信が可能になるようにしてください
AWSサポートプランについて
理由がない限り「ベーシックプラン」を選択してください。それ以外のプランは費用がかかります
2. SORACOM LTE-M Button を AWS IoT 1-Click に登録する
AWS IoT 1-Click ではボタンと Lambda 関数を結びつける概念として「プレイスメント」と「テンプレート」そして「プロジェクト」が存在します。これらを全て作成したうえで、それぞれボタンと Lambda 関数に結び付けていきます。
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 関数)の状況です。初期状態は双方とも 未割り当て です。
- ヘルス
- ボタンの寿命です。
登録したボタンの右にある […] をクリックした後、[デバイスの有効化] をクリックします。
これでボタンが利用可能な状態になりました。
3. Twilio アカウントの作成
(※既にアカウントをお持ちの方は読み飛ばして下さい)
TwilioはAPIによってコントロールできる電話サービスです。
登録することで電話番号を取得でき、その電話番号での受発信がAPIでコントロールできます。今回は発信のコントロールを行います。
アカウントの取得
Twilioのページを開き、無料サインアップのアイコンをクリックします。
利用規約に同意します。
氏名・メールアドレス・パスワードの情報を入力します。
パスワードは14桁以上必要となります。
身元検証用に携帯電話の電話番号の入力を行います。
携帯電話番号は最初のゼロを取り、80xxxxxxxx のように入力して下さい。
なお、トライアル(無料)アカウントではここで登録した電話番号のみに発信が可能であるため、今回のハンズオンで電話を着信したい携帯電話の番号を入力して下さい。
(有料アカウントにアップグレードすることで任意の番号に発信可能となります)
入力した携帯電話に対してSMSで検証コードが送信され認証が完了です。
チュートリアル画面が出ます。今回は「Skip to dashboard」をクリックしてください。
トップ画面が表示されます。
4. Twilio セットアップ
電話番号の取得
Twilioで利用できる電話番号を取得します。
電話番号の取得画面にアクセスします。
「最初のTwilio電話番号を取得」をクリックし電話番号を取得します。
気に入らない場合は選び直しが可能です。
なおトライアルアカウントで取得可能な電話番号は050のIP電話番号のみとなります。
電話番号が取得できました。終了ボタンをクリックします。
作成した電話番号はメモ帳等にコピーしておきます。
クレデンシャル情報の確認
AWS側からAPIで呼び出しできるよう、クレデンシャル情報を確認しておきます。
Twilioの設定画面にアクセスします。
ライブクレデンシャルの ACCOUNT SID と AUTH TOKENの内容をメモ帳等にコピーしておきます。この情報がLambda関数からの呼び出しに必要になります。
5. Twilio Studio Flowの作成
電話を受けた後、任意のメッセージを再生できるよう、Studio Flowの作成を行います。
Studio Dashboardにアクセスし、Create a flowをクリックします。
続けてフローの名称を入力します。
作成方法はStart from scratchとします。
下のようなフロー作成画面が開きます。
右側のWIDGET LIBRARYから、”Make Outgoing Call” と “Say/Play” のウィジェットをドラッグ、フローを繋げて以下のように設定します。
また、Say/Playのウィジェットでは読み上げるメッセージと言語(Japanese)を設定します。
作成できたら、右上にあるPublishボタンを押して完成です。
Studio Dashboardに戻りますので、作成したフローのSIDをメモ帳等にコピーしておきます。
6. AWS Lambda関数の設置
SORACOM LTE-M Buttonが押された際にTwilioを呼び出すプログラム(Lambda関数)を設置します。
(※今回はハンズオン時間の関係上、作成済の関数をアップロードして設置します)
Lambda関数一式(zip)をダウンロードしてください。
AWS マネジメントコンソールを開きログインした後、リージョンをオレゴンに変更し、Lambdaのコンソールを開きます。
関数の作成をクリックします。
関数の作成画面が開きます。以下の情報を入力します。
- 作成方法:一から作成
- 関数名:任意の名前
- ランタイム:Python3.7
- 実行ロール:基本的なLambdaアクセス権限で新しいロールを作成
続いて関数の編集画面が開きます。以下の設定を行います
- 関数コードのセクション
- コードエントリタイプ:.zipファイルをアップロード
- 関数パッケージ:アップロードボタンをクリックし、先程ダウンロードしたzipファイルを指定
- 基本設定のセクション
- タイムアウト時間を 3秒⇒10秒 に変更
- タイムアウト時間を 3秒⇒10秒 に変更
最後に画面上方にある「保存」ボタンをクリックして下さい。
以上で完了です。
7. AWS IoT 1-Clickのプロジェクト・プレイスメント設定
AWS IoT 1-Clickプロジェクト設定
AWS IoT 1-Click コンソールから [管理] > [プロジェクト] を開いた後 [プロジェクトの作成] をクリックします。
プロジェクト名として任意の名前を入力します。
プレイスメントのテンプレート
プロジェクトのプレイスメントのテンプレートの定義画面に移ります。
デバイステンプレートの定義の箇所をクリックします。
「すべてのボタンタイプ」の箇所をクリックします。
続けて先程作成したLambda関数と紐付けます。以下の情報を入力します。
- デバイステンプレート名:任意の名前
- アクション:Lambda関数の選択
- AWSリージョン:(先程Lambda関数を作成したリージョン)
- Lambda関数:先程作成したLambda関数名
プレイスメントの属性
引き続き画面下の方にあるプレイスメントの属性に以下の情報を入力します。
属性の名前 | デフォルト値 |
---|---|
twilio_sid | (TwilioのACCOUNT SID) |
twilio_token | (TwilioのAUTH TOKEN) |
twilio_flowid | (Twilio Studio FlowのSID) |
twilio_number | (Twilioで取得した電話番号 +8150xxxxxxxx の形式) |
twilio_callto | (電話の発信先:Twilioに登録したご自身の携帯電話番号 +81xxxxxxxxxx の形式) |
ここまで入力が完了したら「プロジェクトの作成」をクリックします。
プロジェクトが作成されました。
[プレイスメントの作成] をクリックします。
プレイスメント設定
続けてプレイスメントの設定を行います。
プレイスメントの設定で、登録したボタンのDSNコードと紐付けます。
プロジェクトの新しいプレイスメントでは以下のように設定した後 [プレイスメントの作成] をクリックします。
- デバイスのプレイスメント名:
button1
(任意の文字列) - [デバイスの選択] をクリック
- ボタンの一覧が表示されます。結び付けたいボタンをクリックします。
- プレイスメントの属性は特に編集することはありません
- 先に作成した「テンプレート」で設定した内容が引き継がれています
- 逆にここでテンプレートから引き継がれた内容を上書きすることも可能です
以上で設定は完了です。
8. 動作確認
ここまでの作業で AWS IoT 1-Click を通じて Twilio経由で電話がかけられるようになりました。
ボタンを押すと、ご自身の携帯電話に電話が掛かってくるようになったでしょうか。
(※うまく動作しない方はスタッフまでお問い合わせ下さい)
9. お片付け
※ あのボタン貸出枠で参加の方は、ボタン返却のため以下の手順の実施をしてください。
AWS IoT 1-Click のコンソールを開きます。リージョンがオレゴンになっていることを確認してください。
[管理] > [プロジェクト] とクリックした後、解除を行いたいデバイスが所属しているプロジェクトをクリックします。
[プレイスメント] から解除したいデバイスの […] をクリックした後に表示される [プレイスメントの編集] をクリックします。
デバイスが表示されている部分の [クリア] をクリックした後、[プレイスメントの更新] をクリックします。
これでデバイスとプレイスメントの割り当てが無くなりました。
[管理] > [デバイス] とクリックした後、解除を行いたいデバイスの […] をクリックした後に表示される [デバイスの登録解除] をクリックします。
最後に確認ダイアログの [登録解除] で解除が完了します。
※プレイスメントに割り当てられているデバイスは解除できませんので、プレイスメントから外してから行ってください。
一覧から対象デバイスが無くなれば解除完了です。
こちらでハンズオンは終了です。お疲れ様でした。
最後に
最後に貸し出ししたSORACOM LTE-M Buttonをスタッフに手渡してください。
お渡し頂くタイミングで、プレイスメントの割り当てが無くなっているかを確認させていただきます。