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

需求

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

实现

简单后台设置

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

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

配置服务器

配置域名

配置测试服务器

略。

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

本次我们的测试域名是 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-09-24 11:08:09

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

java-寻求微信公众平台开发“公众号暂时无法提供服务,请稍后再试”的解决方案

问题描述 寻求微信公众平台开发"公众号暂时无法提供服务,请稍后再试"的解决方案 项目部署在SAE上,日志截取到了 140.207.54.75 [16/Apr/2015:21:53:17 +0800] JAVA_Notice: <![CDATA[gh_83f240695490]]><![CDATA[o-poDs-3jbAA_EXFwy9IcuwFFa1E]]><![CDATA[1429192397721]]><![CDATA[text]]>

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

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

微信公众号 文本 菜单-微信普通公众号如何实现多重文本菜单?

问题描述 微信普通公众号如何实现多重文本菜单? 微信普通公众号如何实现多重文本菜单? 微信普通公众号如何实现多重文本菜单?比如: 首先显示文本菜单: 1. a 2. b 3. c 在输入2之后,后台列出2下的新菜单列表: 1. ba 2. bb 3. bc 再输入3之后,后台列出3下的新菜单列表,以此类推 这个功能该如何实现呢? 解决方案 下一级你可以指定为2.1 再一级 2.1.1 解决方案二: 很简单,微信公众号提供了对特定关键字进行特定回复的接口 你只要自定义这些特定关键字和需要回复的内容

微信禁止公众号互推后再出新规:多个条件限制分享至朋友圈

中介交易 SEO诊断 淘宝客 云主机 技术大厅 延伸阅读:微信公众号出严规,圈内现"八项规定谣言"微信公共平台被指靠微博而生 公众号退订比新关注多疑现负增长微信危局:微信公众号疑似出现负增长 微信禁止公众号限制诱导用户分享至朋友圈 微信营销还有戏? 南都讯 记者张东锋 微信团队悄然推出的"微信公众平台运营规范"(下称"规范"),这两天经由部分业内人士的解读后引起关注. "规范"对利用其他账号和第三方运营平台对公众账号推广.强制

微信平台公众号测试-关于微信平台公众号的测试点

问题描述 关于微信平台公众号的测试点 本人希望懂这方面的大神,可以指导一下,我一直接触的都是WEB系统测试,接触这个有点惶恐,系统有经验的大神,可以给我一些建议 解决方案 可以自己搭建个web服务器 或者申请个免费空间部署 解决方案二: 该怎么测试还是怎么测试,公众账号的开发类似一个web service+网站.

文档-微信开发Java语言自动回复问题

问题描述 微信开发Java语言自动回复问题 小白我最近在做微信平台开发,现在要做关键字自动回复,开发文档看不太懂,求大神给思路,最好有参考代码. 解决方案 http://download.csdn.net/detail/davidiao/8217283 解决方案二: 这个就是处理收到的请求消息时,根据收到的关键字,创建响应消息啊. 其实就是你的微信公众平台服务器处理被动响应消息的方法,对于收到的消息,先解析消息文本,然后匹配你的数据库中的关键字,按照指定关键字组织响应消息回复. 可以参考我的一篇

用微信的公众号查询个人信用评分是怎样一种场景?

阿里系的芝麻分来了,腾讯系的信用产品也不远了.用微信的公众号查询个人信用评分是怎样一种场景?也许再过两个月,秘密就能揭晓. 2月11日,经济观察报从腾讯公司人士处获悉,不久腾讯征信将借道微信公众号和手机QQ服务号,推出个人征信查询服务以及针对性的金融产品推荐. 不过,腾讯征信的产品到底啥模样?有别于芝麻信用,腾讯征信前期更看重金融场景. 此前,在财付通内部的一次分享会上,经济观察报记者获悉,腾讯征信将数据分为腾讯信息和非腾讯信息两部分.腾讯信息包括社交.支付.通讯和娱乐.这背后涉及到腾讯QQ.Q

微信开放公众号搜索 移动互联网是否会重回搜索时代?

微信的一个小动作或许会让搜索引擎在移动时代重回舞台中心. 6月9日,搜狗搜索放出大招,宣布正式接入微信公众号数据.这是微信开放平台以后首次可以实现全面权威展示.根据介绍,用户在搜索结果页可以浏览到与查询词相关的微信公众号及全部文章. 这次改变绝不仅仅针对公众号,未来微信的一切功能都可能会受到影响,移动互联网甚至会重回搜索时代,不过这次的主角将不再是百度. 颤抖的公众号 微信公众平台2012年推出后即成为封闭空间,订阅者和订阅号形成闭环,非订阅关系的用户很难知道订阅号里的内容,而当微信开始对微信好

微信公众平台-微信公众号,用户打开分享链接时,怎么获取谁分享的?

问题描述 微信公众号,用户打开分享链接时,怎么获取谁分享的? 微信 A用户把公众号页面转发给B用户,B用户在聊天界面长按"转发"给C用户,C用户打开页面时,公众号怎么知道是谁转发给C用户的? 解决方案 根据微信的唯一标识符openId来判断的 解决方案二: 你要是长按 转发的话 不管哪个用户打开这个页面 都应该是分享出来那个人的链接 , 这个地方只有在分享的时候做文章,分享出来的时候带上分享 人的标识, 你要是长按"转发"的话 也是别人分享出来的东西,页面打开的话也