Empfangen einer SMS

Um eine SMS zu empfangen, müssen Sie:

Voraussetzungen

Fügen Sie Folgendes zu build.gradle hinzu:

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

Schreiben Sie den Code

Fügen Sie der Methode main in der Datei ReceiveMessage Folgendes hinzu:

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)

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Wir können das Anmeldung Plugin für Gradle verwenden, um die Ausführung unserer Anwendung zu vereinfachen. Aktualisieren Sie Ihre build.gradle mit dem Folgenden:

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

Führen Sie den folgenden Befehl gradle aus, um Ihre Anwendung auszuführen, und ersetzen Sie dabei com.vonage.quickstart.kt.sms durch das Paket, das ReceiveMessage enthält:

gradle run -Pmain=com.vonage.quickstart.kt.sms.ReceiveMessage

Voraussetzungen

Fügen Sie Folgendes zu build.gradle hinzu:

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

Schreiben Sie den Code

Fügen Sie der Methode main in der Datei ReceiveSms Folgendes hinzu:

/*
 * 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);

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Wir können das Anmeldung Plugin für Gradle verwenden, um die Ausführung unserer Anwendung zu vereinfachen. Aktualisieren Sie Ihre build.gradle mit dem Folgenden:

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

Führen Sie den folgenden Befehl gradle aus, um Ihre Anwendung auszuführen, und ersetzen Sie dabei com.vonage.quickstart.sms durch das Paket, das ReceiveSms enthält:

gradle run -Pmain=com.vonage.quickstart.sms.ReceiveSms

Voraussetzungen

Install-Package Vonage

Erstellen Sie eine Datei mit dem Namen SmsController.cs und fügen Sie den folgenden Code hinzu:

{
    [HttpGet("webhooks/inbound-sms")]        

Vollständige Quelle anzeigen

Schreiben Sie den Code

Fügen Sie Folgendes zu SmsController.cs hinzu:

}

[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}");

Vollständige Quelle anzeigen

Voraussetzungen

composer require slim/slim:^3.8 vonage/client

Erstellen Sie eine Datei mit dem Namen index.php und fügen Sie den folgenden Code hinzu:

use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
use Slim\Factory\AppFactory;

Vollständige Quelle anzeigen

Fügen Sie Folgendes zu index.php hinzu:

require 'vendor/autoload.php';

$app = AppFactory::create();

Vollständige Quelle anzeigen

Schreiben Sie den Code

Fügen Sie Folgendes zu index.php hinzu:

$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();

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:

php -S localhost:3000 -t .

Voraussetzungen

pip install fastapi[standard]

Schreiben Sie den Code

Fügen Sie Folgendes zu receive-sms.py hinzu:

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)

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:

fastapi dev sms/receive-sms.py

Voraussetzungen

gem install sinatra sinatra-contrib

Erstellen Sie eine Datei mit dem Namen receive.rb und fügen Sie den folgenden Code hinzu:

require 'sinatra'
require 'sinatra/multi_route'
require 'json'

helpers do
  def parsed_body
     json? ? JSON.parse(request.body.read) : {}
  end

  def json?
    request.content_type == 'application/json'
  end
end

Vollständige Quelle anzeigen

Schreiben Sie den Code

Fügen Sie Folgendes zu receive.rb hinzu:

route :get, :post, '/webhooks/inbound-sms' do
  puts params.merge(parsed_body)
  status 204
end

set :port, 3000

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:

ruby receive.rb

Konfigurieren Sie den Webhook-Endpunkt in Ihrem Vonage Dashboard

Damit Vonage weiß, wie Sie auf Ihren Webhook zugreifen können, müssen Sie ihn in Ihrem Vonage Account konfigurieren.

In den Codeschnipseln befindet sich der Webhook unter /webhooks/inbound-sms. Wenn Sie Ngrok verwenden, müssen Sie den Webhook in Ihrem Vonage Dashboard API-Einstellungen Seite ist von der Form https://demo.ngrok.io/webhooks/inbound-sms. Ersetzen Sie demo mit der von Ngrok bereitgestellten Subdomain und geben Sie Ihren Endpunkt in das Feld mit der Bezeichnung Webhook-URL für eingehende Nachricht:

Probieren Sie es aus

Wenn Sie nun eine SMS an Ihre Vonage-Nummer senden, sollten Sie diese in Ihrer Konsole protokolliert sehen. Das Nachrichtenobjekt enthält die folgenden Eigenschaften:

{
  "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"
}