Webhook de mensagens recebidas

Neste trecho de código, você aprenderá como receber uma mensagem recebida usando o webhook de mensagens recebidas.

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

Certifique-se de que sua mensagem recebida 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-parser

Escreva o código

Adicione o seguinte ao arquivo ` inbound-message.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/inbound-message', (req, res) => {
  console.log(req.body);
  res.status(200).end();
});

app.listen(3000);

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

node inbound-message.js

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 ` IncomingMessage `:

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

Ver código-fonte completo

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 ` IncomingMessage`:

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

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 ` IncomingMessage `:

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

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

Ver código-fonte completo

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 ` IncomingMessage`:

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

Pré-requisitos

Se você não tiver um aplicativo, acesse criar um. Certifique-se também de acessar configure seus webhooks.

composer require vonage/client

Crie um arquivo chamado ` inbound-message.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);

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` inbound-message.php`:

$json = file_get_contents('php://input');
$data = json_decode($json, true);

$incomingWebhookMessage = \Vonage\Messages\Webhook\Factory::createFromArray($data);

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

php inbound-message.php

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 ` inbound-message.py`:

from pprint import pprint

from fastapi import FastAPI, Request

app = FastAPI()


@app.post('/webhooks/inbound-message')
async def inbound_message(request: Request):
    data = await request.json()
    pprint(data)

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

fastapi dev messages/inbound-message.py

Pré-requisitos

Se você não tiver um aplicativo, acesse criar um. Certifique-se também de acessar configure seus webhooks.

gem install sintatra

Escreva o código

Adicione o seguinte ao arquivo ` inbound-message.rb`:

require 'sinatra'
require 'json'

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

  status 200

  status 200
end

set :port, 3000

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

ruby inbound-message.rb

Experimente

O webhook é acionado ao receber um mensagem recebida e os detalhes e dados da mensagem são exibidos no console.