Dockwilio - Twilioを制御するDockerコンテナ(実験バージョン ) = 簡単手順編 =
更新:ver.2015.12.12リリースに伴い一部変更。
Dockwilioは、Twilioを使って簡単に架電&音声合成メッセージ再生をすることができるDockerのコンテナです。
概要編に続き、実行するための簡単手順を説明します。
前提:
- Dockerエンジンがホストにインストールされている。
- Twilioにアカウントがあり、発信用電話番号を購入してある(Account SID, Auth Token、電話番号の情報が必要)。
- TwiMLアクセスのためのSSLサーバ証明書を用意してある。
- Dockwilioへの架電要求はホスト内から行う。
なお、Dockwilioイメージはcentos6がベースとなっており、内部で2つのnginxプロセスが稼働します。
1. 準備
TwilioからTwiMLを取得するためのHTTPSアクセスを許可します。
Dockwilioの設定ファイルを作成します。
ファイル名は「dwilio.conf」でYAML形式で記述します。
account_sid: ACxxxxxxxxxxxx
auth_token: xxxxxxxxxxxxx
from: +8150xxxxxxxx
twiml_url_base: https://hostname.example/
syslog_facility: local0
twiml_ssl_crt: fullchain.pem
twiml_ssl_key: privkey.pem
twiml_url_base の hostname.example にはDockwilioが稼働するホストのFQDNを指定します。
2. Dockwilioコンテナの起動
docker run -d -p 443:443 -v /dockwilio_config_dir:/etc/dockwilio:ro -v /etc/localtime:/etc/localtime:ro --name dwilio emerry/dockwilio
ここで、/dockwilio_config_dir は設定ファイル(dwilio.conf)およびSSL証明書のあるディレクトリです。
コンテナを起動すると、コンテナのIPアドレスがsyslog(local0)に出力されます。
Nov 22 11:32:20 4acb42090932 logger: IP address of Dockwilio: inet 172.17.0.51/16 scope global eth0
3. 架電と音声メッセージ再生の実行
ホスト内からDockwilioコンテナに対しHTTP POSTすることで(YAMLまたはJSON形式のいずれか)、架電の要求をします。
URLは「http://DockwilioコンテナのIPアドレス/say.{yaml,json}」で、架電の終了後に結果とともに戻ります。
下記はcurlコマンドを使用した例ですが、Content-length を指定する必要があるためlsコマンドで予めサイズを調べています。
YAMLの例:
$ ls -l post_data.yaml
-rw-r--r-- 1 user users 49 Nov 21 12:59 2015 post_data.yaml$ cat post_data.yaml
to: +8180xxxxxxxx
say: Hello. How are you doing?$ curl -XPOST http://172.17.0.51/say.yaml -H 'Content-length: 49' --data-binary @post_data.yaml
code: 0
status: completed
message:
JSONの例:
$ ls -l post_data.json
-rw-r--r-- 1 user users 62 Nov 21 13:06 post_data.json$ cat post_data.json
{
"to": "+818046684833",
"say": "Hello. How are you doing?"
}$ curl -XPOST http://172.17.0.51/say.json -H 'Content-length: 62' --data-binary @post_data.json
{“code”:”0”,”status”:”completed”,”message”:””}
仕様についてはコンテナ仕様編を参照してください。