RTX(騰訊通)是騰訊面向企業的內部即時通訊軟體,伺服端部署於企業內網。官方提供 COM 介面的 API,但存在中文亂碼、文檔缺乏、錯誤處理不完善等問題。本文分享作者重寫的 PHP 版 API 封裝,實現用戶增刪改查、組織架構同步、即時通知/消息推送等完整功能。
_api.php,透過 action 參數分發功能。key=md5('twboss_rtx') 進行簡易身份驗證。iconv('UTF-8','BIG5', $str) 轉碼,解決官方 API 亂碼痛點。200 ok 或 JSON;失敗 Error:行號, 訊息。| Action | 功能 | 關鍵參數 |
|---|---|---|
| add | 新增用戶 | user, pass, title(真實姓名) |
| mdy | 修改密碼/姓名 | user, pass, title |
| del | 刪除用戶 | user, pass |
| setdept | 調整部門 | uid(RTX號), did(部門ID) |
| userlist | 獲取用戶列表(JSON) | — |
| deptlist | 獲取組織架構(JSON) | — |
| getstatus | 查詢用戶在線狀態 | user |
| getuserbystatus | 按狀態篩選用戶 | status(offline/online/away) |
| sendtz | 發送通知(彈窗) | to(分號分隔), tit, msg, tim(毫秒) |
| sendim | 發送即時消息(會話) | user, pass, to, msg |
function _Add() {
$user = Fun::toGet('user');
$pass = Fun::toGet('pass');
$title = Fun::toGet('title') ?: $user;
// 參數驗證
if (!preg_match('/^[a-zA-Z0-9]{3,16}$/', $user)) exit('Error: 登入名格式錯誤');
if (!preg_match('/^[a-zA-Z0-9._]{3,16}$/', $pass)) exit('Error: 密碼格式錯誤');
try {
$RootObj = new COM('RTXSAPIRootObj.RTXSAPIRootObj');
$RootObj->ServerIP = '127.0.0.1';
$RootObj->ServerPort = '8006';
$UserManager = $RootObj->UserManager;
if ($UserManager->IsUserExist($user) === FALSE) {
$UserManager->AddUser($user, 0);
$UserManager->SetUserPwd($user, $pass);
$UserManager->SetUserBasicInfo($user, $title, 0, '', '', '', 0);
echo '200 ok';
} else {
exit('Error: 用戶已存在');
}
} catch (Exception $e) {
echo '<pre>', var_dump($e->getMessage()), '</pre>';
}
die();
}
RTX 資料庫為 Access (rtxdb.mdb),_Setdept 直接更新 RTX_DeptUser 表;_Userlist、_Deptlist 透過 SQL 查詢並 iconv('BIG5','UTF-8') 輸出 JSON,供前端樹狀元件渲染。
com_dotnet 擴展。Fun::toRTXCharset($str),避免遺漏。RTXSAPIRootObj 組件,參考官方 CHM 文檔 rtx.qq.com/...ok.CHM。這套封裝已在生產環境穩定運行超過兩年,有效解決了官方 API 的中文亂碼與易用性問題,歡迎有需求的開發者參考改造。