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
2
3
4
|
header( "content-type:text/html;charset=gbk" ); $msg = iconv( "utf-" , "gbk" , $msg ); $title = iconv( "utf-" , "gbk" , $title ); |
如果你的所有安裝都是在本地的,那么只需要訪問(默認端口8012)即可:
http://127.0.0.1:8012/sendnotify.cgi?msg=消息內容&receiver=rtx的賬號(多個用逗號格開)&title=通知的標題
以下是修改后的sendnotify.cgi代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
<?php /** * created by phpstorm. * user: steven * date: // * time: : */ header( "content-type:text/html;charset=gbk" ); require_once "iplimit.php" ; $receiver = $_get [ "receiver" ]; $msg = $_get [ "msg" ]; $title = $_get [ "title" ]; $delaytime = $_get [ "delaytime" ]; $okurl = $_get [ "okurl" ]; $errurl = $_get [ "errurl" ]; if (( strlen ( $receiver ) == ) && ( strlen ( $msg ) == ) && ( strlen ( $title ) == ) && ( strlen ( $delaytime ) == ) && ( strlen ( $okurl ) == ) && ( strlen ( $errurl ) == ) ) { $receiver = $_post [ "receiver" ]; $msg = $_post [ "msg" ]; $title = $_post [ "title" ]; $delaytime = $_post [ "delaytime" ]; $okurl = $_post [ "okurl" ]; $errurl = $_post [ "errurl" ]; } if ( strlen ( $receiver ) == ) { $receiver = "" ; } if ( strlen ( $msg ) == ) { $msg = "" ; } if ( strlen ( $title ) == ) { $title = "" ; } if ( strlen ( $delaytime ) == ) { $delaytime = ; } if ( strlen ( $okurl ) == ) { $okurl = "" ; } if ( strlen ( $errurl ) == ) { $errurl = "" ; } $msg = iconv( "utf-" , "gbk" , $msg ); $title = iconv( "utf-" , "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" , "" ); $objprop ->add( "type" , "" ); $objprop ->add( "asstype" , "" ); if ( strlen ( $title ) == ) { $objprop ->add( "title" , "??" ); } else { $objprop ->add( "title" , $title ); } $objprop ->add( "delaytime" , $delaytime ); if ( strtolower ( $receiver ) == "all" ) { $objprop ->add( "username" , $receiver ); $objprop ->add( "sendmode" , "" ); } else { $objprop ->add( "username" , $receiver ); } $result = @ $objapi ->call(x, $objprop ); $errstr = $php_errormsg ; if ( strcmp ( $nullstr , $errstr ) == ) { if ( strlen ( $okurl ) > ) { header( "location: " . $okurl ); } else { // echo "<script language=\"javascript\">\r\n"; // echo "alert(\"success\")"; //echo "</script>\r\n"; return true; } } else { //send err if ( strlen ( $errurl ) > ) { header( "location: " . $errurl ); } else { echo $errstr . "<br>" ; } } ?> |
3、需要注意的是代碼中引入了iplimit.php文件,所以,訪問的時候可能會提示ip受限,這就需要在rtx服務端安裝文件下找到一個叫sdkproperty.xml的文件,加入你發送請求的服務器ip保存即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<?xml version= "." ?> <property> <apiclient> <iplimit enabled= "" > <ip>...</ip> <ip>這里是ip地址</ip> </iplimit> </apiclient> <sdkhttp> <iplimit enabled= "" > </iplimit> </sdkhttp> </property> |
4、開發者只需要封裝一個發送get或者post的方法,例如:
1
2
3
4
5
6
|
$arr = array ( 'title' => $title , //消息的標題 'receiver' => $receiver_list , //消息的接受者 'msg' => $msg , //消息內容 ); $this ->httpspost( 'http://...:/sendnotify.cgi' , $arr ); |
即可向rtx發送消息通知,以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://www.cnblogs.com/Steven-shi/p/6243008.html