程序人生

不甘寂寞^_^
posts - 2, comments - 2, trackbacks - 0, articles - 4
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Java代码调用RTX发送提醒消息

Posted on 2012-02-10 22:20 阿星 阅读(2426) 评论(2)  编辑  收藏 所属分类: JAVARTX

公司最近的一个项目有这样一个需求:就是通过java代码调用RTX提供的API向RTX发送消息,达到一种及时提醒的效果。

  让我对RTX有了一定的了解和认识:

  虽然RTX提供的API还比较丰富,但操作的过程中还是会碰到一些大大小小的问题。

      我所碰到的第一个问题就是数字账号无法发送消息的问题:

 

    public int sendNotice(RtxSendNoticeBean rtxb) {
    int iRet= -1;
    RTXSvrApi RtxsvrapiObj = new RTXSvrApi();   //RTX提供的API

    if( RtxsvrapiObj.Init()){ 
      RtxsvrapiObj.setServerIP(rtxb.getServerip()); //设置RTX服务器IP地址
      RtxsvrapiObj.setServerPort(rtxb.getServerprot()); //设置RTX服务器端口

      String szKey = RtxsvrapiObj.getSessionKey(rtxb.getRecivers());
      System.out.println("SessionKey:" + szKey);
      //API中的消息发送 功能    0:操作成功 非0:操作不成功  
      iRet = RtxsvrapiObj.sendNotify(rtxb.getRecivers(),rtxb.getTitle(),rtxb.getContent(), rtxb.getType(),rtxb.getDelarytime());
    }
    if (iRet == 0){
      System.out.println("发送成功");
    }else{
      System.out.println("发送失败");
    }
    RtxsvrapiObj.UnInit();
    return iRet;
   }

  使用以上代码,若RTX是非纯数字账号就没问题,可以发送。但如果是纯数字账号就没反应,经多处查找资料得处结果,这是RTX2011之前版本的bug。要想同时操作数字账号可以用以下两种方式解决:

  1、直接安装RTX2011SDK(若此方案可行就不用再做不第二步操作)

    下载文件:RTXS2011SDK(8.0.786.202).exe

   2、如果已安装2010SDK,又不想使用RTX2011版SDK,就需要做已下修改:

    a. 把RTXSSDK2010安装目录下的SDKAPIC.dllSDKAPI.dllSDKAPIJava.dll用RTX2011SDK中的进行覆盖。

    b. 再把SDKAPIC.dllSDKAPI.dllSDKAPIJava.dll拷贝去覆盖./windows/system32

    c. 用regsvr32 命令注册一下SDKAPI.dll文件。

   最后需要在RTX提供的API中添加一行代码:

 

  /**
  * 发送消息提醒
  * @param receivers String 接收人(多个接收人以逗号分隔)
  * @param title String 消息标题
  * @param msg String 消息内容
  * @param type String 0:普通消息 1:紧急消息
  * @param delayTime String 显示停留时间(毫秒) 0:为永久停留(用户关闭时才关闭)
  * @return int 0:操作成功 非0:操作不成功
  */
  public int sendNotify(String receivers,String title,String msg, String type,String delayTime) {

    svrInit(OBJNAME_RTXEXT);

    AddProperty(iProp, KEY_USERNAME, receivers);
    AddProperty(iProp, KEY_TITLE, title);
    AddProperty(iProp, KEY_MSGINFO, msg);
    AddProperty(iProp, KEY_TYPE, type);
    AddProperty(iProp, KEY_MSGID, "0");
    AddProperty(iProp, KEY_ASSISTANTTYPE, "0");
    AddProperty(iProp,KEY_UINTYPE,"Account");     // 如果设置KEY_UINTYPE 为Account,无论传进去是纯数字还是字符串,都认为是帐号。

 

    if(!"0".equals(delayTime))
      AddProperty(iProp, KEY_DELAYTIME, delayTime);

 

    iResult = Call(iObj, iProp, PRO_EXT_NOTIFY);
    innerCode = GetResultInnerCode(iResult);

    release();
    return innerCode;
  }

     这样改好这后,大功告成!


评论

# re: Java代码调用RTX发送提醒消息  回复  更多评论   

2015-12-12 09:08 by 玩玩
是滴是滴

# 通天塔  回复  更多评论   

2015-12-12 09:15 by 玩玩
刚刚

只有注册用户登录后才能发表评论。


网站导航: