PHPでTwilio API SDKを叩いてSMS送信を試す
Twilio APIをPHPから叩いているときの覚書。
環境: PHP 7.4.30, Twilio SDK 6.42.0
公式サイト
- GitHub - twilio/twilio-php: A PHP library for communicating with the Twilio REST API and generating TwiML.
- PHP Helper library | Twilio
1.インストール
composerを使ってインストールする。
$ composer require twilio/sdk
2.SMS送信サンプル
サンプルを実行してみる。
<?php$sid = "ACXXXXXX"; // Your Account SID from www.twilio.com/console$token = "YYYYYY"; // Your Auth Token from www.twilio.com/console$client = new Twilio\Rest\Client($sid, $token);$message = $client->messages->create('+819012345678', // Text this number['from' => '+12223334444', // From a valid Twilio number'body' => "テスト\n送信",]);print $message->sid;print $message->status;
簡単に送れた。
MessageInstanceを返すので詳細はソースコードを読んだ方が分かりやすい。
送信ログはTwilio Consoleの電話番号を選択したMessages logでも確認できる。
3.Twilio Lookup APIを試す
Lookup APIは電話番号が正しい形式かキャリア情報を取得できる。
参考サイト
サンプルコード
$sid = "ACXXXXXX"; // Your Account SID from www.twilio.com/console$token = "YYYYYY"; // Your Auth Token from www.twilio.com/console$client = new \Twilio\Rest\Client($sid, $token);$phone_number = $client->lookups->v1->phoneNumbers("+819012345678")->fetch(["type" => ["carrier"]]);var_dump($phone_number);
適当な番号(電話しても通じない番号)を入れてもcarrier情報を取得できた。
つまり送信できたかどうかは送ってみたあとのstatusを参照する必要がある。
Lookup APIは入力された電話番号のバリデーションに使えそう。
4.SMS送信に成功したか確認
SMSを$client->messages->create()した直後のstatusは「queued」で、その後無事送信できたかどうかは再度問い合わせないといけない。
Twilio APIでは「statusCallback」で指定したURLにリクエストが飛んでくる。
- How to Track Delivery Status of Messages in PHP | Twilio
- [Twilio] SMS送信状況を監視する #twilio | DevelopersIO
公開していない開発環境では、もちろん試すことができないので開発しづらい…。
公開している環境でSMS成功パターンと失敗パターンのPOSTデータを保存しておいて、後は開発環境でSmsSidを変更して対応する。