ヤマムギ

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認定クラウドプラクティショナー 改訂第3版」という本を書きました。

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

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

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

 - event, study , , , ,

ad

ad

  関連記事

「4年ぶりの大阪開催!! CMC_Meetup 大阪 Vol.4」に参加しました

4年ぶり開催のCMC_Meetup 大阪に参加しました。 コラボレーションスペー …

Lotusphere 2010に行ってきました

Lotus Technical Award 2009 for Best Arch …

「Meguro.dev #1 」でモブプログラミングを体験してみました

「AWSの各サービスを道具としてアプリケーション開発を行うデベロッパーのための新 …

「Serverless Days Tokyo 2023 サーバーレスで負荷試験を行う必要性と実践的プラクティスの紹介」を見ました

2023/9/23にServerless Days Tokyo 2023に参加し …

「JP_Stripes Tokyo Vol.7 Stripe at Doorkeeper and MakeLeaps」で受付をしました

全編英語でJP_Stripes(Stripeの勉強会)の開催がありまして、受付を …

「Rによる機械学習」に参加しました

異業種データサイエンス研究会を主宰されている井伊さんが開催された「Rによる機械学 …

Developers Summit 2018 「Building Real-time Application With AWS AppSync 〜GraphQLの始め方〜」を聞きました

以下は、思ったことや気になったことをメモしていますので、必ずしも登壇者の発表内容 …

DevLOVE関西「プログラミングを楽しく続けるための健康Hack」に行ってきました

DevLOVE関西「プログラミングを楽しく続けるための健康Hack」に行ってきま …

Manabees Drone Experience at.OSAKA VOL.5(ドローン飛行イベント)に行ってきました

ドローン飛行イベントなるものがDoorkeeperに出てたので行ってきました。 …

「GCPUG Tokyo Container Builder Day February 2018」に行ってきました

GCPUGは神戸以来の2回目で参加させていただきました。 申し込もうかと思ったら …