起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11220|回复: 13

[结贴] bex5 V3.2.1 给微信发送消息

[复制链接]

62

主题

363

帖子

1184

积分

金牌会员

Rank: 6Rank: 6

积分
1184
QQ
发表于 2015-10-29 09:06:06 | 显示全部楼层 |阅读模式
版本: 其它(帖子中说明) 小版本号:
数据库: MySQL 服务器操作系统: Windows 应用服务器: Tomcat
客户端操作系统: android 4.x 浏览器: 手机/平板X5客户端
我想在BIZ层向微信号上定时发送消息,现在定时发送是运行了,但是我sendLinkMessage来发送就出错

        public static void timeSendMsg(){
                sendLinkMessage("销售报表","http://www.XXXX.cc:8085/x5/UI2/XSBB/MobilBB/process/xsbh_sl/slxsbhActivity.w","5353","/x5");
                        
        }

我是直接这样写的,调用后就提示
Caused by: java.lang.RuntimeException: 请求参数configKey不存在,请检查url配置
        at com.justep.weixin.cp.WxCpHelper.getConfigKey(Unknown Source)
        at com.justep.weixin.cp.JustepCpServiceInstance.getInstance(Unknown Source)
        at Weixin.sendLinkMessage(Weixin.java:19)
        at Weixin.timeSendMsg(Weixin.java:47)
        ... 26 more
java.lang.RuntimeException: 请求参数configKey不存在,请检查url配置
        at X5Actions.sendReport(X5Actions.java:57)
        at DemoTask.doSomething(DemoTask.java:14)
        at DemoTask.run(DemoTask.java:20)
        at java.util.TimerThread.mainLoop(Timer.java:555)
        at java.util.TimerThread.run(Timer.java:505)

请问我要如何处理

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35920
发表于 2015-10-29 16:11:42 | 显示全部楼层
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

62

主题

363

帖子

1184

积分

金牌会员

Rank: 6Rank: 6

积分
1184
QQ
 楼主| 发表于 2015-10-30 08:42:36 | 显示全部楼层
本帖最后由 tiger0425 于 2015-10-30 08:46 编辑

上面的解答并不能解决我的问题,我先把我的思路说一下,我是要做一个每天定时给微信企业号中的用户发送一条带连接的微信;定时调用是的论坛里的time那个服务 ,调用ACTION是正常的,我也分析了BEX5平台上的pushMessage.j 和WxHelper类的思路,我在time里仿着写了一个调用sendLinkMessage的action
public ActionResult sendReport() throws UnknownHostException, DocumentException{
                // 登录
                String bSessionID = login();
               
                try {
                        Action action = new Action();
                        // 指定动作的process、activity和action,这里要注意登录的用户应该有执行这个功能中的这个动作的权限

                        //加入

                        // 设置动作参数
                        //action.setParameter("bookName", bookName);
                        //action.setParameter("startDate",  new java.sql.Date(startDate.getTime()));
                        //action.setParameter("endDate", new java.sql.Date(endDate.getTime()));
                        //action.setParameter("borrower", borrower);
                        action.setProcess(X5Actions.WEIXINPROCESS);
                        action.setActivity(X5Actions.WEIXINACTIVITY);
                        action.setName("sendLinkMessage");
                        action.setParameter("msg", "销售报表");
                        action.setParameter("url", "http://www.111111.cc:8085/x5/UI2/XSBB/MobilBB/process/xsbh_sl/slxsbhActivity.w");
                        action.setParameter("userid", "5353");
                        action.setParameter("contextPath", "/x5");
                        action.addExecuteContextItem("configKey","wx12ad5c50697017d71");
                        
                        // 调用动作
                        ActionResult actionResult = ActionEngine.invokeAction(action, ActionUtils.JSON_CONTENT_TYPE, bSessionID, null, null);
                        
                        // 判断是否调用成功
                        if (actionResult.isSuccess()){
                                // 返回值
                                //throw new RuntimeException(actionResult.getMessage());
                                return actionResult;
                        }else{
                                throw new RuntimeException(actionResult.getMessage());
                        }
                } finally {
                        // 要保证注销,否则会占用在线人数
                        ActionEngine.logout(bSessionID);
                }
        }
红字部分和WxHelper中的红字部分一样
        public static ActionResult invokeAction(Action action,HttpServletRequest request) {
                action.setProcess(WxHelper.WEIXINPROCESS);
                action.setActivity(WxHelper.WEIXINACTIVITY);
                String configKey = request.getParameter("configKey");
                logger.info("configKey: " + configKey);
                action.addExecuteContextItem("configKey", configKey);
                logger.info(action);
                return ActionEngine.invokeAction(action,ActionUtils.JSON_CONTENT_TYPE,WxHelper.getWeixinBSessionID(request),NetUtils.getLanguage(request),null);
        }


