PHPでTwilio API SDKを叩いてSMS送信を試す

 Twilio APIをPHPから叩いているときの覚書。

環境: PHP 7.4.30, Twilio SDK 6.42.0

公式サイト


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にリクエストが飛んでくる。

公開していない開発環境では、もちろん試すことができないので開発しづらい…。


公開している環境でSMS成功パターンと失敗パターンのPOSTデータを保存しておいて、後は開発環境でSmsSidを変更して対応する。



【関連記事】