
シェア:
元Vonage開発者エデュケーター。PHPのバックグラウンドを持つが、一つの言語に縛られることはない。熱心なゲーマーでRaspberry pi愛好家。屋内クライミング施設でボルダリングをしていることが多い。
流通台帳技術の導入 - SMSインド規制
ディストリビューション・レッジャー・テクノロジー(DLT)とは何か?
分散型台帳技術(DLTとも呼ばれる)は、ユーザーやシステムが資産に関連する取引を記録することを可能にするデジタル手法である。従来のデータベースは、情報を保存する中央の場所を持つが、DLTは複数の場所にデータを保存し、サービスを利用する当事者間でより良いセキュリティ、透明性、信頼を提供する。
DLTとインドの規制との関係は?
インド電気通信規制庁(TRAI)が定めた規制では、国内接続でエンド受信者にA2P(Application 2 Phone)SMSを送信する国内企業は、DLTの登録に合格する必要がある。DLTの事前登録に失敗した企業は、非準拠となり、インド国内の接続を通じてエンド受信者にA2P SMSを送信できなくなる。
DLTの登録方法は?
インドの企業、またはインド国内の電話番号にA2P SMSを送信する場合、DLTに準拠する必要があります。そのためには、以下のDLTシステムのいずれかに、主体、ヘッダー、テンプレート(ブランド名付き)を登録し、同意を提供する必要があります:
VonageでDLTを使うには?
プロジェクトを更新し、リクエストごとにDLT必須パラメータを提出する
DLT ポータルに表示されているように、エンティティ ID、送信者 ID/ヘッダー、およびテンプレートを使用するようにアプリケーションを変更する必要があります。SMS メッセージを送信する際には、API リクエストまたは SMPP リクエストごとに追加パラメータを使用する必要があります。
APIを使ってSMSを送信する
SMSのSDKを使わずにAPIを使用している場合、SMSを送信するためにPOSTリクエストを更新する必要があります。以下のように、リクエストに2つのパラメータを追加する必要があります:
エンティティID (文字列)
content-id (文字列)
SMSを送信する際のAPIを使ったこのリクエストの詳細については、以下を参照してください。 APIドキュメント.
SDKを使ってSMSを送信する
以下の例ではNode SDKを使用していますが、開発者向けドキュメントに記載されている他のSDKSもあります。 開発者ドキュメント コードスニペット.
以下の例は、Vonage Node SDK で SMS を送信する方法を示しており、DLT 規制に準拠するために必要な 2 つのパラメータが含まれています:
注この例を実行するには、VONAGE_API_KEY、VONAGE_API_SECRET、VONAGE_BRNAD_NAME、TO_NUMBER、DLT_APPROVED_PEID、およびDLT_APPROVED_TEMPLATE_IDを独自の値に置き換える必要があります。
const Vonage = require('@vonage/server-sdk')
const vonage = new Vonage({
apiKey: VONAGE_API_KEY,
apiSecret: VONAGE_API_SECRET
})
const from = VONAGE_BRAND_NAME
const to = TO_NUMBER
const text = 'A text message sent using the Vonage SMS API'
const opts = {
"entity-id": DLT_APPROVED_PEID,
"content-id": DLT_APPROVED_TEMPLATE_ID
}
vonage.message.sendSms(from, to, text, opts, (err, responseData) => {
if (err) {
console.log(err);
} else {
if(responseData.messages[0]['status'] === "0") {
console.log("Message sent successfully.");
} else {
console.log(`Message failed with error: ${responseData.messages[0]['error-text']}`);
}
}
})
どうすれば効果があったとわかるのか?
DLTに準拠する必要があるSMSを送信しても、正常に送信されない理由はさまざまでしょう。エラーを確認するには、アプリケーションで作成した特定の設定済みURLをリッスンするウェブフックを作成する必要があります。納品書で返されるエラーの完全なリストについては 開発者向けドキュメント.以下の表は、DLT SMSメッセージの送信に関連するエラーを示しています。
| Error Code | Meaning | Description |
|---|---|---|
| 50 | Entity Filter | The message failed due to entity-id being incorrect or not provided. |
| 51 | Header Filter | The message failed because the header ID (from phone number) was incorrect or missing. |
| 52 | Content Filter | The message failed due to content-id being incorrect or not provided. |
| 53 | Consent Filter | The message failed due to consent not being authorized. |
NodeでSMS受信を受け取るためのWebhookの例を以下に示します:
const app = require('express')()
const bodyParser = require('body-parser')
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
app
.route('/webhooks/delivery-receipt')
.get(handleDeliveryReceipt)
.post(handleDeliveryReceipt)
function handleDeliveryReceipt(request, response) {
const params = Object.assign(request.query, request.body)
console.log(params)
response.status(204).send()
}
app.listen(process.env.PORT || 3000)Webhookにアクセスするには、アプリケーションがインターネットに公開されている必要があります。開発目的では、ngrokを使用することをお勧めします。 を使用することをお勧めします。.
このために必要な最後の変更は、次のページで配信受信Webhook URLを設定することです。 Vonage Dashboard API 設定ページ.入力フィールドの内容を Webhook URL for Delivery Receipts入力フィールドの内容をWebhook URLに置き換えます: https://demo.ngrok.io/webhooks/delivery-receipt.
送信に成功したSMSメッセージは、以下の例のように表示されます:
{
"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": "Vonage"
}しかし、問題があれば err_codeは0にはならず statusは rejected.
SMPPでSMSを送信する
SMPPでSMSメッセージを送信するには、リクエストに追加のパラメータを追加する必要があります。これらの追加パラメータの詳細については、ナレッジベースの「DLTとVonageへの準拠」を参照してください。 ナレッジベース "DLTとVonageへの準拠" をご参照ください。
VonageにDLTの管理を任せる
Vonageは一時的な解決策を提供しています。Vonageにテンプレートを検出させることで、お客様側での変更は一切ありません。ナレッジベースの ナレッジベース、セクション2、オプション2をご覧ください。この方法はVonageが推奨するものではありませんが、プロジェクトを更新し、新しいAPIパラメータを使用してDLT準拠のSMSを送信することをお勧めします。