微信網關與呼叫中心之間使用HTTP+XML的方式進行數據交互。為保證接口的穩定性及可擴展性,接口設計必須具備以下幾個特性。
(1)中立性
所謂中立,就是接口應該獨立于實現服務的硬件平臺、操作系統和編程語言。也就是說,接口是任何程序(不管它是基于什么硬件平臺、操作系統和編程語言而編寫的)均能解讀的信息流。
(2)自描述
所謂自描述,就是標準接口信息流里,通常包含了信息流的總長度、信息流數據、這些數據的格式(長度、類型等)等信息。由于接口自描述的內特征,所以,它具有兩個明顯的外特征。一是必須通過程序對接口的掃描,才能最終知道接口包含的具體數據內容,這一點,給使用這類接口的程序帶來不便與額外開銷;二是在不違反接口規范的前提下,接口包含的具體數據內容的變化,不需要事前聲明,這一點,就是為什么使用這類接口的程序相互之間能夠松耦合的最根本原因。
(3)不定長
接口信息流里通常包含一些必須的數據,但更多的是一些選項數據。這些選項數據根據不同的具體服務要求會不一樣。這樣就使得接口的長度不固定。
(4)采用XML協議
XML協議是W3C推薦的標準,已經被廣泛地使用,同時具有豐富的成熟組件支持。
消息網關與MMC、MMC與MMS之間的消息采用HTTP承載,請求消息采用POST方法。以下是消息網關與MMC之間的消息請求和消息響應示例。
8.6.1 get_user_info
MMC發送消息請求到消息網關。
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參數解釋見下表。
8.6.2 get_user_info_res
MMC發送響應到消息網關。
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參數解釋見下表。
