您的位置:首页 > 编程语言 > ASP

Asp.Net OA 集成RTX(腾讯通)开发实践

2015-04-18 11:30 281 查看


做完这个集成这后,还是感觉挺有意思的,毕竟公司90%的人都在使用RTX,再也用使用OA通知,可以像360强制弹窗一样,提醒在线的同事啦。

以下开发基于RTX2010进行开发

准备工作

RTX腾讯通的介绍可以在下面的这个网站上获取

腾讯通官网

以下文档可能在您开发过程中,能给您带来帮助:

官网下载地址:

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

Server端开发文档指南


点击下载此文件(569.28
KB)

[2013-01-24 00:00 AM; 已下载次数:355]

Client端开发文档指南


点击下载此文件(1.02
MB)

[2013-01-24 00:00 AM; 已下载次数:618]

RTXServer SDK 帮助文档及示例


点击下载此文件(4.51
MB)

[2013-01-24 00:00 AM; 已下载次数:305]

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的安装路径下



引用后,就成了下面这样子的了



提示:在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"; //设置服务器端口

进行相关的代码操作

发送提醒消息

///

/// 发送消息提醒

///

/// 接收者

/// 标题

/// 停留时间 0为等待用户关闭,以毫秒计

/// 发送内容,自动识别链接

///

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); //获取版本信息

retval = 1;

return retval;

}

catch (Exception xe)

{

retval = 0;

return retval;

}

}

发送IM聊天消息

///

/// 发送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;

}

}

获取sessionKey

///

/// 根据账号获取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;

}

}

删除用户

///

/// 删除用户

///

/// 用户账号

///

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接口

/article/6982444.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: