Asp.Net 集成RTX(騰訊通)開發實踐

這篇文章很是好,最重要的是後面有實現的代碼,很實用,直接用到本身系統中了html

引用網址:http://www.dezai.cn/Blog/article.asp?id=478web

 

 

作完這個集成這後,仍是感受挺有意思的,畢竟公司90%的人都在使用RTX,再也用使用OA通知,能夠像360強制彈窗同樣,提醒在線的同事啦。
如下開發基於RTX2010進行開發

準備工做


RTX騰訊通的介紹能夠在下面的這個網站上獲取

騰訊通官網

如下文檔可能在您開發過程當中,能給您帶來幫助:

官網下載地址:

http://rtx.tencent.com/rtx/support/index.shtml



Server端開發文檔指南

 點擊下載此文件(569.28 KB)
[2014-02-18 07:28 PM; 已下載次數:196]


Client端開發文檔指南

 點擊下載此文件(1.02 MB)
[2014-02-18 07:27 PM; 已下載次數:422]



RTXServer SDK 幫助文檔及示例
 點擊下載此文件(4.51 MB)
[2014-02-18 07:26 PM; 已下載次數:58]



RTXClient SDK 幫助文檔及示例


建議在開發以前,大體瀏覽或閱讀以上的相關文檔,這樣作起來纔有底。



環境配置

1.裝有RTX2011 正式版的RTX Server 服務端的服務器




2.RTX SDK的安裝,能夠與RXT的Server 安裝在同一服務器上,也能夠安裝在不一樣的服務器中



安裝好後,最好使用SDK自帶的Demo測試一下是否OK,若是不OK,則要檢查安裝是否有問題

2.1驗證是否OK



若是能啓動成功,則證實配置是OK的




排除安裝問題外,則須要檢查下面這三個文件的配置是否OK

SDK默認是安裝的服務器能夠訪問的,若是您的SDK是安裝在其它服務器上,則要經過配置三個XML文件,將SDK的服務器的IP添加在可容許訪問的IP策略上.

文件名稱:

AppConfig.xml AppConnConfig.xml SDKProperty.xml

AppConfig.xml





AppConnConfig.xml




SDKProperty.xml




三個文件修改後,要重啓RTX的相關服務才能生效,建議能重啓整臺服務器最好.


3.客戶端的安裝




一切環境配置OK,就能夠開始進行開發工做了.

安裝好SDK後,就能夠引用SDK安裝中的相關dll

[b]集成開發[b]

1.首先要引用SDK中的組件,引用中的文件是在SDK的安裝路徑下,默認路勁:C:\Program Files\Tencent\RTXSSDK



引用後,就成了下面這樣子的了



提示:在SDK的安裝路徑下還有個demo,這個demo能夠很好的幫助咱們實現開發


2.在cs文件中引用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using RTXSAPILib;



初始化服務器配置

瀏覽器


int retval;
           //初始化服務器屬性
           RTXSAPILib.IRTXSAPIRootObj RootObj;
           RootObj = new RTXSAPIRootObj();
           //建立根對象
           RootObj.ServerIP = "172.28.8.36" //騰訊通服務器地址

           RootObj.ServerPort ="8006"; //設置服務器端口



進行相關的代碼操做

發送提醒消息服務器


///
       /// 發送消息提醒
       ///
       ///  接收者:是rtx賬號(即用戶名),不能用rtx號碼uid,多個用戶之間用「;」隔開;接受者爲空,則是發給全部人,與all效果同樣,慎用!
       ///  標題
       ///  停留時間 0爲等待用戶關閉,以毫秒計
       ///  發送內容,自動識別連接: 隱式連接格式: [【查看詳情】|www.baidu.com],不能加http:// ,不然不能彈出瀏覽器,並且「|」後面不能有空格
       ///  
       public  static int SendNotify(string receiverAccount, string title, string holdtime, string content)
       {
           int retval;
           //初始化服務器屬性
           RTXSAPILib.IRTXSAPIRootObj RootObj;
           RootObj = new RTXSAPIRootObj();
           //建立根對象
           RootObj.ServerIP = BBKEDU.HR.DAL.SysConfig.strRTXSERVER.ToString();

           RootObj.ServerPort = Convert.ToInt16(BBKEDU.HR.DAL.SysConfig.strRTXSERVERPORTAL); //設置服務器端口

           try
           {
               RootObj.SendNotify(receiverAccount, title, 0, content); // 發送消息給接受者,注意,receiverAccount="",則是發給全部人,與all效果同樣,慎用!這裏接受者是rtx賬號(即用戶名),不能用rtx號碼uid,多個用戶之間用「;」隔開

               retval = 1;

               return retval;
           }
           catch (Exception xe)
           {
               retval = 0;

               return retval;

           }

       }





