ヤマムギ

growing hard days.

*

LINEとAWSとTwilioとkintoneでBOTを作ってみるハンズオン (6) Twilioからの電話受付と登録処理

      2017/08/17

作るところ

電話がかかってきてTwilioで受け付けてStepFunctionsを起動するところを作ります。

これが最後です。

プログラムの解説

使うコードはGithub-yamamugi_handson_from_twilioにあります。

Lambda関数

  • Twilioからリクエストされる[‘param’][‘Digits’]でどのボタンがプッシュされたかを判定します。
  • 1が押されていない場合は再生音声に「申込を中止」を返します。
  • 1が押された場合は電話番号をStepFunctionsに渡して再生音声に「受付完了」を返します。

API Gateway 統合リクエスト

  • TwilioからのリクエストをJSON形式に変換します。

API Gateway 統合レスポンス

  • Lambdaの実行結果をXMLに変換します。

Twiml

  • 電話をかけてまず最初に流れる音声です。
  • Gatherでキー選択として、アクションをAPI GatewayのURLを指定しています。

Lambda関数の作成

AWSマネジメントコンソールでLambdaを開いて、[関数の作成]をクリックします。

何も選択せず、[一から作成]をクリックします。

何も選択せず、[次へ]をクリックします。

名前 : from_twilio
説明 : ヤマムギハンズオン Twilioで押された番号に対して処理
ランタイム : Python 3.6

コードエントリタイプは「コードをインラインで編集」を選択して、
こちらのコードを貼り付けます。

環境変数
* STATE_MACHINE_ARN : StepFunctionsのステートマシーンのARN
* LOG_LEVEL : DEBUG(ログを減らしたい場合は ERRORかINFOを設定します)

[既存のロールを選択]でLINEとAWSとTwilioとkintoneでBOTを作ってみるハンズオン (5) LINEからの投稿へ返信と登録処理 で作成したロール lambda_step_functions を選択します。

必要ないとは思いますが、念のためタイムアウトを5分にしておきます。
[次へ]をクリックします。

[関数の作成]をクリックします。

API Gatewayの作成

LINEとAWSとTwilioとkintoneでBOTを作ってみるハンズオン (5) LINEからの投稿へ返信と登録処理 で作成したAPI Gatewayを選択します。

[アクション] – [リソースの作成]をクリックします。

リソース名を from_twilio にして[リソースの作成]をクリックします。

作成したリソースを選択して[メソッドの作成]をクリックします。

GET を選択して「✓」をします。

統合タイプ : Lambda関数
Lambdaリージョン : ap-northeast-1
Lambda関数 : from_twilio

[OK]をクリックします。

[統合リクエスト]をクリックします。

[本文マッピングテンプレート]を展開して、[Content-Type]に application/json を入力して「✓」をクリックします。

[はい、この統合を保護します]をクリックします。

上記を右ペインに貼り付けます。
(Githubのrawからコピーすると項目のダブルクォーテーションが除去されてこの後エラーになるのでご注意ください。)

[保存]をクリックした後、左上の[メソッドの実行]リンクからメソッドの設定画面に戻ります。

次に[統合レスポンス]を設定します。

[本文マッピングテンプレート]を展開して、Content-Typeにすでにある application/json を「-」をクリックして削除します。

[削除]をクリックします。

[マッピングテンプレートの追加]から、application/xml を入力して、右ペインにこのXMLコードを貼り付けてください。

[保存]をクリックして、左上の[メソッドの実行]リンクからメソッドの設定画面に戻ります。

次に[メソッドレスポンス]を設定します。

200のレスポンスを展開して、右下のコンテンツタイプから application/json を「x」で削除します。

[レスポンスモデルの追加]から、 application/xml , Empty を追加します。
左上の[メソッドの実行]リンクからメソッドの設定画面に戻ります。

[アクション] – [APIのデプロイ]を選択します。

LINEとAWSとTwilioとkintoneでBOTを作ってみるハンズオン (5) LINEからの投稿へ返信と登録処理で作成したステージを選択します。

[ステージ]を選択してデプロイされたステージを展開します。
from_twilio – [GET]を選択して右ペインのURLを控えておきます。

Twilioの設定

Twilioコンソールにログインして #(電話番号)メニューで取得している電話番号をクリックします。

A CALL COMES INで[Webhook]を[Twiml]に変更します。
右の[+]をクリックします。

  • FRIENDLY NAME : from_twilio

Twimlのコードをコピーして貼り付けます、

action = のURLはAPI GatewayのURLに変更します。

[Create]をクリックします。

[保存]をクリックします。

※一度作ったTwiml Binは右上のデバッグアイコンからRuntimeメニューが現れるのでそこから、Twiml Binsで修正出来ます。

電話をかけて試してみます

それではTwilioの電話番号にかけてみます。

トライアル環境では
「Twilioをご利用いただきありがとうござます。アップグレードいただきますとこのメッセージは削除されます。どれかキーをプッシュしてください。」
とメッセージが流れますので、なんでもいいのでキーをプッシュします。

その後設定した
「お電話ありがとうございます。キャンペーンにお申し込まれる場合は 1 とシャープを。お申し込まれない場合はそのままお電話をお切りください。」が流れますので、[1]と[#]をプッシュします。

Slackにメッセージが電話のアイコンで出力されて、リンクをクリックすると、kintoneに作成されたレコードが編集モードで開きます。

[コール]ボタンをクリックすると、登録された電話番号に、サラリーマン川柳スマートフォン編がコールされて、SMSが届きます。
この[コール]ボタンから呼ばれるAPIは課金対象となるので運営側で用意しています。

作り方はこちらのLINEとAWSとTwilioとkintoneでBOTを作ってみるハンズオン~ラッキーコンテンツ手順~に書いていますので、課金してもいいよ、って方はぜひお試しください。

目次

(1)LambdaからSlackへ通知する1

(2)LambdaからSlackへ通知する2

(3)Lambdaからkintoneへレコードを登録する

(4)Step Functionsで複数のLambdaを実行制御する

(5)LINEからの投稿へ返信と登録処理

(6)Twilioからの電話受付と登録処理 ←今ここ

(7)ラッキーコンテンツ


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

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

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

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

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

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

 - event, study , , , ,

ad

ad

  関連記事

Developers Summit 2024「Kubernetesは怖くない!開発者のためのインフラトラブルシューティング入門」を見ました

高橋 あおいさん つくって、壊して、直して学ぶ Kubernetes入門という本 …

「Kansai WordPress Meetup@大阪『サイトの作り方 3種おさらい&祝☆誕生20周年』」に参加しました

WordPress Meetupにはじめて参加しました。 WordPressの勉 …

Alexa Skills Kit 最新アップデート(Alexa Day 2019 でのブログ)

以下は、気になったことのメモとか感想を書いています。 登壇者、発表者、主催企業な …

「実践AWSプログラミング in Osaka」に行ってきました

クラスメソッドさんの「実践AWSプログラミング in Osaka」に行ってきまし …

JAWS-UG CLI専門支部に初めて参加してIAM入門してきた

JAWS-UG CLI専門支部に初参加してきました。 会場は茅場町のコワーキング …

「JAWS-UG 名古屋 DR対策特集+LT」で発表しました

2021/3/29の「JAWS-UG 名古屋 DR対策特集+LT」で「ブログを大 …

「AWS re:Invent報告会 by Yappli」で機械学習を始めてみようという気になった

YappliさんとSpeeeさん合同のre:Invent報告会におじゃましました …

LINEとAWSとTwilioとkintoneでBOTを作ってみるハンズオン (5) LINEからの投稿へ返信と登録処理

作る部分 LINEからのメッセージを受けて各APIより返信し、StepFunct …

「コミュニティリーダーズサミット in 高知 2023初鰹編」に参加しました

始まりました! 今回のテーマは「旗を立てる ~Raise Your Flag~」 …

Java SE 7 Silver対策勉強をしながらメモ 2015/2/3

本日は継承。 眠すぎるのでちょっとだけ。 本当に少しだけでもいいから続ける。それ …