Réception d'un SMS

Pour recevoir un SMS, vous devez

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)

Voir la source complète

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:

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

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