【微信开发】公众号自动回复文字和图文链接

需求

在公众号内的输入任意文字,文字相关的第三方网站链接

实现

简单后台设置

我们在微信公众平台上,是可以进行简单的自定义消息回复的。

这里的显然不能满足我们的需求。

配置服务器

配置域名

配置测试服务器

略。

和一般我们配置项目没有区别,所以不再赘述。

本次我们的测试域名是 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>";

实现效果

总结

微信的文档还是十分详细的,我们能通过微信实现很多好玩的功能。

参考资料

时间: 2024-10-30 12:45:20

【微信开发】公众号自动回复文字和图文链接的相关文章

微信开发公众号1

---恢复内容开始--- 本人在俩周前接到开发微信公众号的任务,在前辈的帮助下,基本功能已经实现,现在记录下自己的实现过程. 1.首先申请一个微信公众平台接口测试帐号,url:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 2.登入之后,你会发现下图. 其中appID,appsecret是你即将开发的公众号的唯一标识,将来很多操作都需要一个参数Token(俩个小时时效性,过期失效,一天生成上限为2000次),Token就

微信公众号自动回复_Java

先声明一下,这是一个maven工程pom文件需要的依赖: 1 <dependency> 2 <groupId>dom4j</groupId> 3 <artifactId>dom4j</artifactId> 4 <version>1.6</version> 5 </dependency> 6 <dependency> 7 <groupId>commons-io</groupId&g

atitit. access token是什么??微信平台公众号开发access_token and Web session保持状态机制

atitit. access token是什么??微信平台公众号开发access_token and Web session保持状态机制 1. token机制and  session保持状态机制 1 2. access token是什么?? 1 3. 为什么需要access token 2 4. 需不需要保存access_token,如何保存??? 2 5. access_token在何时被创建 2 6. 为什么不直接使用appid保持状态 2 7. access_token的过期问题 3 8.

微信在公众号增开了新广告位 这次是在图文消息头部

自上次微信推广功能在图文消息底部投放图片和文字链两种广告后,近日微信在公众号增开了新广告位,这次是在图文消息的头部,支持APP下载类营销推广. 微信广告平台发布了三大产品功能,全面支持APP下载类营销推广.主要方式有: 1. 图文消息顶部增加App下载卡片,流量场景更丰富 图文消息顶部广告位正在灰度测试中,现已支持投放App下载卡片与图片类广告,能够直接触达用户,达成效果转化,可促进品牌形象渗透. 2. 投放后台增加定向条件“用户兴趣”标签,定向工具更精准 微信广告根据用户基础属性.短期行为以及

微信开发订阅号(ASP.NET MVC4+jquery mobile+AppHarbor发布)

首先应该去微信公众平台注册一个账号,因为我是用的个人,所以只能注册订阅号,然后需要提供身份证照片,这些大家慢慢折腾.然后在微信管理面板中选择高级功能,进入开发者模式. 在服务器配置中需要提供最重要的url,用来接收微信发过来的消息和回复消息,token这个随便填一个就行了,主要是用来验证消息来源. 如果你是java php开发者,那么你可以选google AppEngin 或者sina app engine 来部署你的应用,但是很不幸,我是.net,这里我们使用国外的AppHarbor,appH

根据微信的公众号获取公众号的二维码 根据公众号获得二维码的图片

最近在维护一个老项目,就是根据微信的公众号,也就是英文数字那串的公众号 来获得公众号的二维码的,我看了下,之前的代码是用的这个网址 http://open.weixin.qq.com/qr/code/?username=公众号微信号 同事反应说之前一直可以的,不知道为什么现在就不行了. 然后我也测试了下,使用我们公司的公众号名字,http://open.weixin.qq.com/qr/code/?username=xwykj888 打开后的地址显示的就是 Certificate test pa

初涉node.js做微信测试公众号一路填坑顺便发现个有趣的其他漏洞

[微信测试公众号] 半年前耍着玩搭起来的“微信简历”,是LAMP版的,很皮毛. 微信的官方文档在这 http://mp.weixin.qq.com/wiki/index.php 1.获取access token 2.自定义菜单创建,直接在调试工具上做了 http://mp.weixin.qq.com/debug 3.接入指南(接入自己的网站) 4.接收微信消息,判断消息类型,判断消息关键字(比如来自哪个按钮),响应消息 这里有个小坑,不同类型的消息数据结构略有不同,判空最好做细致点. [V2.0

微信设备公众号不用扫描相应设备二维码也可以添加关注

之前微信设备公众号需要扫描相应设备二维码才可以添加关注,先在微信发布更新,不用扫描相应设备二维码也可以添加关注微信设备公众号了,和普通公众号一样 微信设备公众号无需绑定相关设备也可被关注 好消息,请伙伴们奔走相告,微信新版本(安卓应用宝上的6.0版本,IOS6.0.1版本)设备公众号现无需绑定相关设备也可被关注,从此,你再也不用担心开通设备功能影响涨粉了,可以直接把现有服务号开通设备功能,而不用重新申请服务号. 之前需要扫描相应设备二维码才可以添加关注,现在不用扫描相应设备二维码也可以添加关注.

微信支付公众号支付redirect_uri域名与后台配置不一致,错误码10003

最近弄微信支付,微信支付公众号支付redirect_uri域名与后台配置不一致,错误码10003,最容易出错两个地方 1,appid 对应不到 2,开发者网页授权 填写域名 文章来自http://www.96net.com.cn 原文地址:https://www.cnblogs.com/96net/p/9648188.html