微信是一个聊天工具,实现消息交互是一个很基础且重要的功能,在公众号中,用户关注后,可以给公众号发消息,公众号可以通过将消息转发给客服接待或者是直接根据用户发送的消息回复用户。微信提供的文档其实挺清楚的,但是初次看还是觉得乱乱的,到开发的差不多了反倒是觉得文档清晰了。

一旦配置了开发者URL,很多消息都会发送到那个url上去处理,所以对于有些消息最好都处理一下,不处理要返回空串

(微信服务器在5秒内收不到响应就会断掉连接,并且重新发起请求,总共重试三次。当无法保证5秒内处理并且回复,可以回复空串,微信服务器不会对此做任何处理,且不会重试)

当普通用户向公众号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL。

消息包括:文本(text)、图片(image)、语音(voice)、视频(video)、小视频(shortvideo)、地址位置(location)、链接(url) 7个类型

<xml><ToUserName><![CDATA[toUser]]></ToUserName>           开发者微信号<FromUserName><![CDATA[fromUser]]></FromUserName>     发送方账号(一个OpenID)<CreateTime>1348831860</CreateTime>                   消息创建时间(整型)<MsgType><![CDATA[text]]></MsgType>                   消息类型text<Content><![CDATA[this is a test]]></Content>         文本消息内容<MsgId>1234567890123456</MsgId>                       消息id,64位整型</xml>

post过去的数据类型都是类似于上面的xml数据包,PHP语言注意不能用$_POST接收的,其他语言要用相应的方法去接受读取消息。

通过解析上面的数据包就可以知道消息的类型和内容了,然后可以在响应包(Get)中返回特定的XML结构,来对该消息进行响应(现支持回复文本、图片、图文、语音、视频、音乐)。

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>        接收方账号
<FromUserName><![CDATA[fromUser]]></FromUserName> 开发者微信号
<CreateTime>12345678</CreateTime>                  消息创建时间
<MsgType><![CDATA[text]]></MsgType>                 text
<Content><![CDATA[你好]]></Content>                 回复的消息内容,能够换行
</xml>

以上是直接类似于自动回复的实现,还可以将消息转发给客服。

做法需要开发者在响应包中返回MsgType为transfer_customer_service的消息,微信服务器收到响应后会把当次发送的消息转发至多客服系统,消息被转发到多客服以后,会被自动分配给一个在线的客服帐号,您也可以在返回transfer_customer_service消息时,在XML中附上TransInfo信息指定分配给某个客服帐号。

转发给多客服需要返回如下:

<xml><ToUserName><![CDATA[touser]]></ToUserName><FromUserName><![CDATA[fromuser]]></FromUserName><CreateTime>1399197672</CreateTime><MsgType><![CDATA[transfer_customer_service]]></MsgType></xml>

转发给指定客户需要返回如下:

 <xml><ToUserName><![CDATA[touser]]></ToUserName><FromUserName><![CDATA[fromuser]]></FromUserName><CreateTime>1399197672</CreateTime><MsgType><![CDATA[transfer_customer_service]]></MsgType><TransInfo><KfAccount><![CDATA[test1@test]]></KfAccount></TransInfo></xml>

用户被客服接入以后,客服关闭会话以前,处于会话过程中时,用户发送的消息均会被直接转发至客服系统。当会话超过2小时客服没有关闭时,微信服务器会自动停止转发至多客服,而将消息恢复发送至开发者填写的url上。用户在等待队列中时,用户发送的消息仍然会被推送至开发者填写的url上。

转载于:https://www.cnblogs.com/wyzs/p/5163189.html

