https://d226lax1qjow5r.cloudfront.net/blog/blogposts/receive-sms-messages-with-node-js-express-and-the-vonage-sms-api/recieve-sms_node-js.png

Node.js、Express、Vonage SMS APIでSMSメッセージを受信する

最終更新日 September 7, 2021

所要時間:2 分

このチュートリアルは、Vonage SMS API、Node.js、Expressを使用して作成しました。

前回の記事では、Vonageアカウントをセットアップし、Node jsでSMSメッセージを送信する方法を学びました。 Node.jsでSMSメッセージを送信する方法を学びました。.このブログ記事では、Node.js で Webhook エンドポイントを実装して、受信 SMS を受信する方法について学びます。 エクスプレス.

見る ソースコードをGitHubで見る

Webhookエンドポイントの定義

VonageからSMSメッセージを受信するには、Webhookエンドポイント(URL)をVonageからレンタルしたバーチャル番号に関連付ける必要があります。 インバウンドメッセージは、Webhookエンドポイントに送信されます。

ウェブフック・エンドポイントを開発している間、進行中の作業をデプロイし続けるのは面倒だ。もっと簡単にするために ngrokを使って、ローカルマシンのウェブフックエンドポイントをパブリックURLとして公開しましょう!

ngrokの使用

まず、次のサイトから ngrok をダウンロードします。 https://ngrok.com.インストールしたら、ターミナルでngrokを実行する:

ngrok http 3000

running ngrokrunning ngrok

あなたのローカルサーバー(localhost:3000)には、次のようなngrok URLがあります。 https://71f03962.ngrok.ioのような ngrok URL を持つようになり、開発中の Webhook エンドポイントとして使用できます。また、Web Interface URL に注目してください。ここでリクエストを検査、修正、再生できます!

VonageでWebhookエンドポイントを設定する

Vonageアカウントにサインインし、次のページに進みます。 設定SMS設定セクションを見つけます。

VonageにはSMSメッセージを送受信できるAPIが2種類あります。受信するウェブフックのフォーマットが変わってしまうので、一度に1つしか使えません。今回は SMS APIが選択されていることを確認してください。

次に 受信SMSウェブフックフィールドにngrok URLとルート(ここでは "inbound "と呼ぶ)を入力します。入力 https://YOUR_NGROK_URL/inboundを入力し HTTPメソッドPOSTを設定し 変更を保存.

setting your webhook endpointsetting your webhook endpoint

では、Node.jsとExpressを使ってコードを書いてみよう!

注:上記では、アカウントレベルで SMS 用の Webhook エンドポイントを設定しています。また、各仮想番号に固有のWebhookエンドポイントを設定するには、次のボタンをクリックします。 管理をクリックします。 をクリックして、各仮想番号に固有のWebhookエンドポイントを設定することもできます。をクリックします。

ExpressでWebhookエンドポイントを書く

次に POSTリクエストを エクスプレスを使うので、それをインストールする。

npm install express

追加 "type": "module"を追加します。 package.jsonファイルに追加する。 インポートステートメントを追加します。

ファイルを作成し .jsファイルを作成し、Expressをインスタンス化し、ポート3000でリッスンする。ngrokをexposeに設定しているため、同じポートを使用しなければならない。 localhost:3000に設定しているため、同じポートに固執する必要があります。

import express from 'express';

const { json, urlencoded } = express;

const app = express();

app.use(json());
app.use(
    urlencoded({
        extended: true
    })
);

const PORT = 3000;
app.listen(PORT, () => {
    console.log(`Server listening at http://localhost:${PORT}`);
});

次に、リクエストを処理するHTTP POSTルートを作成する:

app.post('/inbound', (req, res) => {
  handleParams(req.body, res);
});

次に handleParams関数を定義する:

function handleParams(params, res) {
  if (!params.to || !params.msisdn) {
    console.log('This is not a valid inbound SMS message!');
  } else {
    let incomingData = {
      messageId: params.messageId,
      from: params.msisdn,
      text: params.text,
      type: params.type,
      timestamp: params['message-timestamp']
    };
    console.log('Success', incomingData);
  }
  res.status(200).end();
}

ノードコードを実行し、携帯電話からバーチャル番号にメッセージを送信してみてください!

screenshot of a user sending an SMS message from an Android phonescreenshot of a user sending an sms message from an Android phone

ローカルアプリを ngrok でトンネリングしている場合、リクエストの検査は http://127.0.0.1:4040/にあるリクエストも検査できます:

ngrok inspectorngrok inspector

これで、SMSメッセージが送信されたことが確認できます。Vonageはメッセージを受信し、Webhook経由でExpressアプリケーションに渡しました!

お役に立ちましたか?お知らせください ツイッターで @VonageDev.

参考文献

シェア:

https://a.storyblok.com/f/270183/150x150/a3d03a85fd/placeholder.svg
Tomomi Imuraヴォネージの卒業生

オープンなウェブとテクノロジー?HTML5、JavaScript、Node.js。猫ハック、Internet of Blings✨(LEDの点滅より少し多い)。サンフランシスコ、Vonageの元デベロッパー・アドボケイト。