簡訊特碼伺服器(SNS)應用程式說明文件
94/01/20
文件目錄
介紹
...3SNS傳送格式
...3發訊P
ROTOCOL格式
...4收訊P
ROTOCOL格式及回傳結果說明
...5EMOME
代碼轉換須知
...8介紹
SNS 伺服器提供用戶使用 TCP/IP 方式與 GSM 手機做雙向訊息傳遞功能。
目前 SNS 的 IP 及 Port 分別為 IP:203.66.172.133 Port:8001
本文件提供用戶程式與SNS溝通之資料傳遞格式,假使用戶程式與emome認
證主機介接時,則需參考
emome代碼轉換須知
,以了解如何讓SNS能傳訊息到相對emome代碼的手機。最後有關範例程式則不列在本文件,有需求 的用戶請到 http://203.66.172.129/sns/sns_help.htm 自行下載參考
SNS 傳送格式
Data structure and Definition
#define MAX_ID_LEN 8
#define MAX_PASSWD_LEN 8
#define MAX_MSISDN_LEN 12
#define MAX_MESSAGEID_LEN 8
#define MAX_MSG_LEN 159
#define ORDERTIME_LEN 12
#define SERV_CHECK 0 // used for sSendMsg.type
#define SERV_EDIT_PASSWD 1 // used for sSendMsg.type
#define SERV_SEND 2 // used for sSendMsg.type
#define SERV_QUERY 3 // used for sSendMsg.type
#define SERV_GET 4 // used for sSendMsg.type
#define SERV_LINK 5 // for compliant port 3481
#define SERV_SEND_WITH_UDHI 6
#define SERV_EXPRESS_SEND 7
#define SERV_SEND_MULTI_SM 8
#define SERV_SEND_WITH_SUBNO 10 // Subno send msg to Msisdn
#define SERV_SEND_WITH_RECV_SUBNO 11 // Msisdn send msg to Subno
#define SERV_SEND_WITH_ALL_SUBNO 12 // Subno send msg to Subno
#define SERV_QUERY_WITH_SUBNO 13
#define SERV_QUERY_WITH_RECV_SUBNO 14
#define SERV_QUERY_WITH_ALL_SUBNO 15
#define SEND_NOW 100 // used for sSendMsg.tran_type
#define SEND_ORDER 101 // used for sSendMsg.tran_type
#define SM_UDHI_ENABLE 0x01
#define SM_PCLID_ENABLE 0x04
發訊 Protocol 格式
struct sSendMsg {unsigned char type;
unsigned char coding;
unsigned char length;
unsigned char tran_type;
char pchID[MAX_ID_LEN+1];
char pchPasswd[MAX_PASSWD_LEN+1];
char pchMsisdn[MAX_MSISDN_LEN+1];
char pchMessageID[MAX_MESSAGEID_LEN+1];
char pchMessage[MAX_MSG_LEN+1];
char pchSendTime[ORDERTIME_LEN+1];
};
Member Description Used in type Indicate request type Everywhere
pchID Checking ID type = SERV_CHECK
pchPasswd Checking password type = SERV_CHECK
SERV_EDIT_PASSWD
coding 1 is available type = SERV_SEND
length Short message length type = SERV_SEND
tran_type 立即/預約傳送 type = SERV_SEND
pchMsisdn Destination msisdn type = SERV_SEND SERV_QUERY
pchMessage Sending message Calling number Calling Wappie 代碼
type = SERV_SEND type = SERV_QUERY
type = SERV_QUERY_WITH_SUBNO
type = SERV_QUERY_WITH_ALL_SUBNO
pchSendTime 預 約 傳 送 時 間
(yymmddhhmm00)
type = SERV_SEND && tran_type = SEND_ORDER
pchMessageID 1.Returned message id if sending successfully
2.付費方之號碼須洽詢長通公
司 有 無 該 使 用 權
(0937123456->37123456) 3. 付費方之 eomome 用戶代碼 (前面 9 碼,由左算起)
4. 以帳號起始之任意號碼須洽 詢長通公司有無該使用權(123 為帳號,則為 123???…)
type = SERV_QUERY type = SERV_SEND
type = SERV_SEND_WITH_SUBNO
type = SERV_SEND_WITH_ALL_SUBNO
擴 充 功 能 ( 使 用 pchID 欄位)
PchID[0] -> Expired hour PchID[1] -> Expired miniute
適用於重送簡訊的各種 type pchID[2]:bit 0 UDHI
PchID[2] -> Flag indication PchID[4] -> Pclid
p.s. 訊 息 重 送 的 期 限 為 ( 分 鐘)=pchID[0]*60+pchID[1]
bit 2:Pclid
For getting data from server, you should only fill type=SERV_GET 當傳送簡訊(非 Login 時),擴充 sSendMsg.pchID 為額外簡訊控制
sSendMsg.pchID[0]->Expired Hour sSendMsg.pchID[1]->Expired Min.
Expired Time 由 Expired Hour 及 Expired Min.組合,此值代表簡訊進 入簡訊中心最長的 Retry time.(不可超過系統 default 值【24 hours】)
若 Expired time 沒設,則用系統預設值 sSendMsg.pchID[2]為 functional flag
Bits 7 6 5 4 3 2 1 0 Meaning
1 Set UDHI【0x01】
1 Set PclId【0x04】
Set UDHI 主要是用在傳送圖鈴下載等應用上,也因此當欲傳 送圖鈴時,可以 enable 此 bit,而仍可以用 SERV_SEND,而 不須改用 SERV_SEND_WITH_UDHI
Set PclID 時,sSendMsg.pchID[4]表示新的 PclId
收訊 Protocol 格式及回傳結果說明
struct sRecvMsg{
unsigned char code;
unsigned char coding;
unsigned char length;
char send_msisdn[MAX_MSISDN_LEN+1];
char recv_msisdn[MAX_MSISDN_LEN+1];
char buffer[MAX_MSG_LEN+1];
};
Member Description
code Return code
coding Coding scheme of short message
length Short message length
send_msisdn Sender msisdn
recv_msisdn Receiver msisdn
buffer Return description
帳號/密碼確認(type = SERV_CHECK)
Code Buffer
0 ID/Password check successful 1 Password error or no this account 2 Can not send from this IP
3 System error, try again 4 This account is forbidden
修改密碼(type = SERV_EDIT_PASSWD)
Code Buffer
0 Modify password successfully 1 Modify password error
2 Can not send from this IP 傳送訊息(type = SERV_SEND)
Code Buffer 0 Message id
1 Can not send character
2 Message sending failure(Reason) 3 Ordered time beyond 48 hours 4 Send binary to pager
5 Code transfer fail
10 Short message send successfully 31 Prepaid account has no more value 32 Prepaid system has no such account
33 Prepaid account expired, need value-added again 34 Protocol type error
35 System error(reason) 36 Prepaid system locked 37 Prepaid account is locked 查詢結果(type = SERV_QUERY)
Code Buffer
0 Successful:yyyymmddHHMMSS 1 Message is processing
2 System contains no data
3 Message can not send to GSM/Pager:
yyyymmddHHMMSS
4 System error
5 Message status unknown 6 Message is not complete 7 Message is submitted to SMSC 8 SIM card memory full
9 Destination number is unavailable 31 Message is submitting
32 Message send to SMSC fail: yyyymmddHHMMSS
yyyymmddHHMMSS 為訊息傳送成功或是失敗之時間
接收訊息(type = SERV_GET)
Code Buffer 0 Short message
1 No data
2 Get data error
3 Can not use Get(ps 指該帳號沒有 Get 之權限) Global error
Code Buffer
10 Server too busy
11 Connection number too many 12 Format error(display error part) 13 ID/Password has not been checked 14 Need fill calling number(when user can
change calling number to send message)
15 Calling number(subno) format
error(display error part)
16 System can not transform subno into msisdn
17 Subscriber number not found 18 You can’t send long short message
20 Server shutdown
21 System Error
emome 代碼轉換須知
發訊方為 emome 的 Subscriber number,受訊方為行動電話號碼 sendMsg.type = 10
sendMsg.pchMessageID = 發訊方之 Subscriber number(僅填前面 9 碼,
由左算起)
sendMsg.pchMsisdn =受訊方之行動電話號碼 發訊方為行動電話號碼,受訊方為行動電話號碼
sendMsg.type = 2
sendMsg.pchMessageID = 發訊方之行動電話號碼(後面 8 碼;
0937123456->37123456)
sendMsg.pchMsisdn = 受訊方之行動電話號碼
發訊方為 emome 的 Subscriber number,受訊方為 emome 的 Subscriber number
sendMsg.type = 12
sendMsg.pchMessageID = 發訊方之 Subscriber number (僅填前面 9 碼,
由左算起)
sendMsg.pchMsisdn = 受訊方之 Subscriber number (僅填前面 9 碼,由左 算起)
查詢發訊方為 emome 的 Subscriber number,受訊方為行動電話號碼 sendMsg.type = 13
sendMsg.pchMessageID = return Message id
sendMsg.pchMessage = 發訊方之 Subscriber number (僅填前面 9 碼,由 左算起)
sendMsg.pchMsisdn = 受訊方之行動電話號碼
查詢發訊方為行動電話號碼,受訊方為行動電話號碼 sendMsg.type = 3
sendMsg.pchMessageID = return Message id
sendMsg.pchMessage = 發訊方之行動電話號碼(10 碼) sendMsg.pchMsisdn = 受訊方之行動電話號碼
查詢發訊方為 emome 的 Subscriber number,受訊方為 emome 的 Subscriber number
sendMsg.type = 15
sendMsg.pchMessageID = return Message id
sendMsg.pchMessage = 發訊方之 Subscriber number (僅填前面 9 碼,由 左算起)
sendMsg.pchMsisdn = 受訊方之 Subscriber number (僅填前面 9 碼,由左 算起)
欲傳送 Ringtone, Icon 等 Smart Message 時,請 pchID[2] = 1(見 SNS 文件說明紅字部分)
其餘與 SNS 介接方法皆與 SNS 說明相同