【微信开发】公众号自动回复文字和图文链接
2017-03-07 23:25
399 查看
需求
在公众号内的输入任意文字,文字相关的第三方网站链接实现
简单后台设置
我们在微信公众平台上,是可以进行简单的自定义消息回复的。这里的显然不能满足我们的需求。
配置服务器
配置域名
略配置测试服务器
略。和一般我们配置项目没有区别,所以不再赘述。
本次我们的测试域名是
http://***.***.**/***.php
验证Token
在微信的公众后台的开发 / 基本配置 / 填写服务器配置中
我们需要配置服务器的地址,在启用配置之前,需要经过微信的token验证。
本文使用的实例代码为PHP.
官方文档给出了验证流程图
下面为PHP实现的代码。
//1 获取加密参数 $token = "***"; $signature = $_GET['signature']; $timestamp =$_GET['timestamp']; $nonce = $_GET['nonce']; $echostr = $_GET['echostr']; //2 排序数组 $list = [ 'token'=>$token, 'timestamp'=>$timestamp, 'nonce'=>$nonce, ]; sort($list); //拼接字符串 $str =""; foreach ($list as $value){ $str .= $value; } //加密 $encode_str = sha1($str); if($encode_str == $signature){ echo $echostr; }
接收消息
在官方文档中,有一个对应的事例代码。https://wximg.gtimg.com/shake_tv/mpwiki/cryptoDemo.zip
第一步,接收普通消息
这里我们采用明文的方式接收数据。
下面采用官方的接口调试工具。
由于是被动调用接口,所以我们只需要从消息中得到最后的用户id以及消息文字就行了。
$msg = file_get_contents("php://input"); $xml = new DOMDocument(); $xml->loadXML($msg); $from_user_name = $xml->getElementsByTagName("FromUserName")->item(0)->nodeValue; $msg_type = $xml->getElementsByTagName("MsgType")->item(0)->nodeValue; $content = $xml->getElementsByTagName("Content")->item(0)->nodeValue; echo $from_user_name." 说的类型是".$msg_type.", 内容是".$content;
发送消息
当用户发送消息给公众号时(或某些特定的用户操作引发的事件推送时),会产生一个POST请求,开发者可以在响应包(Get)中返回特定XML结构,来对该消息进行响应(现支持回复文本、图片、图文、语音、视频、音乐)。严格来说,发送被动响应消息其实并不是一种接口,而是对微信服务器发过来消息的一次回复。也就是说,直接返回对应的xml就行。
下面的简单实现代码,直接返回给用户自己说的话。
$msg = file_get_contents("php://input"); $xml = new DOMDocument(); $xml->loadXML($msg); $from_user_name = $xml->getElementsByTagName("FromUserName")->item(0)->nodeValue; $to_user_name = $xml->getElementsByTagName("ToUserName")->item(0)->nodeValue; $msg_type = $xml->getElementsByTagName("MsgType")->item(0)->nodeValue; $content = $xml->getElementsByTagName("Content")->item(0)->nodeValue; $time = time(); $str = "<xml> <ToUserName><![CDATA[".$from_user_name."]]></ToUserName> <FromUserName><![CDATA[".$to_user_name."]]></FromUserName> <CreateTime>".$time."</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[".$content."]]></Content> </xml>"; echo $str;
下面是最终实现的效果
返回超链接
//前后省略,跟上面的一样 $str = "<xml> <ToUserName><![CDATA[".$from_user_name."]]></ToUserName> <FromUserName><![CDATA[".$to_user_name."]]></FromUserName> <CreateTime>".$time."</CreateTime> <MsgType><![CDATA[news]]></MsgType> <ArticleCount>1</ArticleCount> <Articles> <item> <Title><![CDATA[".$content."]]></Title> <Description><![CDATA[我是文字描述]]></Description> <PicUrl><![CDATA[http://avatar.csdn.net/C/6/6/1_diandianxiyu.jpg]]></PicUrl> <Url><![CDATA[http://blog.coderfix.cn]]></Url> </item> <item> </xml>";
实现效果
总结
微信的文档还是十分详细的,我们能通过微信实现很多好玩的功能。参考资料
https://mp.weixin.qq.com/wiki相关文章推荐
- 微信开发之自动回复图文消息
- 微信开发实战(5)—粉丝关注开发者公众号时,自动回复消息
- 公众平台自动回复支持插入微信卡券 多图文消息可嵌入卡券
- 微信开发实战(5)—粉丝关注开发者公众号时,自动回复消息
- 微信开发实战(5)—粉丝关注开发者公众号时,自动回复消息
- php开发公众号,关键词自动回复多图文消息
- 微信开发-点击链接自动添加关注
- 微信开发之自动回复
- 微信接口开发------自动回复功能
- 夺命雷公狗---微信开发09----玩转单图文消息回复
- 微信图文消息写入web数据库,公众号多图文开发
- 微信机器人:小蜗牛有道翻译小助手——Django + SAE + 微信公众帐号自动回复开放接口
- 微信公众帐号开发教程第13篇-图文消息全攻略
- 微信公众号开发——关注公众号自动回复
- java开发微信自动回复文本消息换行的问题。
- php微信接口开发的数据获取和自动回复
- 微信机器人:小蜗牛有道翻译小助手——Django + SAE + 微信公众帐号自动回复开放接口
- 微信开发群发图文消息效果,公众号群发消息案例demo
- PHP微信开发模式,搜索已发送图文,匹配关键字回复