SlideShare a Scribd company logo
1 of 31
Download to read offline
Twilio+AITalk+Node.js+Socket.ioで、
リアルタイム音声変換チャットを作ろう!
TwilioJP ユーザグループ東京
髙橋克己
自己紹介
髙橋克己(たかはしかつみ)
facebook: http://fb.com/katsumi.takahashi
グローバル・インターネット・ジャパン株式会社 代表取締役
独立系ソフトハウスに勤務後、1994年に独立。

主に、通信事業者向けの研修の企画・運営と、Webサービスの開発を
中心に事業を展開。

フルスタックエンジニア。

Twilio-UG 東京メンバー。
 Smart Communication Award 2014応募作品
留守電メッセージが文字で届く、国内初の留守番電話サービス
TRANSREC
 Smart Communication Award 2015 最優秀賞受賞作品
あなたの代わりに電話をかけます
自動電話リレーサービス
I m DOer
アジェンダ
• Twilioをもっと活用するために
• node.js+socket.io+twilio
• ハンズオン
Twilioをもっと活用
するために
Twilioの素晴らしいところ
• 電話とWebが統合されている
• 電話屋さん以外でも電話を扱える
• 本社(SF)がイケイケ
7月のシリーズE投資ラウンド
で1億3000万ドルを調達!

時価総額は10億ドル超!
「Twilioは簡単です」(100回以上は聞いたフレーズw)
<?php
header("content-type: text/xml");
echo "<?xml version="1.0" encoding="UTF-8"?>n";
?>
<Response>
<Say>こんにちは</Say>
</Response>
わずか数行で電話とWebが連携します
でもね、電話って色々面倒くさい
• 受信はともかく、発信時は相手の状況に合わせないといけ
ない
• 電話に出ない
• 話中
• 留守電
• ガチャ切り
Twilioあるあるネタ
• 今どういう状況かを知りたい
• 相手を呼び出している?
• 相手は応答したの?
• 話中じゃないの?
• 何分話したの?
• 通話料はいくらかかったの?
そんなときは、人見知りな Status Callback
スターはいつも、Request URL
でも、脇役のStatus Callbackが実は渋い。
• いつ発火する?
• 着信時は「Completed」のみ
• 発信時は色々設定可能(詳しくは次ページ)
Status Callbackとは
Status Callbackのトリガー(発信時)
• Initiated:Twilioが発信した時
• Ringing:相手側を呼び出している時
• Answered:相手が応答した時
• Completed (デフォルト):切断された時
• Completed以外は有料です($0.0001/event)
• 何を通知してくれるのか(これ以外の情報が付加されるこ
ともあります)
Status Callbackの内容
CallSid 通話の識別子
AccountSid ユーザのTwilioアカウントID
From 発信者番号(E.164フォーマット)
To 宛先番号(E.164フォーマット)
CallStatus 通話の状態(後ページ)
ApiVersion Twilio APIのバージョン
Direction 着信 or 発信(inbound/outbound-api/outbound-dial)
ForwardedFrom 転送されたかどうか(日本では通知されない)
CallerName 発信者IDの検索結果(オプション、1.5円/回)
+26696687は

非通知発信です
Callback Statusリクエストで通知されるCallStatus値
無敵なAPI、「Update」も覚えておくと良いよ
Updateって?
• 現在通話中の通話を変更する必殺技
• /2010-04-01/Accounts/{AccountSid}/Calls/{CallSid}
にPOST
Helperライブラリ(Node.js)での利用例
どんな時に使うの?
• 相手の反応を待たずに、次の動作を行いたい
• 準備ができるまで待たせて、準備ができたら対応する。
• 強制的に切断する。
• 途中で別の通話先にリダイレクトする。
<Gather>ではできない操作はupdateで
今回のハンズオンでも利用します
• 相手に<Play>で音声を流す。
• 次に伝えたい文章を作成する。
• 相手の反応を待たずに、次の<Play>を実行する。
Twilio 相手先サーバ
Call() ダイヤリング
応答Request URL
TwiML wav再生
Update()
Request URL
TwiML wav再生
<Gather>は
入らない
Status Callbackとupdateが使うと、
Twilioの世界がもっと広がる
Node.js+socket.io
+twilio
Node.jsって?
• JavaScriptを用いた、Non-blocking I/O環境
• 実質シングルスレッド(イベントループ型)
• 内部にGoogle V8(高速なJavaScript実行環境)を採用
• パッケージ管理(npm) もちろんTwilioのライブラリもある
• Webサーバー自身をNode.jsで作成可能
• ExpressやSocket.ioなど、有用なフレームワークがある
• io.js(Node.jsのFork)と和解し、Node.jsは4.xへ
Socket.ioって?
• リアルタイムWebを実現するNode.js用のサーバライブラリ
とブラウザ用のJavaScriptライブラリ
• WebSocket以外に、ポーリングなどをサポートすることで、
ブラウザ依存せずにリアルタイムWebが可能
• 0.9系と1.0系で仕様がだいぶ変わった点に注意
• socket.emit(event, data)でイベントを送信
• socket.on(event, callback)でイベントを受信
Twilioとの相性は?
• 電話はそもそも、相手とつながった後は双方向通信。
• 音声通話と連動させたWebアプリでは、リアルタイムWeb
が必要になる。
• 例えば、
• 音声を電話で聞かせながらスライドを表示させるよう
なサービス。
• チャットと連動して音声を流すサービス(今回のハン
ズオン)。
Twilio用にSocket Clientを用意
Socket server
ブラウザ

