SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
AWSとTwilioでお手軽会員登録システムを作った話
Report
Toru Tamura
Follow
Internet Engineer
Sep. 14, 2020
•
0 likes
•
186 views
1
of
17
AWSとTwilioでお手軽会員登録システムを作った話
Sep. 14, 2020
•
0 likes
•
186 views
Download Now
Download to read offline
Report
Internet
2020.09.12のJAWS SONIC 2020登壇したときの資料です。
Toru Tamura
Follow
Internet Engineer
Recommended
2018年からコンテナはじめませんか?
晋也 古渡
801 views
•
62 slides
AWS re:Invent2016参加者LT会 | AWS re:Invent2016で見た新芽と収穫の話
SORACOM,INC
2.3K views
•
32 slides
Icdp的re:invent2016 recap
Takuya Tachibana
459 views
•
20 slides
[re:cap会津]JAWS DAYS 2017の裏側
Takuya Tachibana
558 views
•
30 slides
[クラウドお遍路]田舎案件でのAWS活用術
Takuya Tachibana
1.9K views
•
41 slides
Aws solution
takashinarikawa
36 views
•
20 slides
More Related Content
What's hot
AWS Startup Tech Lightning Talks 2015 Summer at dots.
Eiji Shinohara
2.3K views
•
19 slides
JAWS DAYS 2016 ランチセッション
Tetsuya Mase
2.1K views
•
30 slides
【Alexa】スキル内課金でチャリンチャリンしてみた
虎の穴 開発室
126 views
•
21 slides
20181026 Backlogで改善するプロジェクト管理
Masaru Ogura
2.6K views
•
20 slides
AWS IoT Eventsで遊んでみた
Ken'ichirou Kimura
412 views
•
25 slides
Cloud runのオートスケールを検証してみる
虎の穴 開発室
821 views
•
15 slides
What's hot
(11)
AWS Startup Tech Lightning Talks 2015 Summer at dots.
Eiji Shinohara
•
2.3K views
JAWS DAYS 2016 ランチセッション
Tetsuya Mase
•
2.1K views
【Alexa】スキル内課金でチャリンチャリンしてみた
虎の穴 開発室
•
126 views
20181026 Backlogで改善するプロジェクト管理
Masaru Ogura
•
2.6K views
AWS IoT Eventsで遊んでみた
Ken'ichirou Kimura
•
412 views
Cloud runのオートスケールを検証してみる
虎の穴 開発室
•
821 views
AWS Elemental MediaConvert で動画変換
虎の穴 開発室
•
4.5K views
CMC_Meetup in 京都 Vol.2「キャラクターマーケティングがわりとうまくいった話」
Ichiro Tsuji
•
702 views
AWSで画像認識をやってみる~DL3分クッキング~
Ken'ichirou Kimura
•
219 views
Cloud9のはじめかた
Koichiro Oki
•
405 views
渋谷モノ系ミートアップ Watanabe p
Noboru Watanabe
•
2.8K views
Similar to AWSとTwilioでお手軽会員登録システムを作った話
Twilioと山下と学び
Mitsuhiro Yamashita
634 views
•
39 slides
やってみようAWS IoT (ROS Japan UG #44 LT大会)
Seiya Shimizu
908 views
•
10 slides
20200912 JAWS SONIC 2020 Opening
Typhon 666
381 views
•
13 slides
JAWS-DAYS 2015、AWSサミット 2015 報告(四国スタッフと最新動向について)
Yukihito Kataoka
2K views
•
34 slides
スモールスタートで始めよう!IoT/AIでデジタルトランスフォーメーションを加速する
Ichiro Tsuji
583 views
•
48 slides
IoTにおけるクラウドインフラからサーバサイドまでの概要的な話
Terui Masashi
3.8K views
•
15 slides
Similar to AWSとTwilioでお手軽会員登録システムを作った話
(20)
Twilioと山下と学び
Mitsuhiro Yamashita
•
634 views
やってみようAWS IoT (ROS Japan UG #44 LT大会)
Seiya Shimizu
•
908 views
20200912 JAWS SONIC 2020 Opening
Typhon 666
•
381 views
JAWS-DAYS 2015、AWSサミット 2015 報告(四国スタッフと最新動向について)
Yukihito Kataoka
•
2K views
スモールスタートで始めよう!IoT/AIでデジタルトランスフォーメーションを加速する
Ichiro Tsuji
•
583 views
IoTにおけるクラウドインフラからサーバサイドまでの概要的な話
Terui Masashi
•
3.8K views
IT関係の認定試験と取得費用について
Yoshitake Takata
•
1.9K views
クラウドとコミュニティのこれまでとこれから 20150322_#JAWSDAYS
Hideki Ojima
•
3.3K views
IoTバカ、自動運転車を買う
Ichiro Tsuji
•
334 views
東北での導入事例にみるAWS活用方法
Takuya Tachibana
•
1.8K views
事例とキーワードで紐解くIoT / JAWS-UG長崎支部 Re:Boot! 第一回勉強会@長崎県産業振興財団
Kohei MATSUSHITA
•
818 views
発表!いま注目されているIoT新サービス・新機能
Akira Tateishi
•
337 views
Hello SORACOM
Ichiro Tsuji
•
220 views
大垣講演資料 | IoTをクラウドで加速するIoT通信プラットフォーム”SORACOM”
SORACOM,INC
•
2.5K views
20201204 aws inter-region-network
sshiratori
•
147 views
twilio-ug福岡 twilio開発環境構築ハンズオン
Yutaka Fujisaki
•
1.8K views
初めてのクラウド AWS編
Koichiro Nishijima
•
2.3K views
スマホのパケットを節約したいけど音泉をもっと楽しみたい
Yoshitake Takata
•
501 views
AWSのAIサービスを無駄に組み合わせてみる
TakanoriTsutsui
•
276 views
2018.05.16 DOA 朝会トーク | 自己紹介&勉強会のすゝめ
Koichiro Oki
•
275 views
AWSとTwilioでお手軽会員登録システムを作った話
1.
AWS と Twilio
で お手軽電話番号登録システムを 作った話 2020.09.12 Sat 18:00 @ JAWS SONIC 2020 Toru TAMURA @ JAWS-UG Shimane #jawsug #jawssonic2020 ※本内容はすべて個人の見解であり、所属する企業を代表するものではありません 1
2.
自己紹介 田村 とおる
(Toru TAMURA) 1981.12生まれ / 鳥取県在住 facebook: toru.tamura.1231 Twitter: @toru1231 GitHub: toru1231 2006.04 〜 2007.07 図書館員 2007.08 〜 NOW() Webエンジニア(Ruby, PHP, Perl and etc…) +α(インフラ周り(AWS,オンプレ限らず)とか、ほかにもPMっぽいことも) AWS コミュニティ参加 2013.12 〜 NOW() JAWS-UG 島根支部 コアメンバー 2017.11 JAWS FESTA 2017 中四国 運営スタッフ 2018.03 JAWS DAYS 2018 LT登壇➚ 2019.03 JAWS DAYS 2019 当日スタッフ 2
3.
島根支部の紹介 主な開催場所:松江オープンソースラボ 島根支部は、4〜6ヶ月に1回の頻度で勉強会を開催しています。(コロナ禍のため今年は1月以降お休み中) 地域柄(RubyCity
MATSUE)、参加者にRubyistが多い印象。 最近は以下のようなハンズオン勉強会を行いました。 ・ECSをつかったRuby on Railsアプリのビルドハンズオン(2019/3/30) ・Cognitoを使ってブラウザからS3へダイレクトファイルアップロード(2019/7/6) ・Amazon Transcribe と AWS Comprehed をつかった文章解析と音声合成 (2020/01/25) 山陰の地酒や海の幸などを堪能できる懇親会も好評です。 https://jawsug-shimane.doorkeeper.jp/ 3
4.
最初に 今回はDynamoDBやLambda、API Gatewayを使いましたがこ れらの設定等については特に解説しません。 4
5.
Twilioとはなんぞや 電話の発着信やテキストメッセージの送受信をはじめ、その他 の様々な通信機能をソフトウェア開発者がプログラムによって 利用することを可能にしている。TwilioのサービスはHTTPを 使ってアクセスするものであり、使用状況に応じて請求される ものである。 2019年8月時点で16万社がTwilioサービスを使用している。日 本でもサービスが提供されており、KDDIウェブコミュニケー ションズがその代理店となっている。 出典: Twilio –
Wikipedia (https://ja.wikipedia.org/wiki/Twilio) 5
6.
今回の要件 • すでに会員情報のデータはあるが、電話番号を登録しても らうことで呼び出しのときに電話呼び出しができるように したい(スマホで呼び出しをするシステムを拡張)。 • PC、スマホがなくても電話機だけで登録ができるようにし たい。 今回はユーザーの電話機からTwilioの電話番号にダイヤルして もらってガイダンスに沿って会員番号を入れてもらう方法です すめることにしました。 イタズラ登録を防ぐために会員番号と生年月日の2つでダブル チェックすることにしました。 6
7.
仕組み 1 1: 利用者がTwilioの番号をダイヤルする 2: Twilioから発信元の電話番号とCall
IDを含んだHTTPリクエストを投げる 3: 記録&応答メッセージをTwiMLで返す 4: TwiMLに沿って音声ガイダンスが流れる 5: ガイダンスに沿ってダイヤルボタンを押す 6: 押された内容とCall Sidを含んだHTTPリクエストを投げる 7: Call Sidをキーにデータを検索や更新などする&応答メッセージをTwiMLで返す あとは5〜7を繰り返して会員番号、生年月日などを受け取る 2 34 5 6 7 7
8.
AWS Cloud 1 2 3 4 5 A:
利用者がtwilioに電話する B: twilioからAWS API Gatewayにアクセス 1: API GatewayからLambdaをキック 2: twilioからのパラメータをDynamoDBに記録 3: twilioからのパラメータをキーに情報を返す 4: LambdaからtwiMLを返す 5: 登録が完了したらRDSに保管する C: API Gatewayからtwilioに twiML を返す D: twilio から利用者にtwiMLに沿った音声ガイダンスが流れる A B C D 8 構成図
9.
TwilioからのHTTPリクエスト Twilioからのリクエストはユーザーが操作した結果を送ってくれるが、 その都度都度の一つひとつのリクエストになるので、同じ通話中のも のから発生したリクエストかどうかはパラメータを参照する必要があ る。 通話ごとに一意となるCall Sidというパラメータがあるので DynamoDBに記録するときはこれがプライマリーキー(パーティショ ンキー)となるようにした。発信元電話番号をソートキーとした。 他に入力の進捗を管理するための項目も準備した。これがないとユー ザーの操作で入力された値がどのタイミングのものなのか判定する材 料がTwilioからのリクエストには含まれないため。 9
10.
各リクエストの処理について 1: ユーザーがダイヤルした最初のリクエスト Call Sidと発信元電話番号でDynamoDBにデータを作成する。 入力の進捗を判断するための項目に
“1” を設定する。 ガイダンス: こちらは会員登録専用番号です。あなたの会員番号8桁をプッシュボ タンで入力してください。 10
11.
各リクエストの処理について 2: ユーザーがプッシュホンで8桁を入力したときのリクエスト Call Sidと発信元電話番号でDynamoDBのデータを取得し、入力され た8桁の番号をそのデータに追加して更新する。 入力の進捗を判断するための項目に
“2” を設定する。 ガイダンス: 次にあなたの生年月日をプッシュボタンで入力してください。年は西 暦で入力してください。例えば昭和56年なら1981と入力してく ださい。 11
12.
各リクエストの処理について 3: ユーザーがプッシュホンで生年月日を入力したときのリクエスト Call Sidと発信元電話番号でDynamoDBのデータを取得し、入力され た生年月日をそのデータに追加して更新する。 入力の進捗を判断するための項目に
“3” を設定する。 ガイダンス: あなたの会員番号は12341234、生年月日は1981年12月 31日でよろしいですか。良ければ1を、変更する場合は3を押して ください。 12
13.
各リクエストの処理について 4-1: ユーザーがプッシュホンで1を入力したときのリクエスト Call Sidと発信元電話番号でDynamoDBのデータを取得し、記録され ている会員番号と生年月日、でRDSの会員情報を検索し、そのレコー ドに発信元電話番号を登録する。 ガイダンス: (登録完了)登録が完了しました。ご利用ありがとうございます。 (登録不可)入力された会員情報が見つかりませんでした。もう一度 会員番号の入力からやり直してください。 13
14.
各リクエストの処理について 4-2: ユーザーがプッシュホンで3を入力したときのリクエスト Call Sidと発信元電話番号でDynamoDBのデータを取得し、入力の進 捗を判断するための項目に
“1” を設定することで最初からやり直すよ うにする。ほかの項目は更新などは行わずガイダンスだけを返す。 ガイダンス: あなたの会員番号8桁をプッシュボタンで入力してください。 14
15.
tips Twilioの電話番号を取得するには個人認証とかあるけどTwilioエバンジェ リストのQiita記事のおかげで困ることがなかった。 利用者の応答がどのステップまで進んでいるかを把握する必要があった。 Twilioの音声合成は Polly を使っているので、水樹ミズキさんに読み上げ てもらうことができる。 音声部分についてはどんなイントネーションになるかはAWSコンソール のPollyのところで試してみることができるからそっちでやるとラク。会 員番号とか一文字づつ読み上げてほしい場合は
“<say-as>” を使うとよい。 15
16.
最後に Twilioを使ってスマホを利用していない利用者もサービスの対象とす ることができたので利用者の幅が広がった。 音声でガイダンスを流すだけでなく利用者からのプッシュホンからの 入力ができることでTwilioの使い方が一気に広がった。 →これまでは利用者に電話をかけてガイダンスを流すくらいのものと思っていた。 HTTPリクエストの処理についてはAPI GatewayとLambdaの組み合わ せがEC2とかよりも断然ラク。 Lambdaの開発はAWSコンソールでやったけどCloud9にしておけばよ かったかなと。 16
17.
最後まで楽しみましょう!! 17
Editor's Notes
今回は一時的なデータの保存にDynamoDBを利用することにして、大本の会員情報はRDSを利用しています。 Twilioからのリクエストを受け取るためにAPI Gatewayを利用しリクエストの処理はLambdaで行いました。