·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> php网站开发 >> 騰訊RTX的API開發,給RTX開個天窗

騰訊RTX的API開發,給RTX開個天窗

作者:佚名      php网站开发编辑:admin      更新时间:2022-07-23
騰訊RTX的API開發,給RTX開個天窗

好多人可能沒聽說RTX這個軟件,在此我簡單說明一下,這個軟件是騰訊為企業開發的一個內部聊天軟件,服務端不是在騰訊那邊,而是需要企業自己安裝到自己公司內部的服務器上,以供企業內部員工交流使用,功能和QQ差不多,只是比QQ弱一點罷了.

嚴格說起來,其實RTX是有提供API接口的,只是不大太好,最近公司對此有需要,所以我就重寫了一下這個API.另外我重寫的主要原因是RTX自帶的API遇到中文會亂碼,而且還有很多雜七雜八的問題,上網搜結果發現關於RTX的API討論話題極少.估計是因為大家對這個軟件的關注程度不高的原因吧.

試想一下,其實網站交互的時候我們除了可以用網站發郵件或手機簡訊之外還可以發送即時消息到RTX上,讓公司內部的員工能夠及時瞭解到網站訪問者的需求,爲了達到這個目的,因此我重寫了我們公司內部的RTX的API,重寫之後的API能實現新增RTX用戶,修改用戶資料,刪除用戶,獲取所有的用戶列表,根據狀態獲取某些用戶,獲取公司內部的組織架構,發送即時通知給某些用戶,發送即時消息給某些用戶等等,下邊我就直接上代碼了:

