11
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Twilioを使ったSMSの受信と送信元への返信

Last updated at Posted at 2018-10-25

はじめに

TwilioでSMSを受信し、送信元の電話番号を取得して、SMSを返信する方法について、
調べたので、簡単にですが、書きます。

  1. Twilioのアカウントの取得
  2. Twilio電話番号の購入(月額150円くらい)
  3. Twilioの電話番号にWebhook URLをセットする。SMSを受信した時の返信のため
  4. CakePHP3でのサンプル

Twilioのアカウントの取得は、割愛します。

必要なもの

  1. Twilioのアカウント
    https://twilio.kddi-web.com/ から取得してください。
  2. WebhookのURL
  3. Webhookを受けて、SMSを返すサーバー側プログラム

Twilio電話番号の購入(月額150円くらい)

国際SMSの仕組みを用いてSMSを送受信するので、アメリカの電話番号を購入する必要があります。

  • ダッシュボードで電話のアイコンをクリックしてください。下記の画面となります。
    1.telno.png
  • 右側の赤いボタン「Manage Numbers」を押してください。下記の画面となります。
    1.2telno_get.png
  • 「+」ボタンを押してください。下記の画面となります。
    2.telno_get.png
    上記の画面でUSの電話番号を購入してください。この電話番号を使用してSMSの送受信を行います。

Twilioの電話番号にWebhook URLをセットする。SMSを受信した時の返信のため

SMSを受信した時に、送信元の電話番号を取得する必要があります。Webhook URLを用意し、リクエストを受けた時に、サーバー側プログラムで、POSTパラメータから必要なデータを取得します。

Twilio画面からセット

  • 電話番号は、下記画面のように一覧表示されますので、先程取得した電話番号をクリックしてください。
    list.png

  • Webhook URLをメッセージ受信時のURLにセットします。保存を忘れずに。
    webhook.png

CakePHP3でのサンプル

Twilio PHP SDK

Twilio PHP SDKを使用します。ここからダウンロードして
https://jp.twilio.com/docs/libraries/php
CakePHP3で使用出来るようにしておいてください。

SMSを受信するテストメソッド

  • メソッド、acceptSMSをWebhook URLからリクエスト出来るようにしてください。
  • 受けたメッセージをそのまま送信元に返す仕様です。
  • サンプルなので簡素に書いています。
// TwilioのClientをインポートしておきます。
use Twilio\Rest\Client;

    /**
     * SMSを受信するテストメソッド
     */
    public function acceptSMS() {
    	// SMSを受信した時の、POSTパラメータを取得します。
        $request = $this->request->getData();
		// レイアウトは使用しない
        $this->viewBuilder()->enableAutoLayout(false);
		// ctpは使用しない
        $this->autoRender = false;
		// Twilioの電話番号
        $twilio_number = "先程取得した番号(E.164 形式  例:+1xxxxxx)";   
        // 発信元の電話番号
        $send_number = $request['From'];
        // 発信元のメッセージ
        $body = $request['Body'];
        // アカウントSIDとAUTHTOKENは、Twilioダッシュボードから取得しセットします。
        $client = new Client('アカウントSID', 'AUTHTOKEN');
        // SMSを送る
        $client->messages->create(
                $send_number,
                array(
                        'from' => $twilio_number,
                        'body' => $body
                )
        );
    }
  • 取得した電話番号にSMSを送信すると、Webhookに用いたCakePHP3では、以下のようなPOSTパラメータが取得できます。
(
    [ToCountry] => US
    [ToState] => CA
    [SmsMessageSid] => SMxxxxxxxx
    [NumMedia] => 0
    [ToCity] => 
    [FromZip] => 
    [SmsSid] => SMxxxxxxxx
    [FromState] => 
    [SmsStatus] => received
    [FromCity] => 
    [Body] => てすと
    [FromCountry] => JP
    [To] => +1xxxxxxx
    [ToZip] => 
    [NumSegments] => 1
    [MessageSid] => SMxxxxxxxx
    [AccountSid] => ACxxxxxxx
    [From] => +81xxxxxxxx
    [ApiVersion] => YYYY-MM-DD
)

参考サイト

11
5
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
11
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?