• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >微信公众号 > Force.com微信开发系列用户消息处理

Force.com微信开发系列用户消息处理

作者:匿名 字体:[增加 减小] 来源:互联网

匿名通过本文主要向大家介绍了Force.com 微信开发等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
Force.com是国际知名的云平台公司,成功配置好Force.com作为微信公开号的服务端后,接下来需要的任务是处理用户发送的消息。当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL,通常有的消息类型有文本信息、图片信息、语音信息、视频信息、地理位置信息以及链接信息。关于每种消息的XML数据包的详细结构,请参见http://mp.weixin.qq.com/wiki/index.php?title=%E6%8E%A5%E6%94%B6%E6%99%AE%E9%80%9A%E6%B6%88%E6%81%AF。文章介绍文本消息的处理,文本消息XML数据包格式以及说明如下:

文本消息XML数据包示例

1348831860
 
 
 1234567890123456

数据包结构说明

QQ图片20170214170100.png

通过Debug Logs监控用法发送数据

在Force.com里可以很容易的观察到微信用户发送来的XML数据信息,为此进入Force.com后台Setup页面后在左侧导航条的Logs下方找到Debug Logs,点击进入后,点击右侧Monitored Users旁的New按钮,如下图所示:

QQ图片20170214170100.png

在接下来的画面中将可以选择你想监控哪个用户和Force.com服务器之间的交互,在搜寻画面中可以点击放大镜查找所有用户,其中Site.com使用类似于“Site Guest User…”类似的匿名账户,选择好后的示意界面如下:

QQ图片20170214170100.png

此时若通过关注了此微信公开账号的微信用户发送任意文本到此账号后,刷新Debug Logs监控页面及可以在下方看到新增了相应的日志:

QQ图片20170214170100.png

点击进去既可以看到日志里有我们发送的文本的XML数据包:

QQ图片20170214170100.png

这种日志也可以帮助到后续的调试。

创建用户消息处理方法

接下来我们打开之前创建的WeChatRestController类,在里面添加如下方法来响应用户数据包

@HttpPost
    global static void doPost(){
        //存储XML各节点数据变量
        String toUserName = '';
        String fromUserName = '';
        String msgType = '';
        String content = '';
        //获取XML数据包
        RestRequest req = RestContext.request;
        RestResponse res = RestContext.response;
        string strMsg = req.requestBody.toString();  
        XmlStreamReader reader = new XmlStreamReader(strMsg);

        //解析XML数据包,Force.com这块的处理能力并不强,简单的结构也需要较多代码来解析
         while(reader.hasNext()){
            if(reader.getLocalName() == 'ToUserName'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    toUserName = reader.getText();
                }
            }
            else if(reader.getLocalName() == 'FromUserName'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    fromUserName = reader.getText();
                }
            }
            else if(reader.getLocalName() == 'MsgType'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    msgType = reader.getText();
                }
            }
            else if(reader.getLocalName() == 'Content'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    content = reader.getText();
                }
            }
            reader.next();
        }
    }

上述代码 完成了对用户发送过来数据XML包的解析,接下来我们按照http://mp.weixin.qq.com/wiki/index.php?title=%E5%8F%91%E9%80%81%E8%A2%AB%E5%8A%A8%E5%93%8D%E5%BA%94%E6%B6%88%E6%81%AF说明,组织好回复给用户的文本消息数据,这里的回复数据也是XML结构,和发送过来的文本消息XML数据结构基本一致,详情请参看链接里腾讯公司的详细介绍。下面的代码将自动发送当前的日期时间给用户,在前面代码的While循环后添加如下代码:

Datetime dt = System.now();
String returnDT = dt.format('EEEE, MMMM d, yyyy');
String replyMSG = '<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[{2}]]></Content></xml>';
String[] arguments = new String[]{fromUserName, toUserName, rtnMsg};
String formattedReplyMSG = String.format(replyMSG, arguments);
RestContext.response.addHeader('Content-Type', 'text/plain');
RestContext.response.responseBody = Blob.valueOf(rtnMsg);

前面代码需要略微提醒下的是第3行的ToUserName参数和FromUserName参数和普通微信用户发送来的消息XML数据包是反过来的。

保存代码,此时普通用户发送任何消息到此公众账号都能很快收到当前的时间信息。

更多Force.com微信开发系列用户消息处理相关文章请关注!

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 微信网页开发之概要说明
  • 谈谈微信公众平台注册的实例
  • 微信开发中详解textarea的使用方法
  • 微信小程序开发入门实例
  • 通过accesstoken获取用户黑名单列表(微信开发教程)
  • 使用hprose开发微信小程序的实例解析
  • 图文详解微信公众平台支付开发
  • 微信公众平台开发微信支付
  • 利用C#开发微信公众号之接收事件推送与消息排重的方法介绍
  • 微信小程序怎么注册

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#开发微信门户及应用-在微信菜单中采用重定向获取用户数据
    • 微信公众账号开发自定义菜单的经验总结
    • 微信分类接收消息以及创建实体的java代码实例
    • 使用delphi+intraweb进行微信消息处理
    • 如何通过微信获取当前地理位置并将其存到session中
    • asp.net微信开发已关注用户管理步骤详解
    • 详解php微信开发带参数二维码的使用说明
    • 微信开发之onShareAppMessage分享参数的用法
    • 微信支付验证或签名失败是什么原因?附三种解决方案
    • 微信开发入门(四)触控事件

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有