發送IM聊天消息session


  ///
       /// 發送IM
       ///
       ///  發送人
       ///  發送人密碼
       ///  接收者,不能超過128人一次
       ///  發送內容
       ///  0爲發送出錯 1爲成功
       public int SendIM(string senderAccount, string password,  string receiver, string content)
       {
           int retval;

           //初始化服務器屬性
           RTXSAPILib.IRTXSAPIRootObj RootObj;
           RootObj = new RTXSAPIRootObj();
           //建立根對象
           RootObj.ServerIP = BBKEDU.HR.DAL.SysConfig.strRTXSERVER.ToString();
           RootObj.ServerPort = Convert.ToInt16(BBKEDU.HR.DAL.SysConfig.strRTXSERVERPORTAL); //設置服務器端口

           //獲致sessionkey

           string sessionKey = GetSessionKey(senderAccount);

           try
           {
               RootObj.SendIM(senderAccount, password, receiver, content, sessionKey);

               retval = 1;

               return retval;
           }
           catch (Exception xe)
           {
               retval = 0;

               return retval;
              
           }
       }




獲取sessionKeyasp.net



       ///
       /// 根據帳號獲取sessionKey
       ///
       ///  
       ///  
       public static string GetSessionKey(string Account)  //服務器端代碼
       {
           RTXSAPILib.IRTXSAPIRootObj RootObj;
           RootObj = new RTXSAPIRootObj();
           //建立根對象
           RootObj.ServerIP = BBKEDU.HR.DAL.SysConfig.strRTXSERVER.ToString();
           RootObj.ServerPort = Convert.ToInt16(BBKEDU.HR.DAL.SysConfig.strRTXSERVERPORTAL); //設置服務器端口

           string SessionKey = "";


           RTXSAPILib.RTXSAPIUserAuthObj UserAuthObj = RootObj.UserAuthObj; //建立一個用戶認證對象

           try
           {
               SessionKey ="{"+ UserAuthObj.GetSessionKey(Account)+"}";  //經過用戶認證對象獲取SessionKey
           }
           catch (Exception ex)
           {
              return ex.Message.ToString();
           }
           return SessionKey; //返回SessionKey
       }





檢查用戶在線狀態測試


   ///
       /// 檢查用戶狀態
       ///
       ///  用戶帳號
       ///  
       public static string QueryUserState(string userAccount)
       {
           RTXSAPILib.IRTXSAPIRootObj RootObj;
           RootObj = new RTXSAPIRootObj();
           //建立根對象
           RootObj.ServerIP = BBKEDU.HR.DAL.SysConfig.strRTXSERVER.ToString();
           RootObj.ServerPort = Convert.ToInt16(BBKEDU.HR.DAL.SysConfig.strRTXSERVERPORTAL); //設置服務器端口
           try
           {
            
               return RootObj.QueryUserState("德仔");

           }
           catch (Exception ex)
           {
               return "Error";
           }
          

       }





檢查是否存在用戶

網站


  ///
       /// 檢查是否存在用戶
       ///
       ///  用戶帳號
       ///  
       public static bool IfExist(string userAccount)
       {
           int retval;

           RTXSAPILib.IRTXSAPIRootObj RootObj;
           RootObj = new RTXSAPIRootObj();
           //建立根對象
           RootObj.ServerIP = BBKEDU.HR.DAL.SysConfig.strRTXSERVER.ToString();
           RootObj.ServerPort = Convert.ToInt16(BBKEDU.HR.DAL.SysConfig.strRTXSERVERPORTAL); //設置服務器端口


           try
           {

               return RootObj.UserManager.IsUserExist(userAccount);
              
           }
           catch (Exception ex)
           {
               return false;
           }
       }




刪除用戶ui


  ///
       /// 刪除用戶
       ///
       ///  用戶帳號
       ///  
       public static bool DeleteUserAccount(string userAccount)
       {
           RTXSAPILib.IRTXSAPIRootObj RootObj;
           RootObj = new RTXSAPIRootObj();

           //建立根對象
           RootObj.ServerIP = BBKEDU.HR.DAL.SysConfig.strRTXSERVER.ToString();
           RootObj.ServerPort = Convert.ToInt16(BBKEDU.HR.DAL.SysConfig.strRTXSERVERPORTAL); //設置服務器端口

           try
           {

               RootObj.UserManager.DeleteUser(userAccount);

               return true;
           }
           catch (Exception xe)
           {
              

               return false;

           }
       }





這裏要注意的是:session key的格式要與RTX幫助文檔中的key值的格式同樣,不然就會出現發送IM的時候能看到IM但點擊就會彈不出來的問題.格式是[color=red]"{"+md5值+"}+
形式的
[/color]

以上的代碼開發完成後,就能夠測試效果了




是否是很欣慰啊?呵呵!  



參考文檔

RTX ASP.NET(C#) 結合的我的實踐 能夠OA平臺的接口
http://blog.csdn.net/yunfan555/article/details/2978284

asp.net (C#) RTX(騰訊通) 接口應用 能實現與OA接口

http://www.cnblogs.com/sunjie9606/archive/2012/10/25/2738337.htmlspa

相關文章
相關標籤/搜索