但是我的在调用时"configKey“值并没有传过来是空的,
java.lang.RuntimeException: 请求参数configKey不存在,请检查url配置
        at X5Actions.sendReport(X5Actions.java:56)
        at DemoTask.doSomething(DemoTask.java:14)
        at DemoTask.run(DemoTask.java:20)
        at java.util.TimerThread.mainLoop(Timer.java:555)
        at java.util.TimerThread.run(Timer.java:505)
一直报这个错,百思不行其解,请问我的调用那里有问题?

我还做过一个测试,在
        public static WxCpXmlOutMessage handleMessage(WxCpXmlMessage inMessage){
                /*
                 * 示例代码 可以通过写这个action的listener来根据不同情况执行不同逻辑
                 * WxCpXmlOutTextMessage m = WxCpXmlOutMessage
                      .TEXT()
                      .content(inMessage.getContent())
                      .fromUser(inMessage.getToUserName())
                      .toUser(inMessage.getFromUserName())
                      .build();
               return m;      
                      */
                sendLinkMessage("销售报表","http://wwxxxxx.cc:8085/x5/UI2/XSBB/MobilBB/process/xsbh_sl/slxsbhActivity.w","5353|2268","/x5");
               
                return null;
        }

这里直接调用sendLinkMessage是可以向微信中发送消息的
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35920
发表于 2015-10-30 11:57:58 | 显示全部楼层
在定时调用的时候应该直接调用sendLinkMessage的action,在new Action的传参应该是正确的

在add设置之后,用获取action的context的方法获取一下getExecuteContext()看看是否有这个参数
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

62

主题

363

帖子

1184

积分

金牌会员

Rank: 6Rank: 6

积分
1184
QQ
 楼主| 发表于 2015-10-30 12:21:47 | 显示全部楼层
                        action.addExecuteContextItem("configKey","wx12ad5c50697017d71");
                        String item = (String) action.getExecuteContext().get("configKey");
                        System.out.println(item +  "1111  报表发送成功--------------------------------------------------------------------");
                       
后台看了是可以输出这个参数的

wx12ad5c50697017d711111  报表发送成功--------------------------------------------------------------------
回复 支持 反对

使用道具 举报

62

主题

363

帖子

1184

积分

金牌会员

Rank: 6Rank: 6

积分
1184
QQ
 楼主| 发表于 2015-10-30 12:29:08 | 显示全部楼层
我在action中加入这个句,输出就空的                logger.info( ContextHelper.getActionContext().getExecuteContext());
               

输出是这样的
   wx12ad5c50697017d711111  报表发送成功--------------------------------------------------------------------
  2015-10-30 12:26:00
  1111  报表发送成功--------------------------------------------------------------------

回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35920
发表于 2015-10-30 17:17:15 | 显示全部楼层
tiger0425 发表于 2015-10-30 12:29
我在action中加入这个句,输出就空的                logger.info( ContextHelper.getActionContext().getExecuteContext( ...

在你的process的动作设置中找到这个action然后在执行前事件中获取一下这个action的上下文参数中看看是否有这个参数值
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

62

主题

363

帖子

1184

积分

金牌会员

Rank: 6Rank: 6

积分
1184
QQ
 楼主| 发表于 2015-10-30 17:24:05 | 显示全部楼层
还是没有

        public static void weixinProcessBeforeTimeSendMsg() {
                System.out.println("----" +         ContextHelper.getActionContext().getExecuteContext()+ "----");
        
        }


wx12ad5c50697017d71-------------------------------------------------------------------1111  报表发送成功-
----null----
2015-10-30 17:25:35
1111  报表发送成功
回复 支持 反对

使用道具 举报

62

主题

363

帖子

1184

积分

金牌会员

Rank: 6Rank: 6

积分
1184
QQ
 楼主| 发表于 2015-10-30 18:05:20 | 显示全部楼层
本帖最后由 tiger0425 于 2015-10-30 18:06 编辑

我做了一个测试,如果这个action是在X5的页面里调用,ExecuteContext是有值的,但在外面time中调用就是空值
我想请问调用pushMessage.j这个要传什么样的格式和参数
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35920
发表于 2015-10-30 18:42:47 | 显示全部楼层
自己写一个action,在action中java中调用sendLinkMessage的java方法,在代码中直接设置这个参数,然后调用你的这个action看看是否可以
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-4 07:00 , Processed in 0.075922 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表