公司制作了一个简易的oa系统,可以在公司内部发一些文件,上级发给下级。并可以
签约或反馈信息,让上级领导看见,提高了
工作效率。在实施过程中用户提出要腾讯通对接。发一个文件要提醒所有涉及到的用户。从网上查了很多资料,加上自己的摸索,终于实验成功了。记录一下,以便日后查找。也分享给需要的人。
1.程序开发完之后,在腾讯通的网站上http://rtx.tencent.com/rtx/download/index.shtml中间部分下载“SDK开发包”,因为要做测试,所以把“服务器安装包”和“客户端安装包”,也一起下载下来。安装好服务器与客户端,再解压SDK开发包,里面有两个文件,只安装rtxserversdk2013formal.exe就可以。
2.在腾讯通RTX管理器中(就是RTX服务器)创建一个帐号,在客户端登录,可以链接到服务器,能正常登录就说明已经连上。在“用户管理”-“组织
架构”中可以添加用户。在“配置向导”-“服务器运行状态”-“高级配置”里可以看见自己机器的IP地址,两个IP都可以(建议把IP地址设成固定的静态IP)。在腾讯通客户端上“文件”-“系统设置”-“服务器设置”把你的IP写进去,然后确定,用刚刚添加到服务器中的帐号登录。
3.服务器设置(测试时为本机),服务器端要安装1中的rtxserversdk2013formal.exe。在安装路径中找到RTX
SSDK,打开找到其中RtxSerberApi.ini,用记事本打开。设置服务器IP(如果程序服务器和RTX服务器不在同一机器上需要设置,如果程序和RTX在一起也可以加入IP)。然后将RtxSerberApi.ini和此文件夹中所有的dll文件全部复制到c:/windows/
system32下。如有重复替换即可。然后到JDK安装目录的bin下,再复制一次(非常重要)。
4.在RTX服务器端的安装目录下,打开SDKPorperty.xml打开在ip地址下面按原格式添加一行,加入开发机器的IP地址
<IPLimit Enable="1">
<ip>127.0.0.1</ip>
<ip>加入开发机器IP</ip>
</IPLimit>
5.拷贝RTXSSDK/Demo Source/Server Sample/Java下的RTXSverApi.java到java工作目录下,必须以rtx问包名且必须是顶层包,不可以被其他包包括。
6.服务器打开防火墙,添加6000端口。
RTXSSDK\demo source\server sample\java包中除了RTXSverApi.java之外都是示例文件,可以直接用他的程序SendNotify.java就是发提醒的程序,可以直接使用。如果发不成功需要在 RTXSvrApi RtxsvrapiObj = new RTXSvrApi();的下面添加RtxsvrapiObj.setServerPort(6000);就可以了。
以下是我的程序,因为遍历用户的时候很多,采用
线程的方式。主方法用于测试,另写一个方法便于调用。
import rtx.RTXSvrApi;
public
class SendNotifyThread extends Thread {
public String title;
public String msg;
public String receivers;
public SendNotifyThread(String title, String msg, String receivers) {
this.title = title;
this.msg = msg;
this.receivers = receivers;
}
public void run(){
try{
sendRtxMail(title , msg , receivers);
}catch(Exception e){
e.printStackTrace();
}
}
//2007测试成功
public static boolean sendRtxMail(String title ,String content ,String receivers )throws Exception {
try{
RTXSvrApi RtxsvrapiObj = new RTXSvrApi();
RtxsvrapiObj.setServerPort(6000);
String delayTime = "0";
String type = "0";
String urlid = "";
String msgid = "";
int iRet = -1;
if(RtxsvrapiObj.Init()){
iRet = RtxsvrapiObj.sendNotify(receivers, title, content, type, delayTime);
}
RtxsvrapiObj.UnInit();
if (iRet == 0){
System.out.println("发送成功");
return true;
}
}catch(Exception e){
e.printStackTrace();
return false;
}
return false;
}
public static void main(String[] args) {
String receivers = "腾讯通帐号";
String title = "消息提醒的题目";
String msg = "消息提醒的内容";
SendNotifyThread p = new SendNotifyThread(title,msg,receivers);
p.start();
}
}