<?phprequire('_class.php');//驗證使用這個API的用戶身份是否合法?$K='twboss_rtx';//d6904e27b5c274b1d6acaadda88ec131$key=Fun::toGet('key');if($key!=md5($K)){exit('Error:'.__LINE__.', 您無權使用該API!');}unset($key,$K);$action=Fun::toGet('action');switch(strtolower($action)){case 'add'://新增RTX用戶_Add();break;case 'mdy'://修改某人的RTX登入密碼_Mdy();break;case 'del'://刪除某人_Del();break;case 'setdept'://修改用戶所屬部門_Setdept();break;case 'userlist'://獲取RTX用戶列表_Userlist();break;case 'deptlist'://獲取組織架構列表_Deptlist();break;case 'getstatus'://獲取用戶在線狀態_Getstatus();break;case 'getuserbystatus'://提取某種類型的用戶列表_Getuserbystatus();break;case 'sendtz'://發通知給某人或某幾個人_Sendtz();break;case 'sendim'://發送消息給某人_Sendim();break;default:break;}/**交流:QQ群:223494678參數:key:必填,API密鈅action:必填,操作指令user:必填,只能由英文和數字組成,長度不能小於3pass:必填,只能由英文,數字和底線組成,長度不能小於3title是用戶真實姓名,可以用中文用法:$a=file_get_contents('http://10.20.30.40:8012/_api.php?key=d6904e27b5c274b1d6acaadda88ec131&action=add&user=7di&pass=123123&title='.iconv('UTF-8','big5','馮健'));echo '<PRe>',var_dump($a),'</pre>';/**/function _Add(){$user=Fun::toGet('user');//登入名$pass=Fun::toGet('pass');//登入密碼$title=Fun::toGet('title');//真實姓名if($user=='' or $pass==''){exit('Error:'.__LINE__.', 登入名或密碼不能為空!');}$title=($title=='') ? $user : $title;if(!Fun::Preg("^[a-zA-Z0-9]{3,16}$",'chk',$user)){exit('Error:'.__LINE__.', 登入名稱只能有英文和數字組成,並且長度範圍是3~16');}if(!Fun::Preg("^[a-zA-Z0-9._]{3,16}$",'chk',$pass)){exit('Error:'.__LINE__.', 登入密碼只能有英文,數字和底線組成,並且長度範圍是3~16');}try{$RootObj= new COM('RTXSAPIRootObj.RTXSAPIRootObj');$RootObj -> Serverip= '127.0.0.1';$RootObj -> ServerPort= '8006';$UserManagerObj=$RootObj -> UserManager;if(($UserManagerObj -> IsUserExist($user))===FALSE){$UserManagerObj -> AddUser($user,0);   //添加用户$UserManagerObj -> SetUserPwd($user,$pass);$UserManagerObj -> SetUserBasicInfo($user,$title,0,'','','',0);echo '200 ok';}else{exit('Error:'.__LINE__.',用戶已存在!');}}catch(Exception $e){echo '<pre>',Var_Dump($e->getMessage()),'</pre>';}die();}/**交流:QQ群:223494678參數:key:必填,API密鈅action:必填,操作指令user:必填,只能由英文和數字組成,長度不能小於3pass:必填,只能由英文,數字和底線組成,長度不能小於3title:選填,用戶真實姓名,可以用中文用法:$a=file_get_contents('http://10.20.30.40:8012/_api.php?key=d6904e27b5c274b1d6acaadda88ec131&action=mdy&user=7di&pass=123123&title='.iconv('UTF-8','big5','馮健'));echo '<pre>',var_dump($a),'</pre>';/**/function _Mdy(){$user=Fun::toGet('user');//登入名$pass=Fun::toGet('pass');//登入密碼$title=Fun::toGet('title');//真實姓名if($user=='' or $pass==''){exit('Error:'.__LINE__.', 登入名或密碼不能為空!');}$title=($title=='') ? $user : $title;if(!Fun::Preg("^[a-zA-Z0-9]{3,16}$",'chk',$user)){exit('Error:'.__LINE__.', 登入名稱只能有英文和數字組成,並且長度範圍是3~16');}if(!Fun::Preg("^[a-zA-Z0-9._]{3,16}$",'chk',$pass)){exit('Error:'.__LINE__.', 登入密碼只能有英文,數字和底線組成,並且長度範圍是3~16');}try{$RootObj= new COM('RTXSAPIRootObj.RTXSAPIRootObj');$RootObj -> ServerIP= '127.0.0.1';$RootObj -> ServerPort= '8006';$UserManagerObj=  $RootObj -> UserManager;if(($UserManagerObj -> IsUserExist($user))===TRUE){$UserManagerObj -> SetUserPwd($user,$pass); //设置用户密码$UserManagerObj -> SetUserBasicInfo($user,$title,0,'','','',0);echo '200 ok';}else{exit('Error:'.__LINE__.',用戶不存在!');}}catch(Exception $e){echo '<pre>',Var_Dump($e->getMessage()),'</pre>';Die();}}/**交流:QQ群:223494678參數:key:必填,API密鈅action:必填,操作指令user:必填,只能由英文和數字組成,長度不能小於3pass:必填,只能由英文,數字和底線組成,長度不能小於3title:選填,用戶真實姓名,可以用中文用法:$a=file_get_contents('http://10.20.30.40:8012/_api.php?key=d6904e27b5c274b1d6acaadda88ec131&action=del&user=xxx');echo '<pre>',var_dump($a),'</pre>';/**/function _Del(){$user=Fun::toGet('user');//登入名$pass=Fun::toGet('pass');//登入密碼$title=Fun::toGet('title');//真實姓名if($user=='' or $pass==''){exit('Error:'.__LINE__.', 登入名或密碼不能為空!');}$title=($title=='') ? $user : $title;if(!Fun::Preg("^[a-zA-Z0-9]{3,16}$",'chk',$user)){exit('Error:'.__LINE__.', 登入名稱只能有英文和數字組成,並且長度範圍是3~16');}if(!Fun::Preg("^[a-zA-Z0-9._]{3,16}$",'chk',$pass)){exit('Error:'.__LINE__.', 登入密碼只能有英文,數字和底線組成,並且長度範圍是3~16');}try{$RootObj= new COM('RTXSAPIRootObj.RTXSAPIRootObj');$RootObj -> ServerIP= '127.0.0.1';$RootObj -> ServerPort= '8006';$UserManagerObj=  $RootObj -> UserManager;if(($UserManagerObj -> IsUserExist($user))===TRUE){$UserManagerObj -> DeleteUser($user);echo '200 ok';}else{exit('Error:'.__LINE__.',用戶不存在!');}}catch(Exception $e){echo '<pre>',Var_Dump($e->getMessage()),'</pre>';Die();}}/**交流:QQ群:223494678參數:key:必填,API密鈅action:必填,操作指令uid:必填,RTX號碼,不可以是登入名did:必填,所屬部門的id用法:$a=file_get_contents('http://10.20.30.40:8012/_api.php?key=d6904e27b5c274b1d6acaadda88ec131&action=setdept&uid=9534&did=18');echo '<pre>',var_dump($a),'</pre>';/**/function _Setdept(){$uid=Fun::toGet('uid');//RTX號碼$did=Fun::toGet('did');//所屬部門的idif(!is_numeric($uid) or $uid<1){exit('Error:'.__LINE__.', 只能填寫被修改者的RTX號碼,不可以填寫登入名!');}if(!is_numeric($did) or $did<1){exit('Error:'.__LINE__.', 只能填寫所屬部門的ID值,不可以填寫部門名稱!');}$ACC=new access('../db/rtxdb.mdb','','');$ACC->num_rows("update RTX_DeptUser set DeptID = {$did} where UserID={$uid}");echo '200 ok';die();}/**交流:QQ群:223494678參數:key:必填,API密鈅action:必填,操作指令用法:$a=file_get_contents('http://10.20.30.40:8012/_api.php?key=d6904e27b5c274b1d6acaadda88ec131&action=userlist');echo '<pre>',var_dump(json_decode($a,TRUE)),'</pre>';die();/**/function _Userlist(){$ACC=new Access('../db/rtxdb.mdb','','');$a=$ACC->getlist("SELECT a.ID,a.UserName,a.Name,a.Gender,a.Mobile,a.Email,a.Phone,a.UserVersion,b.DeptID FROM `SYS_User` AS a,RTX_DeptUser AS b WHERE (a.AccountState=0 OR a.AccountState IS NULL) AND b.UserId=a.ID ORDER BY a.ID DESC");foreach($a as $k=>$v){if(!isset($a[$k]['Name']) or $a[$k]['Name']==''){continue;}$a[$k]['Name']=iconv('big5','UTF-8',$a[$k]['Name']);}unset($k,$v);header('Content-type: application/json; charset=UTF-8');echo json_encode($a);die();}/**交流:QQ群:223494678參數:key:必填,API密鈅action:必填,操作指令用法:$a=file_get_contents('http://10.20.30.40:8012/_api.php?key=d6904e27b5c274b1d6acaadda88ec131&action=deptlist');echo '<pre>',var_dump(json_decode($a,TRUE)),'</pre>';die();/**/function _Deptlist(){$ACC=new Access('../db/rtxdb.mdb','','');$a=$ACC->getlist("SELECT DeptID,PDeptID,DeptName,SortID FROM `RTX_Dept` ORDER BY PDeptID ASC,SortID ASC");foreach($a as $k=>$v){if(!isset($a[$k]['DeptName']) or $a[$k]['DeptName']==''){continue;}$a[$k]['DeptName']=iconv('big5','UTF-8',$a[$k]['DeptName']);}unset($k,$v);header('Content-type: application/json; charset=UTF-8');echo json_encode($a);die();}/**交流:QQ群:223494678參數:key:必填,API密鈅action:必填,操作指令user:必填,某人的登入名用法:$a=file_get_contents('http://10.20.30.40:8012/_api.php?key=d6904e27b5c274b1d6acaadda88ec131&action=getstatus&user=7di');echo $a;die();/**/function _Getstatus(){$user = Fun::toGet('user');$ObjApi= new COM('Rtxserver.rtxobj');$objProp= new COM('Rtxserver.collection');$ObjApi->Name = 'SysTools';$objProp->Add('Username',$user);$r = @$ObjApi->Call2(0x2001,$objProp);echo($r);unset($user,$r,$objProp,$ObjApi);die();}/**交流:QQ群:223494678參數:key:必填,API密鈅action:必填,操作指令status:必填,狀態值['offline','online','away']用法:$a=file_get_contents('http://10.20.30.40:8012/_api.php?key=d6904e27b5c274b1d6acaadda88ec131&action=getuserbystatus&status=away');echo $a;die();/**/function _Getuserbystatus(){$status=Fun::toGet('status');$status=($status=='') ? 'online' : strtolower(trim($status));if(!in_array($status,array('offline','online','away'))){exit('Error:'.__LINE__.', status is not in offline online away!');}$RootObj= new COM("RTXSAPIRootObj.RTXSAPIRootObj");$RootObj -> ServerIP= '127.0.0.1';$RootObj -> ServerPort= '8006';$r = $Roo