程序人生

          不甘寂寞^_^
          posts - 2, comments - 2, trackbacks - 0, articles - 4
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Java代碼調用RTX發送提醒消息

          Posted on 2012-02-10 22:20 阿星 閱讀(2448) 評論(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 玩玩
          剛剛

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 日喀则市| 黑河市| 宁陕县| 邢台县| 饶平县| 苍梧县| 吉首市| 基隆市| 娄底市| 叙永县| 拜城县| 娄烦县| 额尔古纳市| 龙胜| 延吉市| 定日县| 林甸县| 房山区| 马关县| 浦北县| 蒙阴县| 大连市| 疏附县| 绵阳市| 内黄县| 古交市| 保山市| 徐州市| 望谟县| 乐平市| 察雅县| 鹰潭市| 惠来县| 西宁市| 太谷县| 信丰县| 沂南县| 漳浦县| 云阳县| 揭西县| 平邑县|