首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

騰訊 RTX API 二次開發:從亂碼問題到完整功能封裝

     編輯:PHP 相關知識

騰訊 RTX API 二次開發:從亂碼問題到完整功能封裝

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,供前端樹狀元件渲染。

五、部署與調試建議

  1. API 檔案置於 RTX 伺服器同機器,PHP 需啟用 com_dotnet 擴展。
  2. 防火牆開放 API 埠(預設 8012),限制來源 IP(僅 Web 伺服器可呼叫)。
  3. 所有寫操作(增刪改)建議記錄審計日誌。
  4. 中文編碼轉換統一封裝為 Fun::toRTXCharset($str),避免遺漏。

六、常見問題 FAQ

RTX API 支援哪些開發語言?
所有支援 COM 標準的語言:VB、VC++、ASP、C#、Java (JACOB)、PHP、Delphi、PB、LotusScript 等。
Java 如何呼叫?
使用 JACOB (Java-COM Bridge) 載入 RTXSAPIRootObj 組件,參考官方 CHM 文檔 rtx.qq.com/...ok.CHM。

這套封裝已在生產環境穩定運行超過兩年,有效解決了官方 API 的中文亂碼與易用性問題,歡迎有需求的開發者參考改造。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved