1. 程式人生 > >SMPP是一種通用的簡訊介面協議

SMPP是一種通用的簡訊介面協議

前言

短訊息中心(SMSC)可以與各種擴充套件短訊息實體(ESME)配合工作,從而為移動使用者提供豐富多采的功能。

ESME Agent

External Short Message Entity Agent 擴充套件短訊息實體代理

ESME    

External Short Message Entity 擴充套件短訊息實體

PLMN

Public Land Mobile Network 公共陸地移動網

SMSC

Short Message Service Center 短訊息中心

SMPP

Short Message Peer to Peer 短訊息點對點協議

SS

Secretary System 祕書檯

AS

Auto System 自動臺

       SMSC指短訊息中心。

       ESME在本規範中指的是通過本規範規定的協議與SMSC通訊,請求特定的短訊息服務的功能實體。

       SS指人工話務接入並受理短訊息服務請求的系統。

       AS指利用互動式語音技術受理短訊息服務請求的系統。

       SS(祕書檯)和AS(自動臺)是典型的ESME。

SMSC和ESME之間的傳輸網路可以是基於X.25, 或TCP/IP。

ESME到SMSC的訊息

ESME到SMSC的訊息,如:提交、查詢、刪除短訊息等請求,ESME必須以TRANSMITTER型別連線到SMSC。

圖4描述了一個典型的TRANSMITTER型別的請求應答的示例。TRANSMITTER型別的ESME是以BIND_TRANCESMITTER連線到SMSC的ESME,此型別的ESME向SMSC發起提交短訊息,查詢短訊息狀態,刪除短訊息等請求,SMSC返回請求的應答。

ESME和SMSC之間的請求應答訊息可以是阻塞方式也可以是非同步方式的。所以ESME可能在SMSC沒有應答的情況下,發起多個請求到SMSC。


SMSC應該按照收到的請求順序,給EMSE迴響應。但是ESME必須能夠處理沒有按順序的響應。

SMSC到ESME的訊息

SMSC到ESME的訊息,如:SMSC轉發短訊息到ESME,ESME必須以RECEIVER型別連線到SMSC。

圖5描述了一個典型的RECEIVER型別的ESME和SMSC之間的訊息序列的示例。RECEIVER型別的ESME是以BIND_RECEIVER連線到SMSC的ESME,SMSC向此類ESME轉發短訊息,ESME向SMSC迴應答。

ESME和SMSC之間的請求應答訊息可以是阻塞方式也可以是非同步方式的。所以SMSC可能在ESME沒有迴應答的情況下,傳送發起多個deliver_sm請求到ESME。


ESME應該按照收到請求順序,給SMSC返回響應。但是SMSC必須能夠處理沒有按順序回的響應。

訊息流

本規範中規定的所有協議,不管是從ESME到SMSC,還是從SMSC到ESME的訊息,接收到請求的一方,都必須給請求方回一個應答訊息acknowledge)。

訊息語法

       在以下語法說明中,遵從以下規則:

              A.未使用的欄位,依據型別必須設定為0或NULL。

              B.訊息由訊息頭和訊息體組成。

              C.狀態(Command_status)的定義如表3所示。

狀態定義

錯誤程式碼

描述

E_SUCCESS(0X00000000)

成功

E_OTHERERR(0X00000001)

其他錯誤

0X00000002 – 0X0000000F

保留給SMSC廠商定義錯誤

E_MSGLENERR(0X00000010)

訊息長度錯誤

E_CMDLENERR(0X00000011)

命令長度錯誤

E_INVLDCMDID(0X00000012)

訊息ID無效

E_NORIGHT(0X00000013)

沒有執行此命令的許可權

0X00000014 – 0X0000001F

保留

E_INVLDSYSTEMID(0X00000020)

無效的SYSTEMID

E_INVLDPASSWORD(0X00000021)

無效的密碼

E_INVLDSYSTEMTYPE(0X00000022)

無效的SYSTEMTYPE

0X00000023 – 0X0000003F

保留

E_ADDRERR(0X00000040)

地址錯誤

E_MOEXCEED(0X00000041)

超過最大提交數

E_MTEXCEED(0X00000042)

超過最大下發數

E_INVLDUSER(0X00000043)

無效的使用者

E_INVLDDATAFMT(0X00000044)

無效的資料格式

E_CREATEMSGFAILURE(0X00000045)

建立訊息失敗

E_INVLDMSGID(0X00000046)

無效的短訊息ID

E_DATABASEFAILURE(0X00000047)

資料庫失敗

E_CANCELMSGFAILURE(0X00000048)

取消訊息失敗

E_MSGSTATEERR(0X00000049)

短訊息狀態錯誤

E_REPLACEMSGFAILURE(0X0000004A)

替換訊息失敗

E_INVLDRPLADDR(0X0000004B)

替換訊息源地址錯誤

0X0000004C – 0X0000005F

保留

E_INVLDORGTON(0X00000060)

無效的源地址TON

E_INVLDORGNPI(0X00000061)

無效的源地址NPI

E_ORGADDRERR(0X00000062)

源地址錯誤

E_INVLDDESTTON(0X00000063)

無效的目的地址TON

E_INVLDDESTNPI(0X00000064)

無效的目的地址NPI

E_DESTADDRERR(0X00000065)

目的地址錯誤

E_INVLDSCHEDULE(0X00000066)

無效的定時時間

E_INVLDEXPIRE(0X00000067)

無效的超時時間

E_INVLDESM(0X00000068)

無效的ESM_CALSS

E_INVLDUDLEN(0X00000069)

無效的UDLEN

E_INVLDPRI(0X0000006A)

無效的PRI

E_INVLDRDF(0X0000006B)

無效的Registered_delivery_flag

E_INVLDRPF(0X0000006C)

無效的Replace_if_present_flag

0X0000006D – 0X0000007F

保留

使用者管理部分(可選)

E_USERALREADYEXIST(0X00000080)

指定使用者已經存在

E_CREATEUSERERR(0X00000081)

建立使用者失敗

E_USERIDERR(0X00000082)

使用者ID錯誤

E_USERNOTEXIST(0X00000083)

指定使用者不存在

0X00000084 – 0X0000008F

保留

0X00000090 – 0X00000FFF

保留給SMSC廠商定義錯誤

其他

保留

型別定義

              (1)integer:一定位元組數所組成的整數,高位在前,低位在後。例                                             如:1位元組(BYTE),2位元組(WORD )  , 4位元組 (DWORD)                                                 ,6位元組等等。

              (2)C_String:以NULL結束的ASCII字串。

(3)C_DecString:以NULL結束的ASCII字串,它由一系列的10進位制字元                     組成(‘0’---‘9’)。

       (4)C_OctetString:由任意8位位元組組成資料流串。

              (5)C_HexString:以NULL結束的ASCII字串,它由一系列的16進位制字元組                         成(‘0’---‘9’,‘A’(‘a’)---‘F’(‘f’))。

              (6)C_UnicodeString:以NULL結束的Unicode編碼的字串。

              (7)C_StringTime:表示時間的字串,它為以下格式。“YYMMDDhhmmsstnnp" ,                 長度定為17個位元組或1個位元組,最後一個位元組值必須為NULL,1個位元組表示                           使用預設的時間定義(由短訊息中心實現時具體設定),17個位元組的具體格式                          如下:

YY'

年份的最後2位 (00-99)

MM

月份(01-12)

DD

日 (01-31)

Hh

小時 (00-23)