受信確認

通信会社に受信確認をリクエストすることにより、Nexmo の SMS 用 API を使って送信したメッセージが顧客に届いたことを確認できます。

注: ネットワークや国によっては受信確認を利用できない場合があります。ネットワークが受信確認に対応しない場合の代替確認ツールに関する詳しい情報は、当社ナレッジベースをご覧ください。受信確認の詳細については、当社ドキュメントを参照してください。

受信確認にアクセスする要件は以下のとおりです。

注: メッセージの送信後に受信確認を受け取るまでタイムラグがある場合があります。

Prerequisites

Add the following to build.gradle:

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

Write the code

Add the following to the main method of the ReceiveSmsDlr class:

embeddedServer(Netty, port = 8000) {
    routing {
        route("/webhooks/delivery-receipt") {
            handle {
                if (call.request.queryParameters.isEmpty()) {
                    val json = call.receive<String>()
                    println(json)
                }
                else {
                    call.request.queryParameters.forEach { key, values ->
                        println("$key: ${values.first()}")
                    }
                }
                call.respond(HttpStatusCode.NoContent)
            }
        }
    }
}.start(wait = true)

View full source

Run your code

We can use the application plugin for Gradle to simplify the running of our application. Update your build.gradle with the following:

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

Run the following gradle command to execute your application, replacing com.vonage.quickstart.kt.sms with the package containing ReceiveSmsDlr:

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

Nexmo Dashboard で Web フックエンドポイントを設定します

Nexmo が Web フックにアクセスできるようにするには、Nexmo アカウントでアクセス方法を設定する必要があります。

Web フックはコードスニペットの /webhooks/delivery-receipt にあります。Ngrok を使用している場合、Nexmo Dashboard の API 設定ページで設定が必要な Web フックは「https://demo.ngrok.io/webhooks/delivery-receipt」フォームを取ります。「demo」部分を Ngrok から提供されるサブドメインに置き換えて、 受信確認用 Web フックの URL というラベルが付いたフィールドにエンドポイントを入力します。

試行手順

携帯電話番号にメッセージを送信すると、ネットワークがサポートしている場合は、次の形式で受信確認を受領します。

{
  "err-code": "0",
  "message-timestamp": "2020-10-25 12:10:29",
  "messageId": "0B00000127FDBC63",
  "msisdn": "447700900000",
  "network-code": "23410",
  "price": "0.03330000",
  "scts": "1810251310",
  "status": "delivered",
  "to": "Nexmo CLI"
}

注: メッセージの送信後に受信確認を受け取るまでタイムラグがある場合があります。

補足情報