LoginSignup
1
1

More than 5 years have passed since last update.

TwilioとLaravel(PHP)を使って大量のSMSを送信する方法

Posted at

原本

あなたが多数のユーザを持っていて、あなたがSMSを通してそれらを同時に更新するか、または通知する必要がある時があります。 たぶんあなたは会員制サイトや個人的なブログを運営しています。 どのような場合でも、このチュートリアルはあなたのWebアプリを使って大量のSMSを送信するための効率的で簡単な方法を提供します。

環境/対象

  • ターミナル(コマンドライン)
  • Composerインストール済み
  • PHPに精通している
  • Laravel(5+)に精通している
  • 既存のLaravelプロジェクトがある
  • Twilioアカウントを保持している

インストールとTwilio Laravel SDKの設定

最初にやるべきことはTwilio Laravel SDKをインストールすることです。TwilioLaravel SDKは、私たちの一括SMSアプリを起動するために必要な機能を提供します。 そのためにコマンドラインを使用します。 コマンドラインで次のように入力します:

$ composer require twilio/sdk

SDKがインストールされたので、Twilioアカウントを認識するように設定する必要があります。
.envファイルを開き、次のコードを貼り付けます。 必ず変数をTwilioの認証情報に置き換えてください。 TWILIO_FROMはあなたのTwilio番号です。

TWILIO_SID=ACXXXXXXXXXXXXXXXXXXX
TWILIO_TOKEN=XXXXXXXXXXXXXXXXXXXXX
TWILIO_FROM=+81XXXXXXXXXX

BulkSMS ControllerのViewとCodeを設定する

BulkSMSアプリには専用のControllerが必要です。Laravelのartisanコマンドを使用してControllerを作成します。
以下コマンドを貼り付けてControllerを作成します。

$ php artisan make:controller BulkSmsController

Controllerを開き、上部にTwilioクラスをincludeします。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Twilio\Rest\Client;
use Validator;

次に、bulksms.blade.phpという名前のビューファイルを作成して、BulkSMSアプリケーションに必要なフィールドを作成するためのHTMLフォームを作成します。

$ touch resources/views/bulksms.blade.php

新しく作成されたresources/views/bulksms.blade.phpファイルを開き、以下のコードを貼り付けます:

<html>
      <body>
         <form action='' method='post'>
              @csrf
                      @if($errors->any())
              <ul>
             @foreach($errors->all() as $error)
            <li> {{ $error }} </li>
             @endforeach
        @endif

        @if( session( 'success' ) )
             {{ session( 'success' ) }}
        @endif

             <label>Phone numbers (seperate with a comma [,])</label>
             <input type='text' name='numbers' />

            <label>Message</label>
            <textarea name='message'></textarea>

            <button type='submit'>Send!</button>
      </form>
    </body>
</html>

routesフォルダにあるweb.phpを開き、一番下に次のコードを貼り付けます。

<?php

Route::view('/bulksms', 'bulksms');
Route::post('/bulksms', 'BulkSmsController@sendSms');

それでは、HTMLフォームを検証してテキストメッセージを送信するための関数を作成します。app/Http/ControllersフォルダーにあるBulkSmsController.phpファイルを開き、最後の中括弧の前に次のコードを入力します。

<?php

        public function sendSms( Request $request )
    {
       // Your Account SID and Auth Token from twilio.com/console
       $sid    = env( 'TWILIO_SID' );
       $token  = env( 'TWILIO_TOKEN' );
       $client = new Client( $sid, $token );

       $validator = Validator::make($request->all(), [
           'numbers' => 'required',
           'message' => 'required'
       ]);

       if ( $validator->passes() ) {

           $numbers_in_arrays = explode( ',' , $request->input( 'numbers' ) );

           $message = $request->input( 'message' );
           $count = 0;

           foreach( $numbers_in_arrays as $number )
           {
               $count++;

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

           return back()->with( 'success', $count . " messages sent!" );

       } else {
           return back()->withErrors( $validator );
       }
   }

テスト

アプリをテストするには、プロジェクトディレクトリでコンソールを開き、次のコマンドを入力します。

$ php artisan serve

お好みのブラウザを使用してhttp://localhost:8000/bulksmsにアクセスし、フォームに記入して送信します。

Conclusion

これで、一括SMS送信アプリを設定したので、SMS機能の拡張がどれほど簡単かを確認できます。
これはあなたの電話番号をあなた自身のデータベースに保存させるという利点をあなたに与えます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1