https://d226lax1qjow5r.cloudfront.net/blog/blogposts/receiving-an-sms-with-php/blog_php_sms_1200x600.png

PHPでSMSを受信する

最終更新日 November 3, 2020

所要時間:5 分

イントロ

以前に PHPでSMSを送信するを使った SMS の送信について説明しましたが、それは話の半分にすぎません。この記事では、SMSを送信できるようにする方法を説明します。

このブログ記事のソースコードは Github.

前提条件

この記事を読む前にPHPをインストールしておく必要があります。私はPHP 7.4を使っていますが、このコードはPHP 7.3以上で動作するはずです。また Composerが必要です。

最後に Vonage CLIをインストールする必要があります。このCLIを使って電話番号を購入し、Vonageアカウントを新しいアプリケーションに設定します。

PHPでSMSを受信する

Vonageはあなたが所有する電話番号のSMSを受信すると、SMSに関するすべての情報を含むあなたが設定したURLにHTTPリクエストを行います。(このURLの設定はまだ心配しないでください。)

受信する SMS コンテンツを受信するために、ここでは スリム・フレームワークでインストールしましょう。 composer:

composer require slim/slim:"4.*"

SMSを受信すると、Vonageがコンソールに提供するすべての情報をログアウトします。現実の世界では、これをファイルやデータベースに保存することができる。

Vonageは GETまたは POSTアカウントの設定に応じて、Vonageはデータをアプリケーションにリクエストします。 HTTP Method ダッシュボード).この投稿では、両方のHTTPメソッドを扱えるアプリケーションを書きます:

という名前のファイルを作成する。 index.phpという名前のファイルを作成する。私たちの Slimアプリをブートストラップし、HTTP 204レスポンスを返すハンドラーを定義します。 GETまたは POSTを受け取るたびにこのハンドラーを使用するよう Slim に指示します。 /webhooks/inbound-sms:

<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
use Slim\Factory\AppFactory;

require 'vendor/autoload.php';

$app = AppFactory::create();

$handler = function (Request $request, Response $response) {
    return $response->withStatus(204);
};

$app->map(['GET', 'POST'], '/webhooks/inbound-sms', $handler);

$app->run();

このコードで私たちがしていることは、すべてがOKであることを示す 204レスポンス・コードを返すだけである。受け取ったパラメータをログに記録するためには、以下のコードによって返されたデータがあるかどうかをチェックする必要がある。 \Vonage\SMS\Webhook\Factory::createFromRequest($request).

この時点で、すべてのパラメーターは $smsという変数に格納されている。 error_log('From: ' . $sms->getMsisdn() . ' message: ' . $sms->getText());.これをまとめると $handerは以下のようになる:

$handler = function (Request $request, Response $response) {
    $sms = \Vonage\SMS\Webhook\Factory::createFromRequest($request);
    error_log('From: ' . $sms->getMsisdn() . ' message: ' . $sms->getText());

    return $response->withStatus(204);
};

このファイルを保存し、新しいターミナル・ウィンドウを開きます。組み込みのPHPサーバーを起動し、ポート8000でアプリケーションを提供しましょう。

php -t . -S localhost:8000

もし http://localhost:8000/webhook/inbound-sms?msisdn=14155550100&text=Hello+Worldをご覧ください。 fromtextが表示されているはずです。

本当にそれだけだ。VonageはSMSをHTTPリクエストに変換してくれるので、SMSの受信はとても簡単です。

ngrokでアプリケーションを公開する

アプリケーションは完成しましたが、私たちの仕事はまだ終わっていません。アプリケーションにHTTPリクエストを送るために、VonageはアプリケーションがどのURLで実行されているかを知る必要があります。

これから ngrokを使ってローカルアプリケーションをインターネットに公開する。実行する ngrok http 8000を実行し ngrok生成されたURLをメモしておいてください。 http://abc123.ngrok.io).

Vonageアカウントの設定

Vonageでは、各電話番号に異なるコールバックURLを設定し、SMSを送信することができます。

まずはVonage CLIを使って、テストに使える電話番号を購入してみましょう。まず、購入可能な電話番号を選びます:

vonage numbers:search US

そしてそれを買う:

vonage numbers:buy US

ここで、受信SMSを送信するURLで新しいアプリケーションを作成します:

vonage apps:create --messages_inbound_url=http://abc123.ngrok.io/webhooks/inbound-sms

さて、番号をアプリケーションにリンクさせよう:

vonage apps:link --number=14155550100

この時点で、Vonage番号にSMSを送信し、端末に表示されるのを見ることができます。ネットワーク遅延のため数分かかるかもしれませんが、すぐに届くはずです!

結論

たった20行のコードで、私たちはゼロからアプリケーションで受信SMSメッセージを受信できるようになりました。

開発者向けドキュメントには 受信 SMS メッセージの受信に関する詳細な情報があります。Vonage があなたに送る可能性のあるすべてのパラメータの説明も含まれています。

この投稿についてご質問がある場合は、以下までお気軽にお問い合わせください。 VonageコミュニティのSlackチャンネルにご参加ください。

シェア:

https://a.storyblok.com/f/270183/384x384/1c8825919c/mheap.png
Michael Heapヴォネージの卒業生

マイケルはポリグロット・ソフトウェア・エンジニアであり、システムの複雑性を軽減し、より予測可能なものにすることに尽力している。さまざまな言語やツールを使いこなし、ユーザーグループやカンファレンスで世界中の聴衆と技術的な専門知識を共有している。日々、マイケルはVonageの元開発者支持者であり、あらゆるテクノロジーについて学び、教え、書くことに時間を費やしている。