微信网关与呼叫中心之间使用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参数解释见下表。