微信公众号开发者模式普通消息模式例子

五月 12, 2019 | views
Comments 0

微信公众号开发者模式普通消息模式我们用到的比较多就是说什么然后自动回复了,下面我们就一起来看一篇关于微信公众号开发者模式普通消息模式例子了,具体的操作如下所示。

前面已经说了,怎么来开启和配置微信服务号的开者模式了,这次要讲的就是针对和用户互动的一些事件。

本次主要讲的是,用户通过微信服务号输入框,发送给服务号的消息,怎么自动回复给用户。非开者模式,只需要在微信自动回复配置上关键词即可以。开发者模式需要通过responseMsg或者自己定义的。

关于responseMsg方法,是在第一步进行开启状态的时候那个相关类里的方法。

首先看下这个方法的:


  1. public function responseMsg() { 
  2. $postStr = $GLOBALS ["HTTP_RAW_POST_DATA"]; 
  3. if (! emptyempty ( $postStr )) { 
  4. $postObj = simplexml_load_string ( $postStr'SimpleXMLElement', LIBXML_NOCDATA ); 
  5. $MsgType = $postObj->MsgType; 
  6. $fromUsername = $postObj->FromUserName; 
  7. $toUsername = $postObj->ToUserName; 
  8. $keyword = trim ( $postObj->Content ); 
  9. $time = time (); 
  10. $textTpl = "<xml> 
  11. <ToUserName><![CDATA[%s]]></ToUserName> 
  12. <FromUserName><![CDATA[%s]]></FromUserName> 
  13. <CreateTime>%s</CreateTime> 
  14. <MsgType><![CDATA[%s]]></MsgType> 
  15. <Content><![CDATA[%s]]></Content> 
  16. </xml>"; 
  17. $msgType = "text"
  18. $contentStr = '亲,测试成功,已经到您的信息!'
  19. $resultStr = sprintf ( $textTpl$fromUsername$toUsername$time$msgType$contentStr ); 
  20. echo $resultStr;exit(); 
  21. else { 
  22. 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格式,请参考回复用户模板样式连接。}





zend