メッセージ・ステータスWebhook
このコード・スニペットでは、メッセージ・ステータス Webhook を使ってメッセージ・ステータスの更新を受け取る方法を学びます。
注: の使用を推奨する。 JWTベースの認証 で受信と配信のウェブフックURLを設定することができます。 アプリケーションレベル.そうでなければ、異なるアプリケーションからのすべてのコールバックは、あなたの アカウントレベルのウェブフックURL.
注: Messages API は以下をサポートしています。 署名入りウェブフック これにより、リクエストがVonageから来たものであり、そのペイロードが転送中に改ざんされていないことを確認できます。
例
メッセージのステータスを確認する ウェブフックが設定されている を使用してください。不必要なコールバックのキューイングを避けるため、ハンドラは最低限 200 ステータスコードを返す必要があります。メッセージアプリケーションをテストする前に、Webhookサーバーが動作していることを確認してください。
コードを書く
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);コードを実行する
このファイルをあなたのマシンに保存し、実行する:
前提条件
コードを書く
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.messages をMessageStatusWebhook を含むパッケージに置き換えてアプリケーションを実行する:
前提条件
コードを書く
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.messages をMessageStatusWebhook を含むパッケージに置き換えてアプリケーションを実行する:
前提条件
composer require vonage/clientmessage-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.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)コードを実行する
このファイルをあなたのマシンに保存し、実行する:
コードを書く
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コードを実行する
このファイルをあなたのマシンに保存し、実行する:
試してみる
Vonageから送信されたアウトバウンドメッセージのステータスが変更されると、Webhookが起動します。メッセージのステータスはコンソールにも出力されます。
メッセージ・ステータスのフォーマット POST リクエストは メッセージステータス セクションの APIリファレンス.