アカウント取得
ブラウザがchromeでないと上手くいかなかった。
https://jp.twilio.com/try-twilio/kddi-web
2019年に業務提携があったようで、トライアルアカウント取得のページが
複数存在するようだ。ここで、取得できた。
性、名、メールアドレス、パスワード(14文字以上)
を入力してトライアルアカウント作成をすると
ログインする。
その後、2段階式の認証が入り、SMSが有効な電話番号を求めてくるので、
入力して送信すると、認証数列がSMSに届くので、
それを入力して登録完了。
PHPへの実装
composerにてtwilio-phpのライブラリを取得
任意のフォルダにて
$ composer require twilio/sdk
処理されて
Generating autoload files
サンプルプログラム sms_send.php
<?php
require("/autoloadが置いてあるでぃてくとりをフルパスで指定/autoload.php" );
use Twilio\Rest\Client;
$account_sid = 'ダッシュボードのアカウントSIDを記載';
$auth_token = 'ダッシュボードのAUTH TOKENを記載';
$twilio_number = '+120********';//取得したTwilioの電話番号テストは+120のみ許容
$client = new Client($account_sid, $auth_token);
$client->messages->create(
'+8190********',//090の場合日本は+81なので090が+8190となる。トライアル時は登録した電話番号のみ許容される。
[
'from' => $twilio_number,
'body' => 'SMS送信テスト'
]
);
?>
実行してみる
$ php sms_send.php
PHP Fatal error: Uncaught exception 'Twilio\Exceptions\RestException' with message '[HTTP 426] Unable to create record: Upgrade Required' in /var/www/html/vendor/twilio/sdk/Twilio/Version.php:85
Stack trace:
#0 /var/www/html/vendor/twilio/sdk/Twilio/Version.php(219): Twilio\Version->exception(Object(Twilio\Http\Response), 'Unable to creat...')
#1 /var/www/html/vendor/twilio/sdk/Twilio/Rest/Api/V2010/Account/MessageList.php(70): Twilio\Version->create('POST', '/Accounts/AC5c4...', Array, Array)
#2 /var/www/html/maildistributer/test/twilio_test.php(20): Twilio\Rest\Api\V2010\Account\MessageList->create('+8190********', Array)
#3 {main}
thrown in /var/www/html/vendor/twilio/sdk/Twilio/Version.php on line 85
ん?
426エラーが返ってきたので、
twilioの仕様を確認したところ、tls1.2を強要とのこと
phpinfoで知らべたところ稼働中のサーバは
opensslは1.2対応していたが、
cURLのNSSが/3.15でTLS1.2に対応していなかった。(
手っとり早い方法を探したところ、NSS/3.28以上のパッケージをインストールしてから
curlをアップデートするのが最速とのことだったので、
# yum install -y https://rpms.southbridge.ru/rhel7/stable/x86_64/southbridge-stable-release-1.0-el7.southbridge.noarch.rpm
# yum update curl
依存処理に結構時間がかかったが、何とか処理完了
# systemctl restart httpd.service
phpを再起動
これも、壊したか?と不安になる位 えらく時間がかかった・・・。
再度テスト
$ php sms_send.php
届いた!
登録から送信完了まで作業時間が約1時間半だった。
2018-9月にTLS1.3がリリースされたので、
近いうちにTLS1.3(openssl 1.1.1)にアップデートが必要になるものと
推測される。
なにやら攻撃を受ける可能性があるなどの情報もありもう少し様子見しようかな
と思っているが、そろそろ、PHPも7.2に引き上げが必要だろう。
動作確認とか大変だなぁ