• 腾讯通二次开发接口


    RTXServerSDK跨服务器通信。

    当RTXserverSDK跟RTX服务器不是同一台电脑,则使用下面的方式通信:

    1.将RTXServerSDK的安装在作为访问服务端的电脑上,同时架设web服务器,该服务器需要支持.net或者php都可以,因为我自己编的webservice是使用这两种语言。

    2.将RTXServer安装目录中的RtxServerApi.ini文件中的Host =192.168.3.10改为RTX服务器端地址。

    3.将php文件部署到网站上,PHP要支持com组件,还需要在PHP.ini中加上配置:extension=php_com_dotnet.dll。

    <?PHP

    $receiver = $_GET["receiver"];
    $msg = $_GET["msg"];
    $title = $_GET["title"];
    $delaytime = $_GET["delaytime"];
    $okurl = $_GET["okurl"];
    $errurl = $_GET["errurl"];

    if ((strlen($receiver) == 0)
    && (strlen($msg) == 0)
    && (strlen($title) == 0)
    && (strlen($delaytime) == 0)
    && (strlen($okurl) == 0)
    && (strlen($errurl) == 0))
    {
    $receiver = $_POST["receiver"];
    $msg = $_POST["msg"];
    $title = $_POST["title"];
    $delaytime = $_POST["delaytime"];
    $okurl = $_POST["okurl"];
    $errurl = $_POST["errurl"];
    }

    if (strlen($receiver) == 0)
    {
    $receiver = "";
    }
    if(strlen($msg) == 0)
    {
    $msg = "";
    }
    if(strlen($title) == 0)
    {
    $title = "";
    }
    if(strlen($delaytime) == 0)
    {
    $delaytime = 0;
    }
    if(strlen($okurl) == 0)
    {
    $okurl = "";
    }
    if(strlen($errurl) == 0)
    {
    $errurl = "";
    }

    $receiver = iconv("utf-8", "GBK", $receiver);
    $msg = iconv("utf-8", "GBK", $msg);
    $title = iconv("utf-8", "GBK", $title);
    $php_errormsg = NULL;


    $ObjApi= new COM("Rtxserver.rtxobj");
    $objProp= new COM("Rtxserver.collection");
    $Name = "ExtTools";
    $ObjApi->Name = $Name;

    $objProp->Add("msgInfo", $msg);
    $objProp->Add("MsgID", "123456");
    $objProp->Add("Type", "0");
    $objProp->Add("AssType", "0");
    if (strlen($title) == 0)
    {
    $objProp->Add("Title", "֪ͨ");
    }
    else
    {
    $objProp->Add("Title", $title);
    }
    $objProp->Add("DelayTime", $delaytime);
    if (strtolower($receiver) == "all")
    {
    $objProp->Add("Username", $receiver);
    $objProp->Add("SendMode", "1");
    }
    else
    {
    $objProp->Add("Username", $receiver);
    }


    $Result = @$ObjApi->Call2(0x2100, $objProp);

    $errstr = $php_errormsg;
    if(strcmp($nullstr, $errstr) == 0)
    {
    if (strlen($okurl) > 0)
    {
    header("Location: ".$okurl);
    }
    else
    {


    }
    }
    else
    {
    //send err
    if (strlen($errurl) > 0)
    {
    header("Location: ".$errurl);
    }
    else
    {
    echo $errstr."<br>";

    }
    }

    ?>

    腾讯通服务器端装上RTXServerSDK,可以通过几种方式访问:

    一、消息发送方法:
    功能一:发送即时消息
    1.调用方式:GET/POST URL:/sendnotify.cgi 用法举例(IE地址栏中输入): http://127.0.0.1:8012/sendnotify.cgi?msg=hello&receiver=wwjs
    参数表:
    receiver:接收者,用户昵称,多个接收者以“,”隔开。
    msg:消息内容 ,如需要发隐式链接,格式如: [我的博客|http://www.baidu.com]
    title:消息提醒的标题。
    delaytime:消息提醒框的停留时间(毫秒),0表示不自动消失。
    okurl:成功后IE自动定位到指定的url 格式类似为:okurl=www.baidu.com或者okurl=http://www.baidu.com 注意:这里的url必须为绝对地址
    errurl:失败后IE自动定位到指定的url。

    功能二:获取用户状态
    1.调用方式:http://127.0.0.1:8012/getstatus.php?username=yangbin
    2.参数说明:username 需要获取哪个用户的状态 

    功能三:给某个组群发RTX广播消息
    1.调用方式:http://127.0.0.1:8012/sendnotifybydepart.php?receiverdepart=运维开发组&msg=吃饭了&title=通知&online=1&delaytime=10000
    2.参数说明:receiverdepart 需要给那个部门发送消息,该部门即在RTX中看到的组织架构中的部门名
    msg:消息内容 ,如需要发隐式链接,格式如: [明朝|http://www.baidu.com]
    title:消息提醒的标题。 【可省略】
    online:是否只发在线用户,默认只发给在线用户。 【可省略】
    delaytime:消息提醒框的停留时间(毫秒),0表示不自动消失,默认为0。 【可省略】
    okurl:成功后IE自动定位到指定的url 格式类似为:okurl=rtx.tencent.com 或者okurl=http://tx.tencent.com 注意:这里的url必须为绝对地址。 【可省略】
    errurl:失败后IE自动定位到指定的url。【可省略】

    功能四:给某个群群发RTX广播消息
    1.调用方式:http://127.0.0.1:8012/sendnotifybygroup.php?receivergroup=M4开发群&msg=吃饭了&title=通知&online=1&delaytime=10000
    2.参数说明: receivergroup 需要给那个群发送广播消息,即RTX群
    msg:消息内容 ,如需要发隐式链接,格式如: [明朝|http://www.baidu.com]
    title:消息提醒的标题。 【可省略】
    online:是否只发在线用户,默认只发给在线用户。 【可省略】
    delaytime:消息提醒框的停留时间(毫秒),0表示不自动消失,默认为0。 【可省略】
    okurl:成功后IE自动定位到指定的url 格式类似为:okurl=rtx.tencent.com 或者okurl=http://tx.tencent.com 注意:这里的url必须为绝对地址。 【可省略】
    errurl:失败后IE自动定位到指定的url。【可省略】

    二、注意事项

    1.参数msg中如果包含中文那么需要将msg的编码方式转换成GBK或者GB2312,msg是不支持UTF-8编码方式的。
    2.参数msg如需要加入超链接格式为:[点我跳转|http://www.baidu.com]
    3.参数msg中不能出现空格,如果需要空格可用【+】替代。
    4.如果请求的url中包含特殊字符,那么需要使用urlencode(),来对url进行编码,否则可能导致超链接显示不正常。
    5.发送消息是需要权限的,这个需要在RTX服务端配置才能发送消息。

    三、问题建议
    1.对msg进行转码的时候用GBK不要用GB2312,因为GB2312支持的汉字比较少,很多比较偏的汉字会无法显示,导致消息被中断(即用户只能收到这个中断前的字符)。
    2.在对消息进行转码的时候,可以考虑加入参数IGNORE,即$msg=iconv(“utf-8″,”gb2312//IGNORE”,$msg)这样在转码的时候将会忽略错误字符。会将错误字符后面的继续转码。
    3.在RTXServer服务端的WebRoot目录下放着很多的cgi和php文件。这些文件都是可以用HTTP方式来访问的,你也可以自己编写新的cgi或者php文件,然后将其放到改目录下即可。这样将可能提供非常强大的扩展功能。
    4.解决中文发送问题:
    SendNotify.cgi(C:Program FilesTencentRTXServerWebRootSendNotify.cgi)加上以下语句:
    $msg = iconv("utf-8","gbk", $msg); 
    $title = iconv("utf-8","gbk", $title);
    $receiver = iconv("utf-8","gbk", $receiver);
    5.解决IP受限问题:
    SDKProperty.xml(C:Program FilesTencentRTXServerSDKProperty.xml)
    如果需要在其它计算机上使用SDK包,必须将这台计算机的IP192.168.17.1地址也加入,如下代码,在<APIClient>段。
    <APIClient>
    <IPLimit Enabled="1">
      <IP>127.0.0.1</IP>
        <IP>192.168.17.1</IP>
    </IPLimit>
    </APIClient>
    如果添加远程访问机器的IP地址,如下代码,允许192.168.17.2通过http方式访问cgi文件。
    <sdkhttp>
    <IPLimit Enabled="1">
      <IP>192.168.17.1.2</IP>
    </IPLimit>
    </sdkhttp>


    四、RTX服务器迁移或者RTX服务器系统重装注意事项
    1、RTX服务器迁移或者RTX服务器系统重装前,需注意备份如下数据:
    (1)、在RTX管理器–“用户管理”–“用户数据导入导出”,选择导出按钮将RTX的用户数据导出,格式为xml。
    (2)、备份用户群数据和用户照片,分别保存在dbdisgroup_db.mdb和filesinfoserveruserphotofiles。一般情况下,用户数据导入导出功能导出的xml格式用户数据在导入到RTX以后,用户群数据和角色数据都会自动导入的,此步备份的目的是当导入用户数据失败时,可以将这两个数据复制到相应位置用于还原。建议将db和config下的所有文件备份;
    (3)、如果后台数据库为SQL,通过SQL管理器备份用户数据库,如果没有第三方应用,RTX后台数据库建议直接使用默认的ACCESS。

    2、RTX服务器安装完成后,需注意以下几点:
    (1)、先导入授权文件,保证所有服务都已经正常启动再做余下的操作;
    (2)、导入xml格式用户数据时,注意要先选择“RTX2005及以后版本数据导入”;
    (3)、如果部署环境是内网的RTX服务器发布到公网,需在“配置向导”–“服务运行状态”–“高级配置”–“客户端登录服务器的地址”增加公网IP地址,否则公网用户可能无法发送图片和文件;
    (4)、停止服务器“服务运行状态”中所有服务,使用记事本打开服务器安装目录*:Program FilesTencentRTXServerconfig txserver.xml ,把相应端口的IP地址全部改为127.0.0.1(8009端口的例外),保存文件后再重新启动所有服务;
    (5)、遇到公网用户无法自动升级的情况,需先在RTX管理器中停止所有服务,然后打开安装目录中config下的rtxserver.xml,找到8009端口对应的IP,将IP改为公网IP,RTX管理器的“服务运行状态”urgradesvr自动升级服务器配置也做相同的更改,最后启动所有服务。更改后公网用户可以自动升级,但内网用户就无法自动升级了,需要根据实际应用情况权衡。

  • 相关阅读:
    由类型名得到该类型
    TypeName of CA1505 is AvoidUnmaintainableCode, not AvoidUnmantainableCode.
    多核
    SSRS throws "The operation has timed out."
    XmlRootAttribute与XmlTypeAttribute
    littleendian and bigendian
    Assembly Exp
    如何在Ubuntu 11.10下成功安装Java [转载]
    *uck up ~,纯发泄
    [转载]读书相关,,
  • 原文地址:https://www.cnblogs.com/yc-shen/p/8443840.html
Copyright © 2020-2023  润新知