日本語読み上げ対応。FluentdからTwilioの電話APIを操作する「fluent-plugin-twilio」を使って電話を掛けてみた
Twilio(トゥイリオ)という話題の電話APIサービスをご存じでしょうか。
これをFluentdに組み込むプラグイン「fluent-plugin-twilio」を作成・公開しました。
Boundioという電話APIサービスが廃止となり、行き場を失っていた方にも朗報です。
fluent-plugin-twilio
https://github.com/y-ken/fluent-plugin-twilio
Fluentd Output plugin to make a call with twilio.
Twilioとは
Web APIを利用し、電話を掛けたり、受けることの出来るサービスです。
TwiMLというXML言語を用い、大変自由度の高い動作を定義することが出来ます。
文字列として渡した漢字を含む日本語から、音声合成をして読み上げる機能も備わっています。
Twilioの料金(2013年5月現在)
初期費用はかかりません。
電話番号維持の月額490円に加えて、通話料の実費のみで使えます。
- 固定電話宛通信料 9円/分
- 携帯電話宛通信料 19円/分
より詳細な情報は 料金-Twilio for KDDIウェブコミュニケーションズ をご参照ください。
必要な情報
まずはTwilioにサインアップし、以下の情報を控えてください。
- 発信用の電話番号
日本であれば +81 を含めた11桁の数字です。 - ACCOUNT SID(34文字)
- AUTH TOKEN(32文字)
プラグインのインストール
fluentdのインストール方法に合わせて入れます。
システムインストールの場合
$ sudo gem install fluent-plugin-twilio
td-agentを利用している場合
$ sudo /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-twilio
設定ファイル
先ほどTwilioのダッシュボードで控えた情報を、設定ファイルに記述します。
from_numberには、登録時に取得した発信用電話番号を指定します。
td-agent.conf (fluentd.conf)
<source> type http port 8888 </source> <match notify.call> type twilio account_sid ACCOUNT_SID auth_token AUTH_TOKEN from_number +81312345678 </match>
電話を掛ける
さぁ、先ほどの設定をデーモン再起動の上反映させたら、電話を掛けてみましょう。
XXXXXXXXXXの所には、掛けたい電話番号を指定てください。
$ curl http://127.0.0.1:8888/notify.call -F 'json={"number":"+81XXXXXXXXXX","message":"佐藤さん、お昼ご飯の時間ですよ。"}'
いかがでしょうか?
少々片言ですが、十分聞き取れますよね。
プラグイン作成時にハマった所
外部アクセス可能なXMLを指定しないと動かない
Twilioを利用して架電する時、外部からアクセスできるXMLのURLを指定する必要があります。
外部公開サーバが必要となると利用の敷居が高まるため、Twilioがtwimletsというサービスを公式提供しています。今回はそのサービスを利用してこの問題を解決しました。
https://www.twilio.com/labs/twimlets/echo
日本語の読み上げ
いつのまにか対応していました。Sayにlanguage属性を付与することで動きます。
但し現在は男性の声はまだ無く、女性の声のみ対応しているようです。
<?xml version="1.0" encoding="UTF-8"?> <Response> <Say voice="woman" language="ja-jp">ようこそ。漢字もOKです。</Say> </Response>
まとめ
Fluentdと組み合わせて、電話APIをどのように使うかはあなたのアイディア次第!!
例えば電話を用いた実在確認をするのも容易ですし、システム監視・アラートシステムに組み込むのも良いですよね。
新しい使い方を見いだしたら是非、ブログ記事にして広めていきましょう。