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

简介: 需求在公众号内的输入任意文字,文字相关的第三方网站链接实现简单后台设置我们在微信公众平台上,是可以进行简单的自定义消息回复的。这里的显然不能满足我们的需求。

需求

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

实现

简单后台设置

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

这里写图片描述

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

配置服务器

配置域名

配置测试服务器

略。

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

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

实现效果

这里写图片描述

总结

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

参考资料

目录
相关文章
|
7月前
|
安全 前端开发 Java
基于springboot的微信公众号管理系统(支持多公众号接入)
基于springboot的微信公众号管理系统(支持多公众号接入)
129 2
|
7月前
|
移动开发 小程序 API
微信外部浏览器或短信链接唤起微信小程序的解决方案
微信外部浏览器或短信链接唤起微信小程序的解决方案
1526 1
|
2月前
|
应用服务中间件 网络安全 Apache
Discuz! X3.5 开启ssl证书加密后微信、公众号无消息、支付宝通讯中断等
Discuz! X3.5 开启ssl证书加密后微信、公众号无消息、支付宝通讯中断等、支付宝支付实际支付成功,显示未支付等,都属于通讯中断,需要联系DZ官方付费修改程序,屏蔽防CC!
54 4
|
2月前
|
小程序 搜索推荐 API
微信小程序:自定义关注公众号组件样式
尽管关注公众号组件的样式固定且不可修改,但产品经理的需求却需要个性化的定制。在这种情况下,我们需要寻找解决方案,以满足这些特殊需求,尽管这可能有点棘手。
65 0
微信小程序:自定义关注公众号组件样式
|
2月前
|
JavaScript 小程序 开发者
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
378 0
|
5月前
|
小程序 API
【微信小程序-原生开发】实用教程07 - Grid 宫格导航,详情页,侧边导航(含自定义页面顶部导航文字)
【微信小程序-原生开发】实用教程07 - Grid 宫格导航,详情页,侧边导航(含自定义页面顶部导航文字)
102 0
|
5月前
|
JavaScript 小程序 前端开发
【微信小程序-原生开发】实用教程04-启动/欢迎/首屏广告页(含倒计时、添加文字、rpx、定义变量和函数、读取变量、修改变量、wx.reLaunch 页面跳转、生命周期 onReady等)
【微信小程序-原生开发】实用教程04-启动/欢迎/首屏广告页(含倒计时、添加文字、rpx、定义变量和函数、读取变量、修改变量、wx.reLaunch 页面跳转、生命周期 onReady等)
149 0
|
6月前
|
安全 UED 黑灰产治理
微信留言自动回复(Python实现)
本项目旨在使用Python与Windows GUI自动化工具来自动化微信的操作,作用为读取未读消息、根据关键词回复消息
227 0
|
7月前
|
Python
微信推送 听说有人想要换最后的文字 教程来啦 进来学
微信推送 听说有人想要换最后的文字 教程来啦 进来学
50 0
|
7月前
|
移动开发 缓存 JavaScript