微信網(wǎng)關(guān)與呼叫中心之間使用HTTP+XML的方式進(jìn)行數(shù)據(jù)交互。為保證接口的穩(wěn)定性及可擴(kuò)展性,接口設(shè)計(jì)必須具備以下幾個(gè)特性。
(1)中立性
所謂中立,就是接口應(yīng)該獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺(tái)、操作系統(tǒng)和編程語(yǔ)言。也就是說(shuō),接口是任何程序(不管它是基于什么硬件平臺(tái)、操作系統(tǒng)和編程語(yǔ)言而編寫的)均能解讀的信息流。
(2)自描述
所謂自描述,就是標(biāo)準(zhǔn)接口信息流里,通常包含了信息流的總長(zhǎng)度、信息流數(shù)據(jù)、這些數(shù)據(jù)的格式(長(zhǎng)度、類型等)等信息。由于接口自描述的內(nèi)特征,所以,它具有兩個(gè)明顯的外特征。一是必須通過(guò)程序?qū)涌诘膾呙?,才能最終知道接口包含的具體數(shù)據(jù)內(nèi)容,這一點(diǎn),給使用這類接口的程序帶來(lái)不便與額外開(kāi)銷;二是在不違反接口規(guī)范的前提下,接口包含的具體數(shù)據(jù)內(nèi)容的變化,不需要事前聲明,這一點(diǎn),就是為什么使用這類接口的程序相互之間能夠松耦合的最根本原因。
(3)不定長(zhǎng)
接口信息流里通常包含一些必須的數(shù)據(jù),但更多的是一些選項(xiàng)數(shù)據(jù)。這些選項(xiàng)數(shù)據(jù)根據(jù)不同的具體服務(wù)要求會(huì)不一樣。這樣就使得接口的長(zhǎng)度不固定。
(4)采用XML協(xié)議
XML協(xié)議是W3C推薦的標(biāo)準(zhǔn),已經(jīng)被廣泛地使用,同時(shí)具有豐富的成熟組件支持。
消息網(wǎng)關(guān)與MMC、MMC與MMS之間的消息采用HTTP承載,請(qǐng)求消息采用POST方法。以下是消息網(wǎng)關(guān)與MMC之間的消息請(qǐng)求和消息響應(yīng)示例。
8.6.1 get_user_info
MMC發(fā)送消息請(qǐng)求到消息網(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ù)解釋見(jiàn)下表。
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ù)解釋見(jiàn)下表。
![](/d/20211020/4791d2d622d4b03e7d7a79af21bac816.gif)