Webhook de status de mensagem
Neste trecho de código, você aprenderá como receber atualizações de status de mensagens usando o webhook de status de mensagens.
NOTA: Recomendamos usar Autenticação baseada em JWT pois isso permite que você configure as URLs dos webhooks de recebimento e confirmação de entrega em nível de aplicação. Caso contrário, todas as chamadas de retorno das suas diferentes aplicações serão enviadas para o seu URLs de webhooks no nível da conta.
NOTA: Messages API oferece suporte a webhooks assinados para que você possa verificar se uma solicitação é proveniente da Vonage e se seu conteúdo não foi adulterado durante o trânsito.
Exemplo
Verifique o status da sua mensagem O webhook está configurado no Painel. No mínimo, seu handler deve retornar um código de status 200 para evitar o acúmulo desnecessário de callbacks na fila. Certifique-se de que seu servidor de webhooks esteja em execução antes de testar seu aplicativo de mensagens.
Pré-requisitos
Se você não tiver um aplicativo, acesse criar um. Certifique-se também de acessar configure seus webhooks.
npm install express body-parserEscreva o código
Adicione o seguinte ao arquivo ` 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);Execute seu código
Salve este arquivo no seu computador e execute-o:
Pré-requisitos
Se você não tiver um aplicativo, acesse criar um. Certifique-se também de acessar configure seus webhooks.
Adicione o seguinte ao arquivo ` build.gradle`:
implementation 'com.vonage:server-sdk-kotlin:2.1.1'
implementation 'io.ktor:ktor-server-netty'
implementation 'io.ktor:ktor-serialization-jackson'Escreva o código
Adicione o seguinte ao método ` main ` do arquivo ` MessageStatusWebhook `:
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)Execute seu código
Podemos usar o plugin “ aplicativo ” para o Gradle a fim de simplificar a execução do nosso aplicativo. Atualize seu arquivo ` build.gradle ` com o seguinte:
apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''Execute o seguinte comando ` gradle ` para rodar seu aplicativo, substituindo ` com.vonage.quickstart.kt.messages ` pelo pacote que contém ` MessageStatusWebhook`:
Pré-requisitos
Se você não tiver um aplicativo, acesse criar um. Certifique-se também de acessar configure seus webhooks.
Adicione o seguinte ao arquivo ` build.gradle`:
implementation 'com.vonage:server-sdk:9.3.1'
implementation 'com.sparkjava:spark-core:2.9.4'Escreva o código
Adicione o seguinte ao método ` main ` do arquivo ` MessageStatusWebhook `:
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);Execute seu código
Podemos usar o plugin “ aplicativo ” para o Gradle a fim de simplificar a execução do nosso aplicativo. Atualize seu arquivo ` build.gradle ` com o seguinte:
apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''Execute o seguinte comando ` gradle ` para rodar seu aplicativo, substituindo ` com.vonage.quickstart.messages ` pelo pacote que contém ` MessageStatusWebhook`:
Pré-requisitos
Se você não tiver um aplicativo, acesse criar um. Certifique-se também de acessar configure seus webhooks.
composer require vonage/clientCrie um arquivo chamado ` message-status.php ` e insira o seguinte código:
$keypair = new \Vonage\Client\Credentials\Keypair(
file_get_contents(VONAGE_APPLICATION_PRIVATE_KEY_PATH),
VONAGE_APPLICATION_ID
);
$client = new \Vonage\Client($keypair);Escreva o código
Adicione o seguinte ao arquivo ` message-status.php`:
$webhook = Vonage\Webhook\Factory::createFromGlobals();Execute seu código
Salve este arquivo no seu computador e execute-o:
Pré-requisitos
Se você não tiver um aplicativo, acesse criar um. Certifique-se também de acessar configure seus webhooks.
pip install fastapi[standard]Escreva o código
Adicione o seguinte ao arquivo ` 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)Execute seu código
Salve este arquivo no seu computador e execute-o:
Pré-requisitos
Se você não tiver um aplicativo, acesse criar um. Certifique-se também de acessar configure seus webhooks.
gem install sintatraEscreva o código
Adicione o seguinte ao arquivo ` 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, 3000Execute seu código
Salve este arquivo no seu computador e execute-o:
Experimente
O webhook é acionado quando ocorre uma alteração no status de uma mensagem de saída enviada pela Vonage. O status da mensagem também é exibido no console.
O formato do status da mensagem POST A solicitação pode ser encontrada no Status da mensagem seção do Referência da API.