https://d226lax1qjow5r.cloudfront.net/blog/blogposts/receive-inbound-sms-with-go/blog_go_sms_1200x600.png

GoでインバウンドSMSを受信する

最終更新日 November 3, 2020

所要時間:6 分

前回の記事で、以下の方法をご紹介しました。 でSMSを送信する方法を紹介しました。.この投稿では、Vonage バーチャル番号で SMS メッセージを受信する方法を紹介します。

インバウンドSMSを受信するには、パブリックアクセス可能なWebhookが必要で、Vonageアカウントに設定されている必要があります。このチュートリアルでは、パブリックにアクセス可能なWebhookを設定するプロセスと、受信SMSメッセージを受信する機能について説明します。このチュートリアルで使用するコードは Goコードスニペットリポジトリ.

前提条件

Vonage API Account

To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.

This tutorial also uses a virtual phone number. To purchase one, go to Numbers > Buy Numbers and search for one that meets your needs.

コードの設定

Vonageはバーチャル電話番号へのSMSを受信すると、このSMSを転送するようにWebhookを設定したかどうかを確認します。この設定はアカウント全体、または1つのバーチャル電話番号に限定することができます。

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

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

package main

import (
	"fmt"
	"net/http"
)

func main() {

	http.HandleFunc("/webhooks/inbound-sms", func(w http.ResponseWriter, r *http.Request) {
		params := r.URL.Query()
		fmt.Println("From: " + params["msisdn"][0] + ", message: " + string(params["text"][0]))
	})

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

このコードは /webhooks/inbound-smsエンドポイントに送られたリクエストをリッスンし msisdnそして textの部分を出力します。

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

Vonage APIがあなたのWebhookエンドポイントにリクエストを行うには、インターネット経由で一般にアクセスできる必要があります。

Ngrok は、開発中のサンプルを実行するための私たちの常用ツールです。そのため、このチュートリアルでは ngrok を使用します。ngrok がインストールされていない場合、ngrok の素晴らしい紹介とインストール方法は このチュートリアル.

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

ngrok http 8080

ngrokが作成する公開URLをメモしておいてください。これらは以下に似ている(しかし異なる):

http://56feb86007e8.ngrok.io -> http://localhost:8080 https://56feb86007e8.ngrok.io -> http://localhost:8080

無料プランをご利用の場合、このURLはコマンドを実行するたびに異なります。そのため、コマンドを実行するたびに inbound-smsを更新する必要があります。

Vonage番号の購入

このチュートリアルのためにVonageのバーチャル電話番号をまだ購入していない場合は、今すぐ購入してください。これは 開発者ダッシュボードしかし、もう一つの方法があります。 Nexmo CLI.CLIはターミナルを離れることなくアカウント管理タスクを実行するのに役立ちます。

以下のコマンドは、SMSを送受信できる電話番号を検索し、その番号があなたの選んだ国のものであることを確認します。2文字の国コードは国を選択する。 US.

vonage numbers:search --features=SMS COUNTRY_CODE

コマンドを実行する際に表示される電話番号のリストから1つを選択します。以下のコマンドの VONAGE_VIRTUAL_NUMBERを選んだ電話番号に置き換えて、コマンドを実行してください。

vonage numbers:buy VONAGE_VIRTUAL_NUMBER COUNTRY_CODE

Vonageアカウントの設定

新しいVonageバーチャル番号とWebhook URLは、VonageがインバウンドSMSメッセージの送信先を知っているように、一緒にリンクする必要があります。

前のステップと同様に、Webhook URLをVonageバーチャル番号に追加することもできますが、このチュートリアルでは、Webポータルを介してこの変更を行う方法の例を示します。

セットアップの前に、以下の点に注意してください:

  • VONAGE_VIRTUAL_NUMBER:使用しようとしている番号。

  • WEBHOOK_URL:あなたのNgrokのURLの後に /webhooks/inbound-smsのようになります: https://56feb86007e8.ngrok.io/webhooks/inbound-sms

このページのトップへ Numbersのページダッシュボードの

管理」欄の下にある「編集」アイコン(ペンのように見えます)をクリックします。SMS > Inbound Webhook URL "のポップアップに、以下を貼り付けます。 WEBHOOK_URLを貼り付け、「保存」をクリックします。

テストの時間

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

go run ./

あなたの携帯電話から、あなたの携帯電話にメールを送ることができます。 VONAGE_VIRTUAL_NUMBER.

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

From: VONAGETEST, message: This is a test message

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

{
  "api-key": "abcd1234",
  "msisdn": "447700900001",
  "to": "447700900000",
  "messageId": "0A0000000123ABCD1",
  "text": "Hello world",
  "type": "text",
  "keyword": "TEST",
  "message-timestamp": "2020-01-01 12:00:00 +0000"
}

さらに読む

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

以下は、囲碁やSMSメッセージの受信に関するチュートリアルです:

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

シェア:

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

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