Twilio + LaravelでSMS送信


Twilio + LaravelでSMS認証を実装する機会があったので記事に残します。
とりあえず最低限のコードなので、ローカルでのみ「こんなんで動くんだな~~」てな感じで動かしてください。

環境

名称 バージョン
Laravel v7.25.0
Composer v1.10.8
PHP v7.4.8

OSはWindows10です。

Twilioのアカウントの取得・登録方法等は以下をご覧ください。
無料のTwilioトライアルアカウントの使い方 - Twilio

最終的に、電話番号を取得できてSIDとTOKENが取得できれば大丈夫です。

最初のセットアップ

> composer create-project sms laravel/laravel
> cd sms
> composer require twilio/sdk

とりあえず、この二つを入れます。

ControllerとRoutingの設定

> php artisan make:controller SmsController

とすることで、SmsControllerを作成することができます。
routing/web.phpでRoutingの編集をしていきます。

<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

// 以下の行を追加
Route::get('/sms', 'SmsController@index');

こんな感じでよいと思います。
今回はなるべくシンプルなコードを求めるので、POST~とかにはしません。

.envにSIDとTOKENとTwilioで取得した電話番号を設定

TWILIO_SID=SIDを入力
TWILIO_TOKEN=AUTH_TOKENを入力
TWILIO_FROM=Twilioで取得した電話番号。+から。

入力後は念のため、

> php artisan config:clear

を実行してください。

Controller書いてくぞぉぉ。

Controllerも最小限でいきます。

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Twilio\Rest\Client; // 追加

class SmsController extends Controller
{
    public function index()
    {
        $sid    = env( 'TWILIO_SID' );
        $token  = env( 'TWILIO_TOKEN' );
        $client = new Client( $sid, $token );


        $message = 'hoge';
        $for = '+0000000...'; //送信したい電話番号。+81とかから。

        $client->messages->create(
            $for,
            [
                'from' => env( 'TWILIO_FROM' ),
                'body' => $message,
            ]
        );
    }
}

あとは、

> php artisan serve

で、ビルトインサーバーを立ち上げて/smsにアクセスすればメッセージが届くはずです。

参考

エラー編

ssl certificate problem: unable to get local issuer certificate

ここを参考にしてください。