关闭

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

标签: 微信服务器微信开发自动回复
5738人阅读 评论(1) 收藏 举报
分类:

需求

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

实现

简单后台设置

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

这里写图片描述

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

配置服务器

配置域名

配置测试服务器

略。

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

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

实现效果

这里写图片描述

总结

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

参考资料

1
1
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

微信平台自动回复asp 解决提示:‘该公众账号暂时无法提供服务,请稍后再试’

微信平台自动回复asp 解决提示:‘该公众账号暂时无法提供服务,请稍后再试’
  • u014769320
  • u014769320
  • 2015-04-15 22:57
  • 1349

asp版微信开发项目示例:网站与微信公众账号的自动交流回复

  • 2015-05-07 10:24
  • 13.25MB
  • 下载

微信公众号开发--关注后自动回复(Java记录篇)

转载自 http://blog.csdn.net/lyq8479/article/details/8944988 文中所用到的jar dom4j XStream的jar包 扫描下方二维码可关注 你...
  • coco2d_x2014
  • coco2d_x2014
  • 2017-09-20 21:07
  • 1134

C#开发微信公众号实现消息自动回复

  • 2015-09-24 23:08
  • 34KB
  • 下载

微信公众号自动回复示例代码

responseMsg(); class wechatCallbackapiTest { public function responseMsg() { //get post da...
  • qq754406613
  • qq754406613
  • 2015-03-28 11:09
  • 3157

asp版微信开发项目示例:网站与微信公众账号的自动交流回复

  • 2013-08-19 11:26
  • 13.25MB
  • 下载

微信公众号开发(一、接收用户消息自动回复)

微信公众号开发现在在企业应用中,比较火爆的一款应用,微信开放了第三方公众平台,作为开发者只需要按照公众平台的开发文档就能快速开发应用,废话不多说,下面我来介绍下个人公众号申请,第一个api调用,自动消...
  • xueling022
  • xueling022
  • 2016-05-27 10:11
  • 10062

微信公众号接受文本消息与自动回复消息

上次有了服务器与微信的连
  • hnxw1117
  • hnxw1117
  • 2014-08-01 13:55
  • 1767

微信公众平台开发入门--PHP,实现自动回复文本,图文,点击事件

关键字:微信公众平台 开发模式 图文消息 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/weixin-97-news.html   在这篇微...
  • abcde158308
  • abcde158308
  • 2017-03-09 16:56
  • 4546

微信公众平台上传图片,自动回复图片

上传文件(获得:media_id): // 微信参数 $appId = 'appid'; $appSecret = 'appsecret'; $url = "https://api...
  • u010533511
  • u010533511
  • 2015-11-24 11:43
  • 2950
    个人资料
    • 访问:596506次
    • 积分:8624
    • 等级:
    • 排名:第2647名
    • 原创:293篇
    • 转载:13篇
    • 译文:4篇
    • 评论:73条
    博客专栏
    微信订阅号
    欢迎加入QQ群
    玩家老黄历(微信小程序)
    谢谢支持~
    最新评论