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)を使用してメッセージ配信リクエストを送信します。サーバーのロジックは以下の通りです:

  1. サーバーはリクエスト内容を解析し、SMSチャネルを使用して配信します。
  2. メッセージは同期モードで配信され、結果はSUBMIT_SM_RESPコマンド(0x80000004)で応答されます。
  3. 配信レポートは、配信レポートセクションで詳述されているように送信されます。
  4. 特殊文字や国際化をサポートするために、UCS2エンコーディングの使用を推奨します。

クライアントデータパケット

クライアントは、SUBMIT_SMコマンド(0x00000004)を送信して以下のフィールドを含むメッセージを送信します:

  1. service_type
    • 値: MSG / CODE / MRKT
    • デフォルト: MSG
  2. source_addr
    • 空白にすることができます。現在SMSでは使用されていません。
  3. destination_addr
    • メッセージの送信先で、国際電話番号形式(例:+8613800138000)である必要があります。
  4. 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"       // 値は文字列である必要があります
        }
      }
      
                  
      このコードブロックはフローティングウィンドウ内に表示されます
  5. data_coding
    • 特殊文字{}を正しく解析するために、UCS2エンコーディングの使用を推奨します。
    • {}を直接送信できる場合は、デフォルトエンコーディング(0x00)を使用できます。
  6. 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)を使用して配信結果を報告します。フィールドは以下の通りです:

  1. service_type
    • 固定値: MSG
  2. source_addr
    • 空白。
  3. destination_addr
    • SUBMIT_SMコマンドのdestination_addrフィールドと一致します。
  4. data_coding
    • エンコーディング方式:デフォルト値0x00
  5. esm_class
    • 0x00に設定します。
  6. short_message
    • 配信レポートをdelivery receipt形式でカプセル化します。
  7. ReceiptedMessageID in tlv
    • 関連付けのためのメッセージID。
  8. MessageState in tlv
    • メッセージ状態、フィールド値0x0427

ステータス解析

short_messageフィールドには、以下を示すstat値が含まれます:

ステータス 意味
DELIVRD 配信成功
UNDELIV 配信失敗

追加情報

無効なコマンド

クライアントが送信した無効なコマンドに対して、サーバーはGENERIC_NACKコマンド(0x80000000)を返し、イベントをログに記録します。サーバーは以下のコマンドのみをサポートします:

  1. EnquireLinkコマンド(0x00000015
  2. Unbindコマンド(0x00000006
  3. SubmitSMコマンド(0x00000004
  4. DeliverSMRespコマンド(0x80000005
  5. 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コマンド。

ご不明な点がございましたら、技術サポートまでお問い合わせください。

icon
お問い合わせ