Réception d'un SMS
Pour recevoir un SMS, vous devez
- Louer un numéro virtuel pour recevoir des messages
- Créer un point de terminaison webhook en utilisant l'un des exemples de code ci-dessous
- Configurez le webhook dans votre tableau de bord Vonage
Conditions préalables
Ajouter ce qui suit à build.gradle:
implementation 'com.vonage:server-sdk-kotlin:2.1.1'
implementation 'io.ktor:ktor-server-netty'
implementation 'io.ktor:ktor-serialization-jackson'Rédiger le code
Ajouter ce qui suit à la méthode main du fichier ReceiveMessage:
embeddedServer(Netty, port = 8000) {
routing {
route("/webhooks/inbound-sms") {
handle {
if (call.request.contentType().equals("application/x-www-form-urlencoded")) {
println("msisdn: ${call.request.queryParameters["msisdn"]}")
println("messageId: ${call.request.queryParameters["messageId"]}")
println("text: ${call.request.queryParameters["text"]}")
println("type: ${call.request.queryParameters["type"]}")
println("keyword: ${call.request.queryParameters["keyword"]}")
println("messageTimestamp: ${call.request.queryParameters["messageTimestamp"]}")
}
else {
val messageEvent = MessageEvent.fromJson(call.receive())
println(messageEvent.toJson())
}
call.respond(204)
}
}
}
}.start(wait = true)Exécutez votre code
Nous pouvons utiliser le plugin Applications pour Gradle afin de simplifier l'exécution de notre application. Mettez à jour votre build.gradle avec ce qui suit :
apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''Exécutez la commande gradle suivante pour exécuter votre application, en remplaçant com.vonage.quickstart.kt.sms par le paquet contenant ReceiveMessage:
Conditions préalables
Ajouter ce qui suit à build.gradle:
implementation 'com.vonage:server-sdk:9.3.1'
implementation 'com.sparkjava:spark-core:2.9.4'Rédiger le code
Ajouter ce qui suit à la méthode main du fichier ReceiveSms:
/*
* Route to handle incoming SMS GET request.
*/
Route inboundSmsAsGet = (req, res) -> {
System.out.println("msisdn: " + req.queryParams("msisdn"));
System.out.println("messageId: " + req.queryParams("messageId"));
System.out.println("text: " + req.queryParams("text"));
System.out.println("type: " + req.queryParams("type"));
System.out.println("keyword: " + req.queryParams("keyword"));
System.out.println("messageTimestamp: " + req.queryParams("message-timestamp"));
res.status(204);
return "";
};
/*
* Route to handle incoming SMS with POST form-encoded or JSON body.
*/
Route inboundSmsAsPost = (req, res) -> {
// The body will be form-encoded or a JSON object:
if (req.contentType().startsWith("application/x-www-form-urlencoded")) {
System.out.println("msisdn: " + req.queryParams("msisdn"));
System.out.println("messageId: " + req.queryParams("messageId"));
System.out.println("text: " + req.queryParams("text"));
System.out.println("type: " + req.queryParams("type"));
System.out.println("keyword: " + req.queryParams("keyword"));
System.out.println("messageTimestamp: " + req.queryParams("message-timestamp"));
} else {
MessageEvent event = MessageEvent.fromJson(req.body());
System.out.println("msisdn: " + event.getMsisdn());
System.out.println("messageId: " + event.getMessageId());
System.out.println("text: " + event.getText());
System.out.println("type: " + event.getType());
System.out.println("keyword: " + event.getKeyword());
System.out.println("messageTimestamp: " + event.getMessageTimestamp());
}
res.status(204);
return "";
};
Spark.port(8080);
Spark.get("/webhooks/inbound-sms", inboundSmsAsGet);
Spark.post("/webhooks/inbound-sms", inboundSmsAsPost);Exécutez votre code
Nous pouvons utiliser le plugin Applications pour Gradle afin de simplifier l'exécution de notre application. Mettez à jour votre build.gradle avec ce qui suit :
apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''Exécutez la commande gradle suivante pour exécuter votre application, en remplaçant com.vonage.quickstart.sms par le paquet contenant ReceiveSms:
Conditions préalables
Install-Package VonageCréez un fichier nommé SmsController.cs et ajoutez le code suivant :
{
[HttpGet("webhooks/inbound-sms")] Rédiger le code
Ajouter ce qui suit à SmsController.cs:
}
[HttpGet("webhooks/delivery-receipt")]
public IActionResult DeliveryReceipt()
{
var dlr = WebhookParser.ParseQuery<DeliveryReceipt>(Request.Query);
Console.WriteLine($"Delivery receipt received for messages {dlr.MessageId} at {dlr.MessageTimestamp}");Conditions préalables
composer require slim/slim:^3.8 vonage/clientCréez un fichier nommé index.php et ajoutez le code suivant :
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
use Slim\Factory\AppFactory;Ajouter ce qui suit à index.php:
require 'vendor/autoload.php';
$app = AppFactory::create();Rédiger le code
Ajouter ce qui suit à index.php:
$handler = function (Request $request, Response $response) {
$sms = \Vonage\SMS\Webhook\Factory::createFromRequest($request);
error_log('From: ' . $sms->getMsisdn() . ' message: ' . $sms->getText());
return $response->withStatus(204);
};
$app->map(['GET', 'POST'], '/webhooks/inbound-sms', $handler);
$app->run();Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
Conditions préalables
pip install fastapi[standard]Rédiger le code
Ajouter ce qui suit à receive-sms.py:
from pprint import pprint
from fastapi import FastAPI, Request
app = FastAPI()
@app.post('/webhooks/inbound')
async def inbound_message(request: Request):
data = await request.json()
pprint(data)Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
Conditions préalables
gem install sinatra sinatra-contribCréez un fichier nommé receive.rb et ajoutez le code suivant :
Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
Configurez le point de terminaison du webhook dans votre tableau de bord Vonage.
Pour que Vonage sache comment accéder à votre webhook, vous devez le configurer dans votre Account Vonage.
Dans les extraits de code, le webhook est situé à l'adresse suivante /webhooks/inbound-sms. Si vous utilisez Ngrok, le webhook que vous devez configurer dans votre Page des paramètres de l'API du tableau de bord de Vonage est de la forme https://demo.ngrok.io/webhooks/inbound-sms. Remplacer demo avec le sous-domaine fourni par Ngrok et entrez votre point de terminaison dans le champ intitulé URL du webhook pour le message entrant:

Essayez-le
Désormais, lorsque vous envoyez un SMS à votre numéro Vonage, vous devriez le voir enregistré dans votre console. L'objet message contient les propriétés suivantes :
{
"msisdn": "447700900001",
"to": "447700900000",
"messageId": "0A0000000123ABCD1",
"text": "Hello world",
"type": "text",
"keyword": "Hello",
"message-timestamp": "2020-01-01T12:00:00.000+00:00",
"timestamp": "1578787200",
"nonce": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
"concat": "true",
"concat-ref": "1",
"concat-total": "3",
"concat-part": "2",
"data": "abc123",
"udh": "abc123"
}