微信公众平台--3.普通消息交互(发送与接收)相关推荐

  1. java群发图文消息_使用Java语言开发微信公众平台(四)——图文消息的发送与响应...

    在上一篇文章中,我们实现了被关注回复与关键词回复功能.在用户关注的时候自动推送功能菜单,并根据用户输入的关键词,回复特定信息.但是,我们只能回复文本消息给用户,如何才回复一条图文消息呢?本周,我们一起 ...

  2. 通知公众平台php,微信公众平台开发模板消息

    在这篇微信公众平台开发教程中,我们将介绍如何开发模板消息,即如何用程序发送模板消息功能. 本文分为以下三个部分:申请模板消息权限 开发模板消息SDK 构造模板消息体并发送 一.申请模板消息权限 模板消 ...

  3. 微信预约 php,php版微信公众平台实现预约提交后发送email的方法

    本文实例讲述了php版微信公众平台实现预约提交后发送email的方法.分享给大家供大家参考,具体如下: 其实这种发送邮件是非常的简单了我们只要接受由用户提交过来的邮箱地址,然后再由php的邮件控制进行 ...

  4. php7.2微信明文加密,微信公众平台开发:消息加密

    前不久,微信的企业号使用了强制的消息加密方式,随后公众号也加入了可选的消息加密选项.目前企业号和公众号的加密方式是一致的(格式会有少许差别). 加密设置 进入公众号后台的"开发者中心&quo ...

  5. 微信公众平台测试号——模板消息发送Demo

    开发微信公众号的时候,我们经常会使用微信公众平台的测试号来进行调试,因为测试号的可用接口比较全,不然只有经过认证的服务号才可以调用比较高级的接口. 从开始搞一个微信公众平台测试号开始. 打开微信公众平 ...

  6. 记一次接收微信公众平台推送消息的实例

    本章的内容来源是有朋友咨询怎么做微信公众号信息的收发消息功能,因此本着为社区做贡献的态度申请了个人公众号,然后尝试对接了一下接收公众号内容信息的流程:要说对接其实呢也算不上,因为个人账号只有简单的一些 ...

  7. Java微信公众平台开发_03_消息管理之被动回复消息

    GitHub源码:https://github.com/shirayner/weixin_gz 一.本节要点 1.回调url 上一节,我们启用服务器配置的时候,填写了一个服务器地址(url),如下图, ...

  8. 微信公众平台开发 模版消息

     关键字:微信公众平台 模版消息 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/wechat-template-message.html 在这篇微信公众 ...

  9. 微信公众平台开发(9)--消息加解密方式

    点此查看 微信公众号/微信网页/微信支付/企业微信/小程序开发合集及源代码下载 本文目录 1. 前言 2. 判断加解密方式 3. 测试 4. 小结 1. 前言 登录微信公众平台,点击[设置与开发]-[ ...

最新文章

  1. emacs参考资料整理
  2. MemCache在Windows环境下的搭建及启动
  3. 清理你入侵后的三个重要痕迹
  4. 【Python】 tempfile模块 临时文件和目录的处理
  5. BZOJ-3531-旅行
  6. SQL数据库对象的删除
  7. 如何编写有效的接口测试?
  8. (组合数学笔记)Pólya计数理论_Part.8_Pólya定理的几种扩展
  9. 3.7.5 - Modifying Strings
  10. web和python哪个好_用python开发app和web哪个比较容易?
  11. scvmm管理hyper-v克隆主机(二)
  12. Ubuntu 安装永中Office2009个人版
  13. hibernate官网
  14. 怎么卸载apowerrec_如何卸载win10自带的游戏中心
  15. C/C++ 二维数组传参方法总结
  16. Java游戏开发——flappy bird
  17. ANSYS软件许可证优化,高效提升工作效率
  18. 数据分析之数理统计基础
  19. 【论文阅读】TomoAlign: A novel approach to correcting sample motion and 3D CTF in CryoET
  20. python怎么打印字典_Python中的字典

热门文章

  1. 从零开发一个 Java Web 项目要点
  2. 从滴滴出行业务中台实践聊聊如何构建大中台架构
  3. 假笨说-协助美团kafka团队定位到的一个JVM Crash问题
  4. Android --- Session ‘app’: Error Launching activity解决办法
  5. java判断一个数是不是质数(素数)
  6. php 类调用本身方法,php几个关于类的预定义自动调用方法
  7. html编辑器 br 被div,百度Ueditor编辑器DIV,html标签替换及代码被过滤问题解决方法...
  8. 用html标记语言,HTML标记语言——引用
  9. 触摸屏mtp文件转c语言,F28335与上位机(触摸屏)之间的通讯遵循modbus协议使用C语言编程...
  10. AI:《DEEP LEARNING’S DIMINISHING RETURNS—深度学习的收益递减》翻译与解读