BBB bit2byte blog

bit2byte

PHPで作るSMS送信API

2020.11.10.火

井上 飛鳥

Engineer

はじめに

既存のWebシステムにSMS認証を行うご要望をいただいた為、今回TwilioというクラウドコミュニケーションAPIを使用して実装を行いました。
Twilioとは?

Twilioで電話番号取得

まずTwilioでアカウントを作成します。
アカウントを有効にする際、本人身元確認が必要なようです。

TwilioのPHPモジュール「twilio/sdk」をインストールする

対象プロジェクトのディレクトリに移動し、以下のコマンドを実行する。

$ mkdir twilio-php-app
$ cd twilio-php-app
$ composer init --require=twilio/sdk
$ composer install

国際番号に変換するモジュールをインストールする

今回こちらを使用させていただきました。

https://github.com/giggsey/libphonenumber-for-php

$ composer require giggsey/libphonenumber-for-php

PHPサンプルコード

main.php(POST値は適宜サニタイズ処理をしてください)

<?php
//TwilioのアカウントSIDを指定する
$account_sid = 'XXXXXXXXXXXXXXXXXXXXXXXXXXX';
//TwilioのAUTHTOKENを指定する
$auth_token = 'XXXXXXXXXXXXXXXXXXXXXXXXXXX';
//Twilioで購入済の番号を指定する
$twilio_number = "+16xxxxxxxxxx";
//コールバックURL
$statuscallback_url = 'https://your_damain/statuscallback_receive.php';


//Twilioモジュール読み込み
require __DIR__ . '/vendor/autoload.php';
use Twilio\Rest\Client;

$to = $_POST['to'];
$number = $_POST['number'];

//国際番号に変換する
$phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance();
$obj = $phoneUtil->parse($to, 'JP');
$convert_to = $formatedPhoneNum =  $phoneUtil->format($obj, \libphonenumber\PhoneNumberFormat::E164);

$client = new Client($account_sid, $auth_token);
$result = $client->messages->create(
    $convert_to,
    array(
        'from' => $twilio_number,
        'body' => "認証コードは次の通りです。{$number}",
        'StatusCallback' => $statuscallback_url . '?number=' . $number
    )
);

statuscallback_receive.php

<?php
//コールバックURLにPOSTされた値を取得して何かしら処理を行う

$SmsSid = $_POST['SmsSid'];
$SmsStatus = $_POST['SmsStatus'];
$MessageStatus = $_POST['MessageStatus'];
$To = $_POST['To'];
$MessageSid = $_POST['MessageSid'];
$AccountSid = $_POST['AccountSid'];
$From = $_POST['From'];
$ApiVersion = $_POST['ApiVersion'];

まとめ

今回簡単な投稿でしたが、Twilioでのアカウントの身元確認に時間がかかったイメージがあります。
コールバックで受け取った値はデータベースに保存する等でログとして残す事が可能です。
是非試してみてください。

井上 飛鳥代表取締役

<Web業界との関わり>
Webは20歳のころ自分のHPを作成する事から始まり、当時はHTMLよりもFlash MXでFlashサイトを作ったりしていました。
その後サーバーサイドに興味を持ち、様々な企業様のWeb制作・システム開発に携わらせていただきました。

<会社名Bit2Byteの由来>
企業前からイメージしていたものです。
昔から仕事や悩みなどを1人で抱え込む事が多かったのですが、何事も1人だけではできず、皆の協力で成り立っているものだと深く思い、1人から皆に繋げていく意味を込めて名付けました。

お客様の立場になり問題を解決できるよう会社一丸となって本当に感謝される事を目的としています。

Recommend