SMPP インターフェース
インターフェース情報
このプロトコルは、EngageLab OTP サービスの SMPP 通信プロトコルを定義し、TCP 接続を通じて効率的かつ信頼性の高いメッセージ配信とステータスレポートを実現することを目的としています。インターフェース情報には、接続に必要な IP アドレス、ポート番号、認証情報が含まれます。認可されたチャネルから提供されたアカウントとパスワードに従って、正しく設定してください。
SMPP アドレス
SMPP アドレス: otpsmpp.api.engagelab.cc 以下の情報は、認可されたチャネル(ビジネス担当やテクニカルサポートなど)から取得してください。
- ポート:
{ port } - アカウント:
{ system_id } - パスワード:
{ password }
接続の確立
クライアントパケット
TCP 接続を確立した後、最初のパケットでは認証検証のために BindTransceiver コマンド(すなわち 0x00000009)を送信する必要があります。このパケットには以下のフィールドを含める必要があります。
- system_id: 顧客に割り当てられたシステムアカウント。識別に使用します。
- password: システムアカウントに対応するアクセスパスワード。本人認証に使用します。
サーバーレスポンス
成功レスポンス
- サーバーは
BindTransceiverRespコマンド(すなわち0x80000009)のレスポンスを送信します。 system_idフィールドには、受信したsystem_idフィールドと一致する値を入れます。
失敗レスポンス
- 認証に失敗した場合、サーバーは TCP 接続を切断し、失敗の理由を記録します。
メッセージ送信
サーバーのロジック
メッセージ送信では、SUBMIT_SM コマンド(すなわち 0x00000004)を使用してメッセージ配信リクエストを送信します。サーバーのロジックは次のとおりです。
- サーバーはリクエスト内容を解析し、固定的に SMS チャネルを使用して配信します。
- メッセージ配信は同期モードで行われ、結果は
SUBMIT_SM_RESPコマンド(すなわち0x80000004)で応答されます。 - 配信ステータスはメッセージで報告されます。詳細は 配信レポート を参照してください。
- 特殊文字や国際化に対応するため、
UCS2エンコーディングの使用を推奨します。
クライアントパケット
クライアントは SUBMIT_SM コマンド(すなわち 0x00000004)を送信してメッセージを送信します。これには以下のフィールドを含める必要があります。
- service_type
- 値:
MSG/CODE/MRKT - デフォルト値:
MSG
- 値:
- source_addr
- 空のままで構いません。現在 OTP では使用されていません。
- destination_addr
- メッセージの宛先。国際携帯電話番号形式(例:
+6598765432)である必要があります。
- メッセージの宛先。国際携帯電話番号形式(例:
- short_message
- メッセージ内容。JSON 形式で、次のとおりです。{ "id": "xxx", // テンプレート ID "language": "default", // 使用言語。デフォルトは default "code": "xx", // 検証コード。service_type が code の場合のみ使用 "params": { // カスタムのキーと値のペア "key1": "val1" // val の形式は文字列 } }
{ "id": "xxx", // テンプレート ID "language": "default", // 使用言語。デフォルトは default "code": "xx", // 検証コード。service_type が code の場合のみ使用 "params": { // カスタムのキーと値のペア "key1": "val1" // val の形式は文字列 } }このコードブロックはフローティングウィンドウ内に表示されます
- メッセージ内容。JSON 形式で、次のとおりです。
- data_coding
- 特殊文字
{}が正常に解析されるよう、UCS2エンコーディングの使用を推奨します。 {}の直接送信がサポートされている場合は、デフォルトエンコーディング(すなわち0x00)を使用できます。
- 特殊文字
- status in header
0x00000000に設定します。
サーバーレスポンス
サーバーは SUBMIT_SM_RESP コマンド(すなわち 0x80000004)を送信して、メッセージ配信結果を応答します。
成功レスポンス
- header の status フィールド値:
0x00000000 - MESSAGE_ID フィールド: レスポンスのメッセージ ID。配信レポートの関連付けに使用します。
失敗レスポンス
- サーバーは header の status フィールド に値を入れて失敗の理由を示します。
| ステータスコード | 説明 | 値 |
|---|---|---|
ESME_RINVPARAM |
パラメータが不正。リクエスト形式を確認してください | 0x00000032 |
ESME_RSYSERR |
内部サービスエラー。しばらくしてから再試行してください | 0x00000008 |
ESME_RSUBMITFAIL |
配信失敗。テンプレートの問題やその他の理由による可能性があります | 0x00000045 |
ESME_RINVNUMMSGS |
short_message フィールドの内容形式エラー |
0x00000055 |
ESME_RUNKNOWNERR |
不明なエラー。テクニカルサポートにお問い合わせください | 0x000000FF |
配信レポート
サーバーは DELIVER_SM コマンド(すなわち 0x00000005)を通じて配信レポートを報告します。具体的なフィールドは次のとおりです。
- service_type
- 固定値:
MSG
- 固定値:
- source_addr
- 空にします。
- destination_addr
SUBMIT_SMコマンドのdestination_addrと一致します。
- data_coding
- エンコーディング方式: デフォルト値
0x00。
- エンコーディング方式: デフォルト値
- esm_class
0x00に設定します。
- short_message
- 配信レポートを
delivery receipt形式でカプセル化します。
- 配信レポートを
- ReceiptedMessageID in tlv
- メッセージ ID。関連付けの識別に使用します。
- MessageState in tlv
- メッセージステータス。フィールド値
0x0427。
- メッセージステータス。フィールド値
ステータスの解析
short_message フィールド において、stat 値の意味は次のとおりです。
| ステータス | 意味 |
|---|---|
DELIVRD |
配信成功 |
UNDELIV |
配信失敗 |
その他の説明
無効なコマンド
クライアントが送信した無効なコマンドに対して、サーバーは GENERIC_NACK コマンド(すなわち 0x80000000)を返し、関連ログを記録します。サーバーは以下のコマンドのみをサポートします。
EnquireLinkコマンド(すなわち0x00000015)Unbindコマンド(すなわち0x00000006)SubmitSMコマンド(すなわち0x00000004)DeliverSMRespコマンド(すなわち0x80000005)BindTransceiverコマンド(すなわち0x00000009)
キープアライブ
クライアントは 30 秒ごと(許容誤差 ±5 秒)に EnquireLink コマンド(すなわち 0x00000015)を送信し、接続がアクティブであることを保証する必要があります。
送信ステータスの意味
| ステータスコード | 意味 |
|---|---|
ESME_RINVPARAM |
パラメータが不正。リクエスト形式を確認してください |
ESME_RINVNUMMSGS |
short_message フィールドの内容形式エラー |
ESME_RSUBMITFAIL |
配信失敗。テンプレートの問題やその他の理由による可能性があります |
ESME_RSYSERR |
内部サービスエラー。しばらくしてから再試行してください |
ESME_RUNKNOWNERR |
不明なエラー。テクニカルサポートにお問い合わせください |
DELIVRD |
メッセージの配信に成功 |
UNDELIV |
メッセージの配信に失敗 |
用語集
- SMPP: Short Message Peer-to-Peer Protocol。SMS ゲートウェイにおけるメッセージ交換に使用されます。
- SUBMIT_SM: SMS メッセージを送信するための SMPP コマンド。
- DELIVER_SM: サーバーがメッセージの配信ステータスを報告するために使用する SMPP コマンド。
ご不明な点がございましたら、OTP テクニカルサポート までお問い合わせください。










