微信網(wǎng)關(guān)與呼叫中心之間使用HTTP+XML的方式進行數(shù)據(jù)交互。為保證接口的穩(wěn)定性及可擴展性,接口設(shè)計必須具備以下幾個特性。
(1)中立性
所謂中立,就是接口應(yīng)該獨立于實現(xiàn)服務(wù)的硬件平臺、操作系統(tǒng)和編程語言。也就是說,接口是任何程序(不管它是基于什么硬件平臺、操作系統(tǒng)和編程語言而編寫的)均能解讀的信息流。
(2)自描述
所謂自描述,就是標(biāo)準(zhǔn)接口信息流里,通常包含了信息流的總長度、信息流數(shù)據(jù)、這些數(shù)據(jù)的格式(長度、類型等)等信息。由于接口自描述的內(nèi)特征,所以,它具有兩個明顯的外特征。一是必須通過程序?qū)涌诘膾呙瑁拍茏罱K知道接口包含的具體數(shù)據(jù)內(nèi)容,這一點,給使用這類接口的程序帶來不便與額外開銷;二是在不違反接口規(guī)范的前提下,接口包含的具體數(shù)據(jù)內(nèi)容的變化,不需要事前聲明,這一點,就是為什么使用這類接口的程序相互之間能夠松耦合的最根本原因。
(3)不定長
接口信息流里通常包含一些必須的數(shù)據(jù),但更多的是一些選項數(shù)據(jù)。這些選項數(shù)據(jù)根據(jù)不同的具體服務(wù)要求會不一樣。這樣就使得接口的長度不固定。
(4)采用XML協(xié)議
XML協(xié)議是W3C推薦的標(biāo)準(zhǔn),已經(jīng)被廣泛地使用,同時具有豐富的成熟組件支持。
消息網(wǎng)關(guān)與MMC、MMC與MMS之間的消息采用HTTP承載,請求消息采用POST方法。以下是消息網(wǎng)關(guān)與MMC之間的消息請求和消息響應(yīng)示例。
8.6.1 get_user_info
MMC發(fā)送消息請求到消息網(wǎng)關(guān)。
mmc version="1.0">
service name="get_user_info">
get_user_info>
type>00/type>
userId>00wangshuda-bj/userId>
/get_user_info>
/service>
/mmc>
get_user_info參數(shù)解釋見下表。
8.6.2 get_user_info_res
MMC發(fā)送響應(yīng)到消息網(wǎng)關(guān)。
mmc version="1.0">
service name="get_user_info_res">
get_user_info_res>
resCode>00/resCode>
type>00/type>
userId>00wangshuda-bj/userId>
nickName>%s/nickName>
sex>%s/sex>
province>%s/province>
city>%s/city>
country>%s/country>
privilege>%s/privilege>
language>%s/language>
headimgurl>%s/headimgurl>
subscribe_time>%s/subscribe_time>
timeStamp>%s/timeStamp>
/get_user_info_res>
/service>
/mmc>
get_user_info_res參數(shù)解釋見下表。
