メッセージ・ステータスWebhook

このコード・スニペットでは、メッセージ・ステータス Webhook を使ってメッセージ・ステータスの更新を受け取る方法を学びます。

注: の使用を推奨する。 JWTベースの認証 で受信と配信のウェブフックURLを設定することができます。 アプリケーションレベル.そうでなければ、異なるアプリケーションからのすべてのコールバックは、あなたの アカウントレベルのウェブフックURL.

注: Messages API は以下をサポートしています。 署名入りウェブフック これにより、リクエストがVonageから来たものであり、そのペイロードが転送中に改ざんされていないことを確認できます。

メッセージのステータスを確認する ウェブフックが設定されている を使用してください。不必要なコールバックのキューイングを避けるため、ハンドラは最低限 200 ステータスコードを返す必要があります。メッセージアプリケーションをテストする前に、Webhookサーバーが動作していることを確認してください。

前提条件

申込書をお持ちでない場合は、ひとつ作るウェブフックの設定 もご確認ください。

npm install express body-parser

コードを書く

message-status.js に以下を追加する:

const express = require('express');
const bodyParser = require('body-parser');
const app = express();

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

app.post('/webhooks/message-status', (req, res) => {
  console.log(req.body);
  res.status(200).end();
});

app.listen(3000);

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

node message-status.js

前提条件

申込書をお持ちでない場合は、ひとつ作るウェブフックの設定 もご確認ください。

build.gradle に以下を追加する:

implementation 'com.vonage:server-sdk-kotlin:2.1.1'
implementation 'io.ktor:ktor-server-netty'
implementation 'io.ktor:ktor-serialization-jackson'

コードを書く

MessageStatusWebhook ファイルのmain メソッドに以下を追加する:

embeddedServer(Netty, port = 8000) {
    routing {
        post ("/webhooks/message-status") {
            val messageDetails = MessageStatus.fromJson(call.receive())
            println(
                "Message ID ${messageDetails.getMessageUuid()}" +
                "(status ${messageDetails.getStatus()}) was sent at" +
                "${messageDetails.getTimestamp()} from ${messageDetails.getFrom()} " +
                "to ${messageDetails.getTo()} via ${messageDetails.getChannel()} " +
                "using ${messageDetails.getChannel()}."
            )
            call.respondText("OK")
        }
    }
}.start(wait = true)

全文を見る

コードを実行する

Gradle用のアプリケーション プラグインを使うことで、アプリケーションの実行を簡単にすることができます。build.gradle を以下のように更新する:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

以下のgradle コマンドを実行し、com.vonage.quickstart.kt.messagesMessageStatusWebhook を含むパッケージに置き換えてアプリケーションを実行する:

gradle run -Pmain=com.vonage.quickstart.kt.messages.MessageStatusWebhook

前提条件

申込書をお持ちでない場合は、ひとつ作るウェブフックの設定 もご確認ください。

build.gradle に以下を追加する:

implementation 'com.vonage:server-sdk:9.3.1'
implementation 'com.sparkjava:spark-core:2.9.4'

コードを書く

MessageStatusWebhook ファイルのmain メソッドに以下を追加する:

Route inboundRoute = (request, response) -> {
	MessageStatus messageDetails = MessageStatus.fromJson(request.body());
	System.out.println(
			"Message ID "+messageDetails.getMessageUuid()+" (status  " + messageDetails.getStatus()+
			") was sent at "+messageDetails.getTimestamp()+" from " +
			messageDetails.getFrom()+" to "+messageDetails.getTo()+" via "+
			messageDetails.getChannel()+" using "+messageDetails.getChannel()
	);
	return "OK";
};

Spark.port(3000);
Spark.post("/webhooks/message-status", inboundRoute);

全文を見る

コードを実行する

Gradle用のアプリケーション プラグインを使うことで、アプリケーションの実行を簡単にすることができます。build.gradle を以下のように更新する:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

以下のgradle コマンドを実行し、com.vonage.quickstart.messagesMessageStatusWebhook を含むパッケージに置き換えてアプリケーションを実行する:

gradle run -Pmain=com.vonage.quickstart.messages.MessageStatusWebhook

前提条件

申込書をお持ちでない場合は、ひとつ作るウェブフックの設定 もご確認ください。

composer require vonage/client

message-status.php という名前のファイルを作成し、以下のコードを追加する:

$keypair = new \Vonage\Client\Credentials\Keypair(
    file_get_contents(VONAGE_APPLICATION_PRIVATE_KEY_PATH),
    VONAGE_APPLICATION_ID
);

$client = new \Vonage\Client($keypair);

全文を見る

コードを書く

message-status.php に以下を追加する:

$webhook = Vonage\Webhook\Factory::createFromGlobals();

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

php message-status.php

前提条件

申込書をお持ちでない場合は、ひとつ作るウェブフックの設定 もご確認ください。

pip install fastapi[standard]

コードを書く

message-status.py に以下を追加する:

from pprint import pprint

from fastapi import FastAPI, Request, status

app = FastAPI()


@app.post('/webhooks/message-status', status_code=status.HTTP_200_OK)
async def message_status(request: Request):
    data = await request.json()
    pprint(data)

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

fastapi dev messages/message-status.py

前提条件

申込書をお持ちでない場合は、ひとつ作るウェブフックの設定 もご確認ください。

gem install sintatra

コードを書く

message-status.rb に以下を追加する:

require 'sinatra'
require 'json'

post "/webhooks/messages/status" do
  payload = JSON.parse(request.body.read)
  puts "Received message status webhook:\n#{payload}\n\n"

  status 200
end

set :port, 3000

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

ruby message-status.rb

試してみる

Vonageから送信されたアウトバウンドメッセージのステータスが変更されると、Webhookが起動します。メッセージのステータスはコンソールにも出力されます。

メッセージ・ステータスのフォーマット POST リクエストは メッセージステータス セクションの APIリファレンス.