SMPP Send
インターフェース情報
このプロトコルは、SMSサービスのためのSMPP通信プロトコルを定義しており、TCP接続を介して効率的かつ信頼性の高いメッセージ配信およびステータス報告を実現することを目的としています。インターフェース情報には、IPアドレス、ポート、および認証資格情報が含まれます。認可されたチャネルから提供された資格情報が正しく設定されていることを確認してください。
SMPPアドレス
以下の情報を認可されたチャネル(例:営業や技術サポート)から取得してください:
- IPアドレス:
{ ip }
- ポート:
{ 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
- 空白にすることができます。現在SMSでは使用されていません。
- destination_addr
- メッセージの送信先で、国際電話番号形式(例:
+8613800138000
)である必要があります。
- メッセージの送信先で、国際電話番号形式(例:
- short_message
- 以下のようなJSON形式でメッセージ内容を記述します:{ "id": "xxx", // テンプレートID "language": "default", // 言語、デフォルトは"default" "code": "xx", // 検証コード、service_typeが"code"の場合に使用 "params": { // カスタムキーと値のペア "key1": "val1" // 値は文字列である必要があります } }
{ "id": "xxx", // テンプレートID "language": "default", // 言語、デフォルトは"default" "code": "xx", // 検証コード、service_typeが"code"の場合に使用 "params": { // カスタムキーと値のペア "key1": "val1" // 値は文字列である必要があります } }
このコードブロックはフローティングウィンドウ内に表示されます
- 以下のようなJSON形式でメッセージ内容を記述します:
- data_coding
- 特殊文字
{}
を正しく解析するために、UCS2
エンコーディングの使用を推奨します。 {}
を直接送信できる場合は、デフォルトエンコーディング(0x00
)を使用できます。
- 特殊文字
- header status
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: SMSゲートウェイ間でメッセージを交換するためのショートメッセージピアツーピアプロトコル。
- SUBMIT_SM: メッセージを送信するためのSMPPコマンド。
- DELIVER_SM: メッセージ配信ステータスを報告するためのSMPPコマンド。
ご不明な点がございましたら、技術サポートまでお問い合わせください。