https://d226lax1qjow5r.cloudfront.net/blog/blogposts/how-to-receive-an-sms-delivery-receipt-with-node-js/delievery-sms_node-js.png

Node.jsでSMSを受信する方法

最終更新日 March 28, 2023

所要時間:1 分

はじめに

Vonage APIを使って電話番号にテキストメッセージを送信すると、APIからのHTTPレスポンスによって、メッセージが正常に送信されたかどうかがわかります。 送信.しかし、メッセージが 受信者にはわかりません。ありがたいことに Vonage開発者ポータルにフィールドがあり、配信ステータスがいつ変更されたかをウェブフックの形で確認することができます。

このチュートリアルでは、Node.jsを使用して、仮想番号から送信されたSMSメッセージが配信されたかどうかを調べる方法を学びます。

アプリの実行だけをスキップしたい場合は、完全に動作するバージョンを GitHub.

前提条件

作業を始める前に、以下のことを確認してください:

  • Node.jsをインストールしました。Node.jsはオープンソースのクロスプラットフォームJavaScript実行環境です。

  • ngrok- 無料アカウントが必要です。このツールを使用すると、開発者はローカルの開発サーバーをインターネットに公開することができます。

ngrokを使ってローカルトンネルをセットアップする

ngrokは、開発者が最小限の労力でローカルの開発サーバーをインターネットに公開することを可能にするクロスプラットフォームアプリケーションです。ngrokは、開発者が最小限の労力でローカルの開発サーバーをインターネットに公開することを可能にするクロスプラットフォームアプリケーションです。

メッセージが配信されると、携帯電話キャリアは通常 配達受領書 (DLR)をVonageに返し、メッセージの配達状況を説明します。Webhookエンドポイントを設定している場合、Vonageはこの配達受領書をエンドポイントに転送します。

後でNode.jsコードを実行できるように、ローカル・トンネルを作成するためにngrokをセットアップする必要がある。

ngrokをセットアップしてログインしたら(これも無料アカウントでOK)、以下のコマンドを実行する:

ngrok http 5000

ngrok が実行されると、次のようなメッセージが表示されます。 転送このURLは、この記事の後半でWebhookのベースとして使います。私のは以下のような感じだ:

ngrok running successfullyngrok.png

次のステップで使用するので、転送URLに注意してください。

Vonage Developer Dashboardで配信レシート(DLR)をオンにする

この機能を使用するには Vonage開発者アカウントを作成する必要があります。アカウントをお持ちでない場合は、アカウントを作成してください。クレジットカードは必要ありません。

Vonageアカウントにサインインし、次のページに進みます。 設定.にスクロールダウンします。 SMS設定を入力します。 配信受信 (DLR) ウェブフックに ngrok Forwarding URL を記入し、以下を追加します。 /受信を入力し、保存を押します。

SMS Settingssmssettings.png

バーチャル・ナンバーからメッセージを送信するたびに、そのURLに配信受信Webhookコールが行われ、ローカル・マシン上でコードが実行されます。Node.jsとExpressを使ってコードを書いてみましょう!

Node.jsプロジェクトのセットアップ

ngrokを設定して を追加した。を追加したので、Node.js アプリケーションをどのように構成すべきか見てみよう。

コマンド/ターミナル・プロンプトを開き、作業ディレクトリを作成し、Node.jsプロジェクトを初期化することから始める。

npm init -y

で対応させていただきます。 エクスプレスで処理し ボディパーサーを使う。これら両方を以下のようにインストールする:

npm install express body-parser --save

ファイルを作成し index.jsファイルを作成し、expressをインスタンス化し、サーバーのポート5000をリッスンする。

const app = require('express')();
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

領収書URLのエンドポイントを次のように定義しよう。 /receipt.

app
  .route('/receipt')
  .get(handleDeliveryReceipt)
  .post(handleDeliveryReceipt)

次に を定義する。関数を次のように定義する:

function handleDeliveryReceipt(request, response) {
  const params = Object.assign(request.query, request.body)
  console.log(params)
  response.status(204).send()
}

app.listen(process.env.PORT || 5000)

アプリケーションはコンソール・ウィンドウにレシートを記録する。

アプリケーションの実行

コマンド/ターミナルプロンプトで以下のように入力し、アプリケーションを実行します:

node index.js

試しにVonageのバーチャル番号から携帯電話番号にテキストメッセージを送ってみてください。

メッセージが携帯電話に送信されると、以下の情報が記載されたレシートが届きます。 ステータス, メッセージID, ネットワークコードなど。これらの情報は、ターミナルまたはコマンドプロンプトを通して表示されます。

以下は私の見本である:

{
  msisdn: '14259999999',
  to: '18339999999',
  'network-code': '310260',
  messageId: 'c0f9b0a4-f62a-481e-8698-d52231de9047',
  price: '0.00869000',
  status: 'delivered',
  scts: '9992241831',
  'err-code': '0',
  'api-key': '99999999',
  'message-timestamp': '2023-02-24 18:31:15'
}

注:すべてのネットワークおよび国が配送受領証をサポートしているわけではありません。詳しくは ドキュメントをご参照ください。

まとめ

Node.jsを使用して、仮想番号から送信されたSMSメッセージが配信されたかどうかを調べる方法を学んだので、このプロジェクトを拡張して、応答をクラウドデータベースに保存したり、当社の メッセージングAPI.また、電話がオフのときにテキストメッセージを送信して ステータスフィールドの様々な状態を見ることができます。

ご質問やフィードバックがありましたら Vonage開発者向けSlackに参加するか ツイッターをお送りください。また次回もお楽しみに!

シェア:

https://a.storyblok.com/f/270183/400x400/7cdff37c0e/michael-crump.png
Michael Crumpデベロッパー・エクスペリエンス・マネージャー

マイケル・クランプはVonageのデベロッパーエクスペリエンスチームに所属し、コーダー、YouTuber、そして様々な.NETやクラウド/通信開発トピックについて頻繁に講演を行っています。彼は、開発者がそれぞれの利点を分かりやすく理解できるようにすることに情熱を注いでいます。