方案
- 同步方案:
微信将消息发来后即可返回,返回的消息即是用户关注后自动回复的内容 -
异步方案
将消息放入队列进行处理,对微信回复空。消费队列将消息取出后,使用customMessage(客服消息)进行回复
客服消息可以做的事
实现
在微信后台配置里,配置服务器信息:
image.png
- url是,当微信收到消息后,通知我们的入口,并且必须是80端口。
- token,用于识别开发者,自定义即可
细节上可阅读开发文档
绑定接口坑点
- 初次绑定时候,要将微信发过去的GET消息中的echostr字段输出,才能绑定成功
- 绑定成功后,就可以正常开发了
我们个人开发时候,可以配置测试公众号进行开发
测试号配置
测试号二维码
配置完成后。用微信扫一扫,就可以关注测试公众号,并且,微信会将消息发到服务器端。
接受服务器端消息。可以看到关注事件,微信会发送get消息,和xml消息
get消息:
array (
'signature' => '53499b81d59b07ce375a4b62c66006ea55f6427d',
'timestamp' => '1524020660',
'nonce' => '172652991',
'openid' => 'o16dF0vTISOXE6Cs8PZXzYA7PNMw',
)
post消息 :array () 为空
xml消息:字符串
'<xml>
<ToUserName><![CDATA[gh_228575651778]]></ToUserName>
<FromUserName><![CDATA[o16dF0vTISOXE6Cs8PZXzYA7PNMw]]>
</FromUserName><CreateTime>1523821114</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
<EventKey><![CDATA[]]></EventKey>
</xml>'
可以看到MsgType是event,event的内容是subscribe,订阅消息
注意
在php中,_$POST内很可能没有xml消息,应该使用如下代码进行xml接收
$postStr = file_get_contents("php://input");
$array = (array)simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
转换xml即可
对微信消息进行回复,回复一段xml消息。这条xml消息,就是关注微信后的自动回复内容,回复方案可选择文章开头提到的同步和异步方案
测试订阅号自动回复内容
可以获取用户信息,自定义回复内容等等。
消息回复的xml格式,可参考微信被动回复消息-回复图文消息:
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140543
如果是异步方案,使用客服消息进行回复,可参考客服消息
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140547
微信文档
上图我的测试号自动回复内容json串