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

  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
    • メッセージの対象。国際携帯番号形式である必要があります(例:+6598765432)。
  4. 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
        }
      }
      
                  
      このコードブロックはフローティングウィンドウ内に表示されます
  5. data_coding
    • 特殊文字 {} が正常に解析されるよう、UCS2 エンコーディングの使用を推奨します。
    • {} の直接送信に対応している場合は、デフォルトエンコーディング(0x00)を使用できます。
  6. 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)を介して配信ステータスを報告します。具体的なフィールドは次のとおりです。

  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:Short Message Peer-to-Peer Protocol。SMSゲートウェイにおけるメッセージ交換に使用されます。
  • SUBMIT_SM:SMSメッセージを送信するSMPPコマンド。
  • DELIVER_SM:サーバーがメッセージ配信ステータスを報告するために使用するSMPPコマンド。
Icon Solid Transparent White Qiyu
お問い合わせ