ヤマムギ

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

  関連記事

実録 JAWS DAYS 2017 ~RoadTrip,スタッフ,ハンズオンメンターで参加しまして~

今年もJAWS DAYSにいってまいりました。 RoadTripの話 去年に引き …

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

今日から練習問題を再確認。 ひと通りテキストを終えた安心感からかイージーミスが連 …

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

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

Developers Summit 2024「クラウドのポテンシャルを引き出す鍵 – ポータビリティと分散コンピューティングの実践」を見ました

アカマイ・テクノロジーズ合同会社 シニア・テクニカル・ソリューション・アーキテク …

Cybozu Circus 2021で「 社長・青野のテレワーク術を大公開! 組織の一体感を高める「プロセス公開型マネジメント」って?」を見ました。

サイボウズさんのCybozu Circus 2021大阪グランフロントに行って、 …

「JAWS-UG名古屋 re:Inventに行ったつもりのLT大会&忘年会」でLTしてきました

大阪から東京へ自転車で向かう初日に名古屋でJAWS-UGでLT大会に参加しようと …

ヤマムギ vol.8 (AWS)EC2でLinuxサーバー構築ハンズオン 手順

ヤマムギとは from Mitsuhiro Yamashita 「AWSではじめ …

Salesforce WorldTour Tokyo 2018で、つながる世界の熱気を感じた

去年はたしか芝公園の方だったかと思いますが、今年はビッグサイトです。 数千人レベ …

「JAWS-UG 初心者支部#35 LT大会!!」に参加しました。

オンライン開催でした〜 AWS AthenaとFluentdでログ集約基盤構築 …

Developers Summit 2024 「アーキテクチャから学ぶKubernetesの全体像」を見ました

株式会社スリーシェイク bells17さん Kubernetesの基盤となるCo …