SMPP
本プロトコルは、EngageLab SMSサービスのSMPP通信プロトコルを定義するもので、TCP接続を介して効率的で信頼性の高いメッセージ配信とステータスレポートを実現することを目的としています。インターフェース情報には、接続に必要なIPアドレス、ポート番号、認証情報が含まれます。正規のチャネルから提供されたアカウントとパスワードを使用して、正しく設定してください。
SMPPアドレス
otpsmpp.api.engagelab.cc
次の情報は、正規のチャネル(営業担当やテクニカルサポートなど)から取得してください。
- Port:
{ port } - Account:
{ system_id } - Password:
{ 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
- 空のままにできます。現在SMSでは使用していません。
- destination_addr
- メッセージの対象。国際携帯番号形式である必要があります(例:
+6598765432)。
- メッセージの対象。国際携帯番号形式である必要があります(例:
- short_message
- メッセージ内容。JSON形式を使用し、構造は次のとおりです。{ "id": "xxx", // Template ID "language": "default", // Used language, default is default "code": "xx", // Verification code, used only when service_type is code "params": { // Custom key-value pairs "key1": "val1" // val format is string } }
{ "id": "xxx", // Template ID "language": "default", // Used language, default is default "code": "xx", // Verification code, used only when service_type is code "params": { // Custom key-value pairs "key1": "val1" // val format is string } }このコードブロックはフローティングウィンドウ内に表示されます
- メッセージ内容。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コマンド。










