TwilioとRubyを使って電話でメッセージを流すのをやってみた。
だいたい公式のドキュメント通りでいけたがはまりどころもあったのでメモしておく。
事前準備
Twilioの準備
- Twilioアカウントでaccount sidとaccount sidを確認しておく
- Twilio電話番号を取得しておく
Trialアカウントの場合は電話の掛け先が検証済電話番号のみになるが実施可能
テキスト読み上げのためのXML配置
以下のXMLをWEBサーバーに配置しGETで取得できるようにしておく。
(試した環境ではAWS S3に配置してアクセスできるようにした)
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say voice="alice" language="ja-JP">Testログインで障害が発生しています</Say>
</Response>
コード実行
以下のコードを実行すると電話がかかってきてテキストを読み上げてくれる。
- Gemfile
source "https://rubygems.org"
gem "twilio-ruby"
- 本体コード
require 'twilio-ruby'
account_sid = "[account sid]"
auth_token = "[auth token]"
client = Twilio::REST::Client.new(account_sid, auth_token)
client.account.calls.create(from: '[Twilio電話番号]',
to: '[掛け先の電話番号]',
method: 'GET',
url: '[配置したXMLへのURL]')
はまった
Twilio側からXMLを取りに行くのがデフォルトPOSTでAWS S3に弾かれていた。
このため電話がかかってくると「アプリケーションエラーが発生しました」と言われてしまっていた。
Twilioアカウントのログを確認して原因がわかり、methodでGETを指定するようにして対応した。
参照サイト
- 通話API
- XML仕様
- 無料トライアルアカウントの制限
- 音声でエラーを言われた場合のQ&A