https://a.storyblok.com/f/270183/43882/5ab8bf2cc3/sms-receipts_golang_1200x600.png

GoでSMS配信の領収書を受け取る

最終更新日 November 18, 2020

所要時間:5 分

以前の記事で GoでSMSを送信する方法GoでSMSを受信する方法.この投稿では、Vonage アカウントから送信された SMS メッセージの SMS 配信レシートを受信する方法を紹介します。

このチュートリアルでは、一般にアクセス可能なWebhookのセットアップと、SMS配信の受信機能を説明します。このチュートリアルで使用するコードは Goコードスニペットリポジトリ.

前提条件

コードの設定

VonageがアカウントからSMSを送信する際、Webhookが設定されているかどうかを確認します。この設定はアカウント全体の設定です。

Webhookを設定した場合、VonageはこのWebhookにリクエストを送信します。 POSTリクエストを送信するので、この Webhook リクエストを処理するコードを作成しましょう。

という名前のファイルを作成し delivery-receipt.goという名前のファイルを作成し、以下のコードを入力する:

package main

import (
    "fmt"
    "net/http"
)

func main() {

    http.HandleFunc("/webhooks/delivery-receipt", func(w http.ResponseWriter, r *http.Request) {

        if err := r.ParseForm(); err != nil {
            fmt.Fprintf(w, "ParseForm() err: %v", err)
            return
        }

        fmt.Println("Delivery receipt status: " + r.FormValue("status"))
    })

    http.ListenAndServe(":8080", nil)
}

このコードは /webhooks/delivery-receiptを出力します。 statusを出力します。

プロジェクトをインターネットに公開する

ウェブフック・エンドポイントは、Vonage APIがリクエストを行うために、インターネット上でパブリックにアクセスできる必要があります。

Ngrok は、開発でサンプルを実行するために使用する推奨ツールで、このチュートリアルでは webhook エンドポイントを公開するために使用します。ngrok をインストールしていない場合は、このサービスの紹介とインストール方法が このチュートリアル.

以下のコマンドでngrokを起動する:

ngrok http 8080

ngrokがあなたのために作成するパブリックURLをメモしておいてください:

http://abc123.ngrok.io -> http://localhost:8080 https://abc123.ngrok.io -> http://localhost:8080

注意してください:無料プランをご利用の場合、このURLはコマンドを実行するたびに異なります。そのため、コマンドを実行するたびに delivery-receiptURLを更新する必要があります。

Vonageアカウントの設定

あなたのVonageアカウントは、配信受信要求を行う場所を知っているように設定する必要があります。配信受信ウェブフックURLは、お客様の Vonage設定ページに追加することができます。下の画像はその例です:

An example of the delivery receipts settings in the Vonage DashboardAn example of the delivery receipts settings in the Vonage Dashboard

テストの時間

すでに Ngrokファイルを含むプロジェクト・ディレクトリに移動したことを確認する。 delivery-receipt.goファイルがあるプロジェクト・ディレクトリに移動していることを確認する。以下のコマンドを実行してください:

go run ./

別のターミナル・ウィンドウで、以下のコマンドを実行する。 YOUR_NUMBERをテストSMSメッセージを受信する電話番号に置き換えてください。

nexmo sms -f VONAGETEST YOUR_NUMBER "This is a test message."

を実行したターミナル・ウィンドウを確認してください。 go run ./を実行したターミナル・ウィンドウを確認すると、以下のような行が表示されているはずだ:

Delivery receipt status: delivered

Webhookは、上に表示されているよりも多くのフィールドを受け取ります。これらのフィールドの完全なリストといくつかの例を以下で見ることができます。以下の例は APIドキュメント以下 Delivery Receipt:

{
  "msisdn": "447700900000",
  "to": "AcmeInc",
  "network-code": "12345",
  "messageId": "0A0000001234567B",
  "price": "0.03330000",
  "status": "delivered",
  "scts": "2001011400",
  "err-code": "0",
  "api-key": "abcd1234",
  "client-ref": "my-personal-reference",
  "message-timestamp": "2020-01-01 12:00:00 +0000",
  "timestamp": "1582650446",
  "nonce": "ec11dd3e-1e7f-4db5-9467-82b02cd223b9",
  "sig": "1A20E4E2069B609FDA6CECA9DE18D5CAFE99720DDB628BD6BE8B19942A336E1C"
}

さらに読む

このチュートリアルで示したコードは Goコードスニペットリポジトリ.

以下は、私たちが書いた囲碁のチュートリアルです:

コミュニティで共有したい質問、アドバイス、アイデアなどがあれば、遠慮なく私たちの コミュニティSlackワークスペース.このチュートリアルを実施した方、あなたのプロジェクトがどのように機能しているか、ぜひお返事をお待ちしています。

シェア:

https://a.storyblok.com/f/270183/250x250/b052219541/greg-holmes.png
Greg Holmesヴォネージの卒業生

元Vonage開発者エデュケーター。PHPのバックグラウンドを持つが、一つの言語に縛られることはない。熱心なゲーマーでRaspberry pi愛好家。屋内クライミング施設でボルダリングをしていることが多い。