基于公众号二次开发的聊天实现
目录
- 最终实现功能及效果图
- 用户与公众号消息交互过程
- 公众号的接收普通消息能力
3.1 用户在公众号中发送的一条消息
3.2 开发者服务器最终收到的数据包
3.3 数据包参数说明
3.4 开发者填写的URL
3.5 开发者服务器的文本消息处理程序 - 发送消息到用户的公众号
4.1 接口请求说明
4.2 发送文本消息的参数说明
4.3 成功调用该接口就可向指定的微信用户发送消息(关注公众号的用户)
一、 最终实现功能及效果图
- 用户可直接在公众号内聊天!爽歪歪!
- 用户发送消息,店内人员立马收到消息推送提醒!
- 店内人员收到提醒,可在自己开发的聊天室内聊天!
可参考聊天室(长连接)开发 - 店内人员发送的消息立马发送到用户的公众号首页。
让用户直接在公众号首页聊天。消息的及时性简直perfect!
二、 用户与公众号消息交互过程
下面来看下用户与公众号之间的消息的交互:
用户发送的消息会先发送到腾讯服务器,若公众号是开发模式,腾讯服务器会将用户发送的消息转发到第三方服务器。第三方服务器拿到数据进行解析,后续会做出响应。第三方发送消息会先发消息到腾讯服务器,然后腾讯服务器将消息发送给公众号用户。
三、 公众号的接收普通消息能力
如果公众号处于开发的模式,当普通微信用户向公众号发送消息时,微信服务器会先收到消息,然后微信服务器会将POST消息的XML数据包发到开发者填写的URL上。
- 用户在公众号中发送的一条消息
- 开发者服务器最终收到的数据包
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>1348831860</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[您好呀]]></Content><MsgId>23141583812978587</MsgId>
</xml>
- 数据包参数说明
参数名 | 参数说明 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(微信用户的OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | 消息类型,文本为text |
Content | 文本消息内容 |
MsgId | 消息id,64位整型 |
开发者填写的URL
如图:是微信公众号官网上(mp.weixin.qq.com)启用了服务器配置。
维护的URL:微信服务器收到消息后会将POST消息发送到开发者填写的URL上。
上图中一般处理程序的名称为WeChat.ashx开发者服务器的文本消息处理程序
我们需要在WeChat.ashx中加入如下代码。意思就是第三方服务器收到消息后可以做一些操作,比如用户发送数据存入数据库,推送给店内相关人员提醒下有客户咨询。
#region 文本消息处理程序
/// <summary>
/// 文本消息处理程序
/// </summary>
private void TextHandler(BaseMsg baseMsg)
{TextMsg txtmsg = (TextMsg)baseMsg;string FromUserName = txtmsg.FromUserName;//用户的openidstring msg = txtmsg.Content;//用户输入的文本消息//1. 记录数据库 (已获取用户的openid和用户输入的文本消息) //2. 推送模板 (可以给相关人员推送消息提醒的模板) 让相关人员及时回复//3. 顾问的聊天 可参考之前的聊天室实现
}
#endregion
店内人员收到模板消息如下
四、 发送消息到用户的公众号
- 接口请求说明
http请求方式: POST https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN
发送文本消息的json数据包如下
{"touser":"OPENID","msgtype":"text","text":{"content":"Hello World"}
}
- 发送文本消息的参数说明
参数名 | 参数说明 |
---|---|
touser | 发动给指定微信用户的openid |
msgtype | 消息类型 |
content | 发送消息内容 |
- 成功调用该接口就可向指定的微信用户发送消息(关注公众号的用户)
基于公众号二次开发的聊天实现相关推荐
- 适合新手学习的laravel接入微信接口,实现微信公众号二次开发
2019独角兽企业重金招聘Python工程师标准>>> 最近使用laravel做微信公众号二次开发,发现网上能够参考的资料基本上很少,很多地方都讲的不够详细,致使许多新手采坑无数,所 ...
- 微信公众号二次开发实现自动回复文字,图片,图文功能
微信公众号二次开发实现自动回复文字,图片,图文功能 自动回复文字或图片: 表单里需要有关键字和内容.但就这两个字段也需要在两个数据表里分别显示,因为要提前准备字段内容里有可能是图片,图文等等类型.所以 ...
- 微信二次开发接入php代码,适合新手学习的laravel接入微信接口,实现微信公众号二次开发...
最近使用laravel做微信公众号二次开发,发现网上能够参考的资料基本上很少,很多地方都讲的不够详细,致使许多新手采坑无数,所以这篇文章讲一下如何使用laravel接入微信接口,实现微信公众号二次开发 ...
- 基于Java的微信公众号二次开发视频教程
课程目录 微信二次开发基础部分.avi 01-18 Java微信二次开发微信验证.wmv 01-19 Java微信二次开发智能机器人.wmv 03-04-java微信二次开发公开课-微信公众号平台.w ...
- 微信公众号二次开发可以做哪些功能?
微信公众平台现在很多商家企业都在使用,但如何通过微信公众平台展现自己企业的特色和优势,给客户提供更多便利功能,进而通过微信公众平台为企业带来更多的益处呢? 这是众多使用微信公众平台的商家企业需要深入思 ...
- 微信公众号二次开发可以做哪些功能
微信公众平台现在很多商家企业都在使用,但如何通过微信公众平台展现自己企业的特色和优势,给客户提供更多便利功能,进而通过微信公众平台为企业带来更多的益处呢? 这是众多使用微信公众平台的商家企业需要深入思 ...
- 关于微信公众号二次开发(获取二维码)
1.获取二维码的第一步就是先得获取到Ticket,然后再用ticket来换取二维码. 我们先把存放二维码信息的数据表(rh_qrcode)放进数据库中,然后在控制器中写添加二维码的方法(qcordea ...
- 微信公众号二次开发(2)
入口文件代码<?php /*** wechat php test*///define your token //定义秘钥文件 define("TOKEN", "we ...
- 微信公众号二次开发关键字回复图文
要实现这个功能首先要建2个表(mp__reply_rule,mp_reply_news)这两个表要互相连接,(如果主键是自动增长型 成功后返回值就是最新插入的值(返回的是主键值) .例如mp_repl ...
最新文章
- WEB攻击手段及防御第1篇-XSS
- Ubuntu系统如何安装nodejs及npm
- 多线程学习(三)----死锁问题
- 算法(11)-leetcode-explore-learn-数据结构-链表的经典问题
- windows拷贝内容到ubuntu中
- Apache服务安全加固及Apache优化
- repo init 是啥意思
- 计算机网络军训口号,霸气押韵的16字军训口号(精选50句)
- 数控直流电压源的设计与制作【keil5 AD20]
- python中获取中位数的两种方法
- 利用百度API进行淘宝评论关键词提取
- JS特效一:图片轮播图(JS必须掌握的特效)
- 至高心法 - SpringCloud Alibaba (二)Nacos 服务注册与配置中心
- 外贸里面 LC TT DP DA BG 是什么
- html实现下拉跳转
- linux下安装anaconda教程清华源
- WebAPI压力测试
- Nachos线程管理
- c语言10个选手10个评委,C语言歌星大奖赛为参赛的选手打分.doc
- Android-(6)自定义控件