ローカル環境+PHPで、Twilioから携帯電話などにメッセージを送ってみます。
ここでは、Twimletを利用して、短文(英語)メッセージを送ります。
参考: https://twilio-php.readthedocs.org/en/latest/
前提条件
[推奨] UNIX環境
- (参考) Amazon Linux環境の構築
- キーペアの作成 (新規): http://qiita.com/tcsh/items/59303d9506ca7d13f744
- インスタンスの作成 (Public): http://qiita.com/tcsh/items/ae8f1f0d706237327c5a
PHP環境
phpがインストールされていること (5.4以上推奨)
which php
/usr/bin/php
php -v
PHP 5.4.45 (cli) (built: Sep 11 2015 21:23:18)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
sudo yum install php54 -y
curlコマンド
curlがインストールされていること
which curl
/usr/bin/curl
0. 事前作業
0.1. Twilioアカウント情報の設定
Twilioの「はじめよう」画面から以下の情報を取得して変数に格納します。
-
ACCOUNT SID
-
AUTH TOKEN
-
電話番号
TWILIO_ACCOUNT_SID="ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
TWILIO_AUTH_TOKEN="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
TEL_TWILIO_ORIGIN=<Twilioで取得した電話番号 ハイフンなし 例:050xxxxxxxx>
0.2. コール先電話番号の指定
Twilioからの通知を受信したい電話(携帯など)の番号を指定します。
TEL_DEST_ORIGIN=<電話番号 ハイフンなし 例:090xxxxxxxx>
間違い電話をしないように慎重に指定してください。
1. メッセージ送信アプリケーションの作成
1.1. アプリケーションディレクトリの作成
DIR_TWILIO_APP="${HOME}/app/twilio-app" \
&& echo ${DIR_TWILIO_APP}
mkdir -p ${DIR_TWILIO_APP}
1.2. composerのインストール
cd ${DIR_TWILIO_APP} \
&& mkdir bin \
&& curl -sS https://getcomposer.org/installer | \
php -- --install-dir=bin --filename=composer
#!/usr/bin/env php
All settings correct for using Composer
Downloading...
Composer successfully installed to: /Users/taro/app/twilio-php/composer.phar
Use it: php bin/composer
1.3. Twilio PHP SDKの導入
参考: https://jp.twilio.com/docs/php/install
cd ${DIR_TWILIO_APP} \
&& ./bin/composer require twilio/sdk
Using version ^4.2 for twilio/sdk
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing twilio/sdk (4.2.1)
Downloading: 100%
Writing lock file
Generating autoload files
ls ${DIR_TWILIO_APP}/vendor/twilio/sdk/Services/Twilio.php > /dev/null 2>&1 \
&& echo $?
0
Twilio PHPライブラリファイルの位置を変数に取り込みます。
FILE_LIB_TWILIO="${DIR_TWILIO_APP}/vendor/twilio/sdk/Services/Twilio.php"
1.4. 送信メッセージの作成
MSG_TWILIO='Hello! Joe.'
cat << EOF
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say>${MSG_TWILIO}</Say>
</Response>
EOF
表示されたXMLを https://www.twilio.com/labs/twimlets/echo の'Twimlet Configuration'フォームに貼付して、Resulting URLに表示されたURLを変数に取り込みます。
URL_DEF='http://twimlets.com/echo?Twiml=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3CResponse%3E%0A%20%20%20%3CSay%3EHello!%20Joe.%3C%2FSay%3E%0A%3C%2FResponse%3E&'
1.5. 送信スクリプトの作成
cd ${DIR_TWILIO_APP}
FILE_PHP='say.php'
TEL_DEST=$( \
echo ${TEL_DEST_ORIGIN} |\
sed 's/^0/81/') \
&& echo ${TEL_DEST}
TEL_TWILIO=$( \
echo ${TEL_TWILIO_ORIGIN} |\
sed 's/^0/81/') \
&& echo ${TEL_TWILIO}
cat << ETX
FILE_PHP: ${FILE_PHP}
FILE_LIB_TWILIO: ${FILE_LIB_TWILIO}
TWILIO_ACCOUNT_SID: ${TWILIO_ACCOUNT_SID}
TWILIO_AUTH_TOKEN: ${TWILIO_AUTH_TOKEN}
TEL_TWILIO: ${TEL_TWILIO}
TEL_DEST: ${TEL_DEST}
URL_DEF: ${URL_DEF}
ETX
cat << EOF > ${FILE_PHP}
<?php
require( '${FILE_LIB_TWILIO}' );
\$account_sid = '${TWILIO_ACCOUNT_SID}';
\$auth_token = '${TWILIO_AUTH_TOKEN}';
\$client = new Services_Twilio(
\$account_sid,
\$auth_token
);
\$call = \$client->account->calls->create(
'+${TEL_TWILIO}',
'+${TEL_DEST}',
'${URL_DEF}',
array("Method" => "GET")
);
echo \$call->sid;
EOF
cat ${FILE_PHP}
2. 電話メッセージの発信
${TEL_DEST}宛にメッセージを電話します。
php ${FILE_PHP}
完了
日本語での送信は今のところうまくいっていません。
原因としては、以下が考えられそうです。
- Twimletが日本語のメッセージをURLエンコードしてくれない。(nkfでデコードすれば良いかも。)
-
- GETのURLが長くなりすぎる