Messages API 技術的詳細
Messages APIを使用すると、SMS、MMS、RCS、Facebook Messenger、Viber、WhatsAppでメッセージを送信したり、場合によっては受信したりできます。将来的にはさらに多くのチャンネルがサポートされる可能性があります。
注:米国の大手通信事業者は、米国におけるアプリケーション・ツー・パーソン(A2P)メッセージングの新規格の要件を発表しました。これは、10 DLCとしても知られる10桁の地理的電話番号を使用したすべてのメッセージングに適用されます。国番号+1の10桁ロングコードから米国のネットワークにSMS/MMSトラフィックを送信する場合、または送信を計画している場合は、メッセージ送信の承認を得るためにブランドとキャンペーンを登録する必要があります。詳しくは 10 DLCドキュメンテーション 詳細はこちら。
下図は、Vonage Messages APIを使用することで、単一のエンドポイントから複数のチャネルを経由してご希望のユースケースのメッセージを送信する方法を示しています。例えば、WhatsAppとSMS経由で通知メッセージを送信することができます:
対応機能
| チャンネル | 送信テキスト | アウトバウンドイメージ | アウトバウンド・オーディオ | アウトバウンドビデオ | 送信ファイル | アウトバウンドテンプレート |
|---|---|---|---|---|---|---|
| SMS | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | |
| MMS | 該当なし | |||||
| RCS | 該当なし | 該当なし | ||||
| フェイスブックメッセンジャー | ||||||
| Viber ビジネスメッセージ | 該当なし |
| チャンネル | インバウンドテキスト | インバウンドイメージ | インバウンド・オーディオ | インバウンドビデオ | インバウンドファイル | インバウンド・ロケーション |
|---|---|---|---|---|---|---|
| SMS | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | |
| MMS | 該当なし | |||||
| RCS | ||||||
| フェイスブックメッセンジャー | ||||||
| Viber ビジネスメッセージ | 該当なし | 該当なし |
限定的なサポート カスタムオブジェクト:
| チャンネル | アウトバウンドボタン | アウトバウンド・ロケーション | アウトバウンド・コンタクト |
|---|---|---|---|
| SMS | 該当なし | 該当なし | 該当なし |
| MMS | 該当なし | 該当なし | 該当なし |
| RCS | 該当なし | ||
| フェイスブックメッセンジャー | 該当なし | 該当なし | |
| Viber ビジネスメッセージ | 該当なし | 該当なし |
鍵だ:
= 支持される。 = チャンネルによってサポートされているが、Vonageではサポートされていない。 - n/a = チャネルがサポートしていない。
注釈
- RCSでは
customタイプは非推奨です。ButtonとLocationメッセージは 提案チップス でtext,cardそしてcarouselタイプメッセージ
認証
Messages API は以下をサポートしています。 いずれも 基本認証 または JWT(JSON Web Token)認証だが、この2つには注意すべき重要な違いがある:
- ベーシック認証では、エンコードされた APIキーとシークレットで認証する。 アカウント レベルだ。
- JWT認証では JSONウェブトークン 秘密鍵とアプリケーションIDを使用して生成される。JWTはACLのような高度な機能をサポートし、アプリケーションIDで認証する。 アプリケーション レベル、つまりVonageアプリケーションのアプリケーション設定などにアクセスできます。 ウェブフック そして セキュアなインバウンドメディア.
を使用することをお勧めします。 JWT認証 を使用します。Messages Sandboxを使用する場合など、APIを試してみる場合や、基本的な使用例(webhookが不要な場合など)では、Basic認証で十分かもしれません。
をご利用の場合 サーバーSDK を使用して Messages API とやり取りする場合、これらの API は自動的に JWT を作成します。
料金制限
Messages APIへのリクエストに対するデフォルトのレート制限は、APIキー1つにつき毎秒75リクエストです。この制限はケースバイケースで増やすことができます。レートリミットの引き上げについては、Account Managerまたは営業担当者にご相談ください。
注:この制限はAPI自体へのリクエストに適用されます。チャンネルやネットワークによって、上限が異なる場合があります。APIリクエストの制限を超えると 429 APIリクエストに対するHTTPレスポンス。チャネルやネットワークが制限されている場合、リクエストは受け付けられ(そして 202 HTTPレスポンス)がAPI制限を超えない場合、プロバイダー・レベルで拒否される。この拒否は メッセージ・ステータス のステータスで rejected.
外部アカウントAPI
について 外部アカウントAPI は、Viber Business Messages、Facebook Messenger、WhatsAppのアカウントを管理するために使用され、これらのチャンネルでMessages APIとDispatch APIを使用します。
スタート
この例では、以下の変数を便利な方法で実際の値に置き換える必要がある:
| キー | 説明 |
|---|---|
VONAGE_API_KEY | VonageのAPIキーは以下から取得できます。 Vonage APIダッシュボード. |
VONAGE_API_SECRET | VonageのAPIシークレットは、お客様の Vonage APIダッシュボード. |
FROM_NUMBER | あなたの電話番号、または送信者を特定するためのテキスト。 |
TO_NUMBER | メッセージ送信先の電話番号。 |
注: 先頭の + または 00 電話番号を入力する場合は、447700900000のように国番号から入力してください。
以下のコードは、Messages APIを使ってSMSメッセージを送信する方法を示しています:
Write the code
Add the following to send-sms-basic-auth.sh:
curl -X POST https://api.nexmo.com/v1/messages \
-u "${VONAGE_API_KEY}:${VONAGE_API_SECRET}" \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d $'{
"to": "'${MESSAGES_TO_NUMBER}'",
"from": "'${SMS_SENDER_ID}'",
"channel": "sms",
"message_type": "text",
"text": "This is an SMS sent using the Vonage Messages API."
}'Run your code
Save this file to your machine and run it:
Prerequisites
npm install @vonage/server-sdk @vonage/messagesCreate a file named send-sms-basic-auth.js and add the following code:
const { Vonage } = require('@vonage/server-sdk');
const { Channels } = require('@vonage/messages');
/**
* By leaving out the applicationId and privateKey parameters, the Vonage
* SDK will use basic authentication to authenticate with the Messages API.
*
* @link https://developer.vonage.com/en/messages/technical-details#authentication
*/
const vonage = new Vonage(
{
apiKey: VONAGE_API_KEY,
apiSecret: VONAGE_API_SECRET,
},
{
...(MESSAGES_API_URL ? {apiHost: MESSAGES_API_URL} : {}),
},
);Write the code
Add the following to send-sms-basic-auth.js:
vonage.messages.send({
messageType: 'sms',
channel: Channels.SMS,
text: 'This is an SMS text message sent using the Messages API',
to: MESSAGES_TO_NUMBER,
from: SMS_SENDER_ID,
})
.then(({ messageUUID }) => console.log(messageUUID))
.catch((error) => console.error(error));Run your code
Save this file to your machine and run it: