RTX 是腾讯公司推出的企业级即时通信平台,大多数公司都在使用它,但是我们很多时候需要将自己系统或者产品的一些通知实时推送给 RTX,这就需要用到 RTX 的服务端 SDK,建议先去看看 RTX 的 SDK 开发文档(客户端,服务器),我们先看看功能效果:
当然,现在很多公司都已经在 RTX 的基础上升级成了企业微信,没关系,这个 API 同样可以使用,还是同样的接口,只是展示效果不一样而已:
下面是用 PHP 实现 RTX 发送消息提醒:
1、首先在服务器端安装 RTX 的服务端和客户端,再安装 SDK 开发包(对于发送消息提醒的功能,只需要安装服务端 sdk 即可)(下载地址:http://rtx.tencent.com/rtx/download/index.shtml)
2、然后再 RTX 服务器的安装路径下有个 webRoot 文件夹,文件夹下有个 SendNotify.cgi 文件,这就是 RTX 发送消息的接口文件, 打开文件是懂 PHP 的都能看懂的代码,不过需要在头部加入 header 头,以及需要处理一些参数的编码
- 1 header("Content-Type:text/html;charset=GBK");
- 1 $msg = iconv("utf-8", "GBK", $msg);
- 2 $title = iconv("utf-8", "GBK", $title);
如果你的所有安装都是在本地的,那么只需要访问(默认端口 8012)即可:
http://127.0.0.1:8012/SendNotify.cgi?msg = 消息内容 & receiver=RTX 的账号(多个用逗号格开)&title = 通知的标题
以下是修改后的 SendNotify.cgi 代码:
- 1 php 2
- /**
- 3 * Created by PhpStorm.
- 4 * User: Steven
- 5 * Date: 2016/12/29
- 6 * Time: 19:22
- 7 */
- 8 9 header("Content-Type:text/html;charset=GBK");
- 10 require_once "IPLimit.php";
- 11 12 $receiver = $_GET["receiver"];
- 13 $msg = $_GET["msg"];
- 14 $title = $_GET["title"];
- 15 16 17 $delaytime = $_GET["delaytime"];
- 18 $okurl = $_GET["okurl"];
- 19 $errurl = $_GET["errurl"];
- 20 21
- if ((strlen($receiver) == 0) 22 && (strlen($msg) == 0) 23 && (strlen($title) == 0) 24 && (strlen($delaytime) == 0) 25 && (strlen($okurl) == 0) 26 && (strlen($errurl) == 0) 27) {
- 28 $receiver = $_POST["receiver"];
- 29 $msg = $_POST["msg"];
- 30 $title = $_POST["title"];
- 31 $delaytime = $_POST["delaytime"];
- 32 $okurl = $_POST["okurl"];
- 33 $errurl = $_POST["errurl"];
- 34
- }
- 35 36
- if (strlen($receiver) == 0) {
- 37 $receiver = "";
- 38
- }
- 39
- if (strlen($msg) == 0) {
- 40 $msg = "";
- 41
- }
- 42
- if (strlen($title) == 0) {
- 43 $title = "";
- 44
- }
- 45
- if (strlen($delaytime) == 0) {
- 46 $delaytime = 0;
- 47
- }
- 48
- if (strlen($okurl) == 0) {
- 49 $okurl = "";
- 50
- }
- 51
- if (strlen($errurl) == 0) {
- 52 $errurl = "";
- 53
- }
- 54 55 $msg = iconv("utf-8", "GBK", $msg);
- 56 $title = iconv("utf-8", "GBK", $title);
- 57 $php_errormsg = NULL;
- 58 59 $ObjApi = new COM("Rtxserver.rtxobj");
- 60 $objProp = new COM("Rtxserver.collection");
- 61 $Name = "ExtTools";
- 62 $ObjApi - >Name = $Name;
- 63 64 $objProp - >Add("msgInfo", $msg);
- 65 $objProp - >Add("MsgID", "1");
- 66 $objProp - >Add("Type", "0");
- 67 $objProp - >Add("AssType", "0");
- 68
- if (strlen($title) == 0) {
- 69 $objProp - >Add("Title", "֪ͨ");
- 70
- } else {
- 71 $objProp - >Add("Title", $title);
- 72
- }
- 73 $objProp - >Add("DelayTime", $delaytime);
- 74
- if (strtolower($receiver) == "all") {
- 75 $objProp - >Add("Username", $receiver);
- 76 $objProp - >Add("SendMode", "1");
- 77
- } else {
- 78 $objProp - >Add("Username", $receiver);
- 79
- }
- 80 81 82 $Result = @$ObjApi - >Call2(0x2100, $objProp);
- 83 84 $errstr = $php_errormsg;
- 85
- if (strcmp($nullstr, $errstr) == 0) {
- 86
- if (strlen($okurl) > 0) {
- 87 header("Location: ".$okurl);
- 88
- } else {
- 89 // echo "<script language=\"JavaScript\">\r\n";
- 90 // echo "alert(\"success\")";
- 91 //echo "</script>\r\n";
- 92
- return true;
- 93 94
- }
- 95
- } else {
- 96 //send err
- 97
- if (strlen($errurl) > 0) {
- 98 header("Location: ".$errurl);
- 99
- } else {
- 100 echo $errstr."
- ";
- 101 102
- }
- 103
- }
- 104 ? >
3、需要注意的是代码中引入了 IPLimit.php 文件,所以,访问的时候可能会提示 IP 受限,这就需要在 RTX 服务端安装文件下找到一个叫 SDKProperty.xml 的文件,加入你发送请求的服务器 IP 保存即可
- 1
- 2
- 3
- 4
- 5 127.0.0.1
- 6 这里是IP地址
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
4、开发者只需要封装一个发送 GET 或者 POST 的方法,例如:
- 1 $arr = array(
- 2 'title' => $title, //消息的标题
- 3 'receiver' => $receiver_list, //消息的接受者
- 4 'msg' => $msg,//消息内容
- 5 );
- 6 $this->httpsPost('http://180.168.4.58:8012/SendNotify.cgi', $arr);
来源: