前面已经说了,怎么来开启和配置微信服务号的开者模式了,这次要讲的就是针对和用户互动的一些事件。
本次主要讲的是,用户通过微信服务号输入框,发送给服务号的消息,怎么自动回复给用户。非开者模式,只需要在微信自动回复配置上关键词即可以。开发者模式需要通过responseMsg或者自己定义的。
关于responseMsg方法,是在第一步进行开启状态的时候那个相关类里的方法。
首先看下这个方法的:
public function responseMsg() {
$postStr = $GLOBALS ["HTTP_RAW_POST_DATA"];
if (! empty ( $postStr )) {
$postObj = simplexml_load_string ( $postStr, 'SimpleXMLElement', LIBXML_NOCDATA );
$MsgType = $postObj->MsgType;
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim ( $postObj->Content );
$time = time ();
$textTpl = "
$msgType = "text";
$contentStr = '亲,测试成功,已经到您的信息!';
$resultStr = sprintf ( $textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr );
echo $resultStr;exit();
} else {
exit ();
}
}
上面的方法,基本是一个比较简单的方法了。下面说明下上面几个重要的变量值代表含义:
$postObj 用户发送过来的数据,以xml的形式
下面是解析xml的结果:
$MsgType 消息类型
$fromUsername 发消息者的openid
$toUsername 开发者微信号
$keyword 发送的内容(注意:本次例子用的是text文本形式)
$time 是自己写的,做业务需求的时候有时候需要。
$textTpl 是回复给用户的模板样式。模式样式也分为好几种
本次为普通消息类型有:text、image、voice、video等,其它模式详细查看文档,还有一种事件类型,下篇文章会详细说明。
本次例子用的是text文本回复模式,其它模式详细查看官方文档
说明下xml的参数:
ToUserName 请使用上面的fromUsername 发送给该用户
FromUserName 请使用ToUserName 消息发送者(开发者微信号)
CreateTime 时间(时间戳)
MsgType 消息类型(回复,注:本次例子text)
Content 回复的内容 可写A标签。尽量控制字数,不要太多。
该方法设置完之后,通过该微信服务号的文本框录入数据,点击发送,就会看到由服务号回复的。
亲,测试成功,已经到您的信息!
到这,已经把最简单的text完成。其它的普通回复操作也基本同样的流程,找对应的接受与回复的类型xml,然后进行操作。
提示:开发者,可以在msgType进行判断,看用户发送的消息,属于那种类型的,再进行不同的操作。
例如:
if($MsgType=='text'){}
if($MsgType=='image'){}
if($MsgType=='voice'){voice接受的参数,请参考上面的普通消息类文档,回复操作:请选择自己要回复内容的xml格式,请参考回复用户模板样式连接。}