Socket Client
Twilio 通話先
TwilioはSocket非対応
Twilio用 Socket Client
emit()
emit()
emit()
emit()
RestAPI
詳しくは後ほどハンズオンで
RestAPI
ハンズオン
どんなアプリケーションなのか
• ブラウザから電話をかける(話者も選べる)
• 電話が応答する(しばらく待てとガイダンス)
• ブラウザで文字を入力する
• エンターキーをトリガーにして、音声に変換(AITalk)
• 音声データを再生(必殺技の「Update」を使う!)
• 続けてブラウザで文字を入力する(以後繰り返し)
• ブラウザから通話を切断する(再び「Update」炸裂!)
全体イメージ
Twilio
Socket

サーバ
Twilio

Socket

クライアント
Socket

クライアント
電話機
Twilio

制御
UserToCenter CenterToUser
CenterToTwilio
TwilioToCeter
Socket.io

のイベント名
PSTN
ブラウザ
heroku
AITalk

制御
AITalk
Web

API
sio.js twilioClient.js
twi.js
ai.js
user.js
Single Page
Application
Let s Enjoy !

More Related Content

What's hot

【Interop tokyo 2014】 無線LANとFacebookを活用したデジタルマーケティングの導入
【Interop tokyo 2014】  無線LANとFacebookを活用したデジタルマーケティングの導入【Interop tokyo 2014】  無線LANとFacebookを活用したデジタルマーケティングの導入
【Interop tokyo 2014】 無線LANとFacebookを活用したデジタルマーケティングの導入
シスコシステムズ合同会社
 

What's hot (20)

Bluemixユーザー会発表資料 - デモ付き
Bluemixユーザー会発表資料 - デモ付きBluemixユーザー会発表資料 - デモ付き
Bluemixユーザー会発表資料 - デモ付き
 
IIJmio meeting 5 みおふぉん教室:電話料金節約術
IIJmio meeting 5 みおふぉん教室:電話料金節約術IIJmio meeting 5 みおふぉん教室:電話料金節約術
IIJmio meeting 5 みおふぉん教室:電話料金節約術
 
Twilioビジネスセミナー20140624
Twilioビジネスセミナー20140624Twilioビジネスセミナー20140624
Twilioビジネスセミナー20140624
 
【Interop tokyo 2014】 無線LANとFacebookを活用したデジタルマーケティングの導入
【Interop tokyo 2014】  無線LANとFacebookを活用したデジタルマーケティングの導入【Interop tokyo 2014】  無線LANとFacebookを活用したデジタルマーケティングの導入
【Interop tokyo 2014】 無線LANとFacebookを活用したデジタルマーケティングの導入
 
IIJmio meeting #2 みおぽんAPIの話
IIJmio meeting #2 みおぽんAPIの話IIJmio meeting #2 みおぽんAPIの話
IIJmio meeting #2 みおぽんAPIの話
 
ビジネスワールドトークのご案内
ビジネスワールドトークのご案内ビジネスワールドトークのご案内
ビジネスワールドトークのご案内
 
IIJmio meeting#4 みおふぉん教室
IIJmio meeting#4 みおふぉん教室IIJmio meeting#4 みおふぉん教室
IIJmio meeting#4 みおふぉん教室
 
LINE BOOT AWARDS 2018 FINAL STAGE プレゼンテーション
LINE BOOT AWARDS 2018 FINAL STAGE プレゼンテーションLINE BOOT AWARDS 2018 FINAL STAGE プレゼンテーション
LINE BOOT AWARDS 2018 FINAL STAGE プレゼンテーション
 
第2回 ボット自慢LT大会の資料(あにBOT)
第2回 ボット自慢LT大会の資料(あにBOT)第2回 ボット自慢LT大会の資料(あにBOT)
第2回 ボット自慢LT大会の資料(あにBOT)
 
いもうとBOTのご紹介
いもうとBOTのご紹介いもうとBOTのご紹介
いもうとBOTのご紹介
 
LTF・LTCR_サービス概要資料
LTF・LTCR_サービス概要資料LTF・LTCR_サービス概要資料
LTF・LTCR_サービス概要資料
 
IIJmio meeting #3 音声通話サービスのお話
IIJmio meeting #3 音声通話サービスのお話IIJmio meeting #3 音声通話サービスのお話
IIJmio meeting #3 音声通話サービスのお話
 
東北で3年間クラウドのフルマネージドサービスをやってきて感じたこと
東北で3年間クラウドのフルマネージドサービスをやってきて感じたこと東北で3年間クラウドのフルマネージドサービスをやってきて感じたこと
東北で3年間クラウドのフルマネージドサービスをやってきて感じたこと
 
IIJmio meeting 7 みおふぉん教室 スマホメールの引っ越し方
IIJmio meeting 7 みおふぉん教室 スマホメールの引っ越し方IIJmio meeting 7 みおふぉん教室 スマホメールの引っ越し方
IIJmio meeting 7 みおふぉん教室 スマホメールの引っ越し方
 
いもうとBOT - [3/28]LINE Bot Developers Meetup発表資料
いもうとBOT - [3/28]LINE Bot Developers Meetup発表資料いもうとBOT - [3/28]LINE Bot Developers Meetup発表資料
いもうとBOT - [3/28]LINE Bot Developers Meetup発表資料
 
Kintone hands on
Kintone hands onKintone hands on
Kintone hands on
 
Edtechスタートアップ成否のポイント
Edtechスタートアップ成否のポイントEdtechスタートアップ成否のポイント
Edtechスタートアップ成否のポイント
 
今こそ職場環境や人間関係をヨクスル取り組みをしよう!【渡会 一利さん(4thクリエイト)】
今こそ職場環境や人間関係をヨクスル取り組みをしよう!【渡会 一利さん(4thクリエイト)】今こそ職場環境や人間関係をヨクスル取り組みをしよう!【渡会 一利さん(4thクリエイト)】
今こそ職場環境や人間関係をヨクスル取り組みをしよう!【渡会 一利さん(4thクリエイト)】
 
IIJmio meeting 7 iPhoneのVoLTEをIIJmioで使ってみる&みおふぉんダイアルの話
IIJmio meeting 7 iPhoneのVoLTEをIIJmioで使ってみる&みおふぉんダイアルの話IIJmio meeting 7 iPhoneのVoLTEをIIJmioで使ってみる&みおふぉんダイアルの話
IIJmio meeting 7 iPhoneのVoLTEをIIJmioで使ってみる&みおふぉんダイアルの話
 
ミラロボ(RPA Community)
ミラロボ(RPA Community)ミラロボ(RPA Community)
ミラロボ(RPA Community)
 

Viewers also liked

TwilioAPIやってみた(エンジニアちゃうけど)俺聞け7
TwilioAPIやってみた(エンジニアちゃうけど)俺聞け7TwilioAPIやってみた(エンジニアちゃうけど)俺聞け7
TwilioAPIやってみた(エンジニアちゃうけど)俺聞け7
Hiroko Osaki
 

Viewers also liked (8)

Twilioと.NET
Twilioと.NETTwilioと.NET
Twilioと.NET
 
APMP日本支部を作ろう
APMP日本支部を作ろうAPMP日本支部を作ろう
APMP日本支部を作ろう
 
TwilioコールセンターアプリRuna-CCA紹介
TwilioコールセンターアプリRuna-CCA紹介TwilioコールセンターアプリRuna-CCA紹介
TwilioコールセンターアプリRuna-CCA紹介
 
TwilioAPIやってみた(エンジニアちゃうけど)俺聞け7
TwilioAPIやってみた(エンジニアちゃうけど)俺聞け7TwilioAPIやってみた(エンジニアちゃうけど)俺聞け7
TwilioAPIやってみた(エンジニアちゃうけど)俺聞け7
 
Twilioでコールセンター
TwilioでコールセンターTwilioでコールセンター
Twilioでコールセンター
 
「楽しいことだけやる」のがプログラミングの勉強のコツ
「楽しいことだけやる」のがプログラミングの勉強のコツ「楽しいことだけやる」のがプログラミングの勉強のコツ
「楽しいことだけやる」のがプログラミングの勉強のコツ
 
1日30分で作れる個人サービスのススメ
1日30分で作れる個人サービスのススメ1日30分で作れる個人サービスのススメ
1日30分で作れる個人サービスのススメ
 
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
 

Similar to Twilio x AITalk 勉強会資料

Jidery紹介資料(2015年5月8日版)
Jidery紹介資料(2015年5月8日版)Jidery紹介資料(2015年5月8日版)
Jidery紹介資料(2015年5月8日版)
Katsumi Takahashi
 
Gmo media.inc dev ops of own way
Gmo media.inc dev ops of own wayGmo media.inc dev ops of own way
Gmo media.inc dev ops of own way
Dai Utsui
 

Similar to Twilio x AITalk 勉強会資料 (20)

サービスをつくりなおす決断をするとき
サービスをつくりなおす決断をするときサービスをつくりなおす決断をするとき
サービスをつくりなおす決断をするとき
 
Jidery紹介資料(2015年4月24日版)
Jidery紹介資料(2015年4月24日版)Jidery紹介資料(2015年4月24日版)
Jidery紹介資料(2015年4月24日版)
 
Jidery紹介資料(2015年5月8日版)
Jidery紹介資料(2015年5月8日版)Jidery紹介資料(2015年5月8日版)
Jidery紹介資料(2015年5月8日版)
 
Tech on meetup online#01
Tech on meetup online#01Tech on meetup online#01
Tech on meetup online#01
 
Real World Twilio
Real World TwilioReal World Twilio
Real World Twilio
 
20190517 twilio business seminar in osaka #3
20190517 twilio business seminar in osaka #320190517 twilio business seminar in osaka #3
20190517 twilio business seminar in osaka #3
 
りんな風 女子高生Bot - docomo雑談対話API +α を使って 自分専用Botを作る -
りんな風 女子高生Bot - docomo雑談対話API +α を使って 自分専用Botを作る -りんな風 女子高生Bot - docomo雑談対話API +α を使って 自分専用Botを作る -
りんな風 女子高生Bot - docomo雑談対話API +α を使って 自分専用Botを作る -
 
【Unite Tokyo 2019】中の人がいない!? 音声対話型AIサービスを使ったバーチャルキャラクターの作り方
【Unite Tokyo 2019】中の人がいない!? 音声対話型AIサービスを使ったバーチャルキャラクターの作り方【Unite Tokyo 2019】中の人がいない!? 音声対話型AIサービスを使ったバーチャルキャラクターの作り方
【Unite Tokyo 2019】中の人がいない!? 音声対話型AIサービスを使ったバーチャルキャラクターの作り方
 
[Cloud OnAir] AI の力で次世代型コンタクトセンターへ 〜 Contact Center AI ソリューションにおけるジェネシス・ジャパン...
[Cloud OnAir] AI の力で次世代型コンタクトセンターへ  〜 Contact Center AI ソリューションにおけるジェネシス・ジャパン...[Cloud OnAir] AI の力で次世代型コンタクトセンターへ  〜 Contact Center AI ソリューションにおけるジェネシス・ジャパン...
[Cloud OnAir] AI の力で次世代型コンタクトセンターへ 〜 Contact Center AI ソリューションにおけるジェネシス・ジャパン...
 
IMG SRC presskit2021-recruit
IMG SRC presskit2021-recruitIMG SRC presskit2021-recruit
IMG SRC presskit2021-recruit
 
20201128 osc fukuoka_vui
20201128 osc fukuoka_vui20201128 osc fukuoka_vui
20201128 osc fukuoka_vui
 
Twilio flex導入までの背景と苦労した話
Twilio flex導入までの背景と苦労した話Twilio flex導入までの背景と苦労した話
Twilio flex導入までの背景と苦労した話
 
SIerのDevRel術
SIerのDevRel術SIerのDevRel術
SIerのDevRel術
 
20190115 tech on-fintech_600xStripe
20190115 tech on-fintech_600xStripe20190115 tech on-fintech_600xStripe
20190115 tech on-fintech_600xStripe
 
新しい働き方アワード【新しい働き方LAB empowered by ランサーズ/研究員制度3期】
新しい働き方アワード【新しい働き方LAB empowered by ランサーズ/研究員制度3期】新しい働き方アワード【新しい働き方LAB empowered by ランサーズ/研究員制度3期】
新しい働き方アワード【新しい働き方LAB empowered by ランサーズ/研究員制度3期】
 
Gmo media.inc dev ops of own way
Gmo media.inc dev ops of own wayGmo media.inc dev ops of own way
Gmo media.inc dev ops of own way
 
Jidery紹介資料(2015年6月17日版)
Jidery紹介資料(2015年6月17日版)Jidery紹介資料(2015年6月17日版)
Jidery紹介資料(2015年6月17日版)
 
就職説明会 181215 株式会社mofmof
就職説明会 181215 株式会社mofmof就職説明会 181215 株式会社mofmof
就職説明会 181215 株式会社mofmof
 
Onlab presentation 072412
Onlab presentation 072412Onlab presentation 072412
Onlab presentation 072412
 
Twilioハンズオン資料 鹿児島
Twilioハンズオン資料 鹿児島Twilioハンズオン資料 鹿児島
Twilioハンズオン資料 鹿児島
 

Twilio x AITalk 勉強会資料