
シェア:
Benjamin AronovはVonageの開発者支援者です。彼はRuby on Railsのバックグラウンドを持つ実績のあるコミュニティ・ビルダーです。Benjaminは故郷であるテルアビブのビーチを楽しんでいる。テルアビブを拠点に、世界最高のスタートアップの創設者たちと出会い、学ぶことができる。技術以外では、完璧なパン・オ・ショコラを求めて世界中を旅するのが好き。
GoとVonage Messages APIを使ってRCSテキストメッセージを送信する方法
RCS(リッチ・コミュニケーション・サービス)は、インタラクティブなメッセージング、画像、リッチメディア、リードレシートなどを使って SMS を次のレベルに引き上げます。このチュートリアルでは、GoとVonage Messages APIを使用して基本的なRCSテキストメッセージを送信する方法を説明し、より高度な機能のための基礎を設定します。 より高度な機能.
>> TL;DR:完全な GitHub.
しかし Vonage Go SDKは現在アーカイブされていますが net/http経由で直接 API リクエストを使用することができます。
前提条件
以下を確認してください:
行く1.18+インストール済み
Vonage APIアカウント
登録されたRCSビジネスメッセージング(RBM)エージェント
テスト用にRCSを有効にした携帯電話
ngrok(ローカルウェブフックテスト用-この例ではオプション)
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.
Vonageアカウントマネージャーへの連絡方法
VonageアプリケーションでRCS機能を送受信するには、登録されたリッチビジネスメッセージング(RBM)エージェントと RCS機能を持つ電話.
現在、Vonage経由のRCSメッセージングはマネージドアカウントでのみご利用いただけます。RBMエージェントのDeveloper Modeの有効化をリクエストするには、アカウントマネージャに連絡する必要があります。デベロッパーモードでは、エージェント検証プロセスを完了し、本番運用を開始する前に、許可リストに登録された番号へのRCSメッセージングをテストすることができます。
お問い合わせ セールス・チームまでご連絡ください。マネージド・アカウントをお持ちでない場合は、営業担当までご連絡ください。
囲碁プロジェクトの設定方法
まずはプロジェクトのセットアップから始めよう。
プロジェクトの初期化
新しいディレクトリを作成し、Goモジュールを初期化する:
mkdir rcs-text-golang
cd rcs-text-golang
go mod init rcs-text-golang プロジェクトの依存関係をインストールする
必要なGoパッケージをインストールする:
go get github.com/joho/godotenv github.com/golang-jwt/jwt/v4
godotenv:.envファイルから環境変数を読み込むgolang-jwt:API認証のためのJWTトークン生成を処理する。
プロジェクトファイルの作成
メイン・アプリケーション・ファイルと環境設定ファイルを作成する:
touch main.go .env 環境変数の設定方法
.envファイルに、Vonageの認証情報と設定を追加します:
RCS_SENDER_ID=""
TO_NUMBER=""
VONAGE_PRIVATE_KEY_PATH=./private.key
VONAGE_APPLICATION_ID=""RCS_SENDER_ID:あなたのRBM SenderID (ブランド名)。SenderIDには、スペースを入れないなどの特別なフォーマットが必要です。不明な場合は、アカウント マネージャーに確認してください。TO_NUMBER:受信者の電話番号(+記号なしの国際形式)(例:447700900000VONAGE_PRIVATE_KEY_PATH:秘密鍵ファイルへのパスVONAGE_APPLICATION_ID:あなたのVonageアプリケーションID
VonageアプリケーションIDとprivate.keyファイルは、下記の「Vonageアプリケーションの作成と設定方法」で入手します。
RCSテキストメッセージの送信方法
では main.goで、Vonage Messages API を使って RCS テキスト・メッセージを送信する機能を実装してみよう。
RCSメッセージ構造の定義
まず、RCSメッセージの構造を定義しよう:
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
"time"
"github.com/golang-jwt/jwt/v4"
"github.com/joho/godotenv"
)
type RCSMessage struct {
From string `json:"from"`
To string `json:"to"`
Channel string `json:"channel"`
MessageType string `json:"message_type"`
Text string `json:"text"`
}この構造では、必要最小限のフィールドを使用する。SMSフェイルオーバーを含むRCSメッセージの全機能については メッセージ送信APIリファレンス.
メイン機能の実装
では、RCSメッセージを送信するメイン関数を実装してみよう。メイン関数は3つの重要な部分に分けることができる:
設定と構成:この関数は、.envファイルから環境変数をロードし、送信者IDや受信者番号のような重要な設定を取得し、テキストコンテンツでRCSメッセージ構造を作成します。
認証とリクエストの準備:アプリケーションIDと秘密鍵を使ってJWTトークンを生成し、メッセージのペイロードと適切な認証ヘッダーを使ってHTTPリクエストを作成する。
リクエストの実行とレスポンスの処理:この関数は HTTP リクエストを Vonage Messages API に送信し、レスポンスを処理し、ステータスコードとレスポンスボディの両方を表示してメッセージの正常な配信を確認します。
func main() {
err := godotenv.Load()
if err != nil {
fmt.Println("Error loading .env file")
os.Exit(1)
}
fromID := os.Getenv("RCS_SENDER_ID")
toNumber := os.Getenv("TO_NUMBER")
applicationID := os.Getenv("VONAGE_APPLICATION_ID")
privateKeyPath := os.Getenv("VONAGE_PRIVATE_KEY_PATH")
if applicationID == "" || privateKeyPath == "" || fromID == "" || toNumber == "" {
fmt.Println("Error: Required environment variables are missing.")
os.Exit(1)
}
message := RCSMessage{
From: fromID,
To: toNumber,
Channel: "rcs",
MessageType: "text",
Text: "Hello from Go and Vonage!",
}
payload, err := json.Marshal(message)
if err != nil {
fmt.Println("Error encoding JSON:", err)
return
}
req, err := http.NewRequest("POST", "https://api.nexmo.com/v1/messages", bytes.NewBuffer(payload))
if err != nil {
fmt.Println("Error creating request:", err)
return
}
token, err := generateJWT(applicationID, privateKeyPath)
if err != nil {
fmt.Println("Error generating JWT:", err)
return
}
req.Header.Add("Authorization", "Bearer "+token)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Accept", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error sending request:", err)
return
}
defer resp.Body.Close()
fmt.Printf("Response status: %s\n", resp.Status)
var respBody bytes.Buffer
_, err = respBody.ReadFrom(resp.Body)
if err != nil {
fmt.Println("Error reading response body:", err)
return
}
fmt.Println("Response body:", respBody.String())
} JWT認証の実装
メイン関数は generateJWT関数に依存している。JWTトークンを生成する関数を実装してみよう:
func generateJWT(applicationID, privateKeyPath string) (string, error) {
privateKeyBytes, err := os.ReadFile(privateKeyPath)
if err != nil {
return "", fmt.Errorf("error reading private key: %w", err)
}
privateKey, err := jwt.ParseRSAPrivateKeyFromPEM(privateKeyBytes)
if err != nil {
return "", fmt.Errorf("error parsing private key: %w", err)
}
claims := jwt.MapClaims{
"application_id": applicationID,
"iat": time.Now().Unix(),
"exp": time.Now().Add(time.Hour).Unix(),
"jti": time.Now().UnixNano(),
}
token := jwt.NewWithClaims(jwt.SigningMethodRS256, claims)
tokenString, err := token.SignedString(privateKey)
if err != nil {
return "", fmt.Errorf("error signing token: %w", err)
}
>>完全な main.goファイルを参照してください。
Vonageアプリケーションの作成と設定方法
Goアプリの準備ができましたので、Vonageアプリケーションを作成し、設定する必要があります:
Vonage Dashboardでアプリを作成します。アプリに名前を付け、メッセージ機能をオンにします。
アプリケーションを作成するには アプリケーションの作成ページでアプリケーションの名前を定義します。
Webhooksを使用するAPIを使用する場合は、秘密鍵が必要です。Generate public and private key "をクリックすると、自動的にダウンロードが始まります。この鍵は紛失すると再ダウンロードできません。この鍵は紛失しても再ダウンロードできません。 private_<あなたのアプリID>.key.この鍵はAPIコールの認証に使用できます。 注意:アプリケーションを保存するまで、キーは機能しません。
必要な機能(Voice、Messages、RTCなど)を選択し、必要なWebhook(イベントURL、応答URL、受信メッセージURLなど)を提供します。これらはチュートリアルで説明します。
保存してデプロイするには、"Generate new application "をクリックして設定を確定します。これでアプリケーションはVonage APIで使用する準備が整いました。
Vonageアプリケーションの設定で
Inbound URLをWebhookエンドポイントに設定する(テスト用にngrokを使用できます)
メッセージのステータス更新を受信するためのステータスURLを設定する
ボタンをクリックして、公開鍵と秘密鍵を生成します。
private.keyファイルをプロジェクトのルート・ディレクトリ(
rcs-text-golang)
変更を保存する
次に、"外部アカウントをリンクする "タブをクリックして、RCSエージェントをリンクします:
Vonage application dashboard showing successful linking of an RCS external account to a Go-based application.
Go RCSアプリケーションのテスト方法
Goアプリケーションを実行します:
go run main.goすべてが正しく設定されていれば、成功した応答が表示されるはずです:
Response status: 202 Accepted
Response body: {"message_uuid":"83e829db-8784-40a1-bfd6-26399046d4d2"}受信者のRCS対応デバイスでは、メッセージはブランド名とメッセージとともにネイティブメッセージングアプリに表示されるはずです。
RCS message received from a Vonage agent using Go and the Messages API.
最終的な感想
よくやった!GoとVonage Messages APIを使ってRCSテキストメッセージの送信に成功しました。しかし、RCSにはもっと多くの機能があります!返信の提案、高解像度の画像、Video、または RCS 固有のリッチカードの送信を試してみてください。
Messages APIはメッセージ・ステータスも提供しており、RCSメッセージで何が起きているかを理解するのに役立つ。今後のブログポストでは、webhookを使ってメッセージのステータスを追跡する方法を紹介する。
GoやRCSのコンテンツについてご質問やご提案がありましたら、以下のSlackで会話にご参加ください。 VonageコミュニティSlackまたは X(旧 Twitter.次に何を作るか、ぜひお聞かせください!
