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

  1. サーバーはリクエスト内容を解析し、固定的に SMS チャネルを使用して配信します。
  2. メッセージ配信は同期モードで行われ、結果は SUBMIT_SM_RESP コマンド(すなわち 0x80000004)で応答されます。
  3. 配信ステータスはメッセージで報告されます。詳細は 配信レポート を参照してください。
  4. 特殊文字や国際化に対応するため、UCS2 エンコーディングの使用を推奨します。

クライアントパケット

クライアントは SUBMIT_SM コマンド(すなわち 0x00000004)を送信してメッセージを送信します。これには以下のフィールドを含める必要があります。

  1. service_type
    • 値: MSG / CODE / MRKT
    • デフォルト値: MSG
  2. source_addr
    • 空のままで構いません。現在 OTP では使用されていません。
  3. destination_addr
    • メッセージの宛先。国際携帯電話番号形式(例: +6598765432)である必要があります。
  4. 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 の形式は文字列
        }
      }
      
                  
      このコードブロックはフローティングウィンドウ内に表示されます
  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 コマンド。

ご不明な点がございましたら、OTP テクニカルサポート までお問い合わせください。

Icon Solid Transparent White Qiyu
お問い合わせ