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

微信公眾平台開發模式實現多客服系統完整指南:從消息轉發到客服介接

     編輯:PHP 綜合知識

多客服核心機制

微信公眾平台開發模式可透過回傳特定 XML 訊息,將用戶後續對話轉發至微信原生多客服系統(網頁版/手機版客服介面),客服人員在後台回覆,訊息再由微信服務器推送給用戶。開發者無需自建聊天系統。

核心 XML 格式:transfer_customer_service


  
  
  1399197672
  
  • MsgType 必須為 transfer_customer_service。
  • 無 Content、MediaId 等欄位。
  • 收到此訊息後,微信將本次及後續一段時間(通常 48 小時)內的用戶訊息全部轉發至客服系統。

PHP 實現:發送轉發訊息

private function transmitService($object) {
    $xmlTpl = "
  
  
  %s
  
";
    return sprintf($xmlTpl, $object->FromUserName, $object->ToUserName, time());
}

觸發策略:關鍵字匹配

private function receiveText($object) {
    $keyword = trim($object->Content);
    // 觸發關鍵字:投訴、你好、在嗎、有人嗎 等
    if (strpos($keyword, '投訴') !== false ||
        strpos($keyword, '你好') !== false ||
        strpos($keyword, '在嗎') !== false ||
        strpos($keyword, '有人嗎') !== false) {
        return $this->transmitService($object);
    }
    // 其他業務邏輯...
    return $this->transmitText($object, '收到:' . $keyword);
}

完整接收處理流程(方倍工作室 SDK 風格)

responseMsg(); }
else { $wechatObj->valid(); }

class WechatCallbackApi {
    public function valid() { /* 簽名驗證 */ }
    public function responseMsg() {
        $postStr = $GLOBALS['HTTP_RAW_POST_DATA'];
        $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
        $type = $postObj->MsgType;
        switch ($type) {
            case 'event': $result = $this->receiveEvent($postObj); break;
            case 'text':  $result = $this->receiveText($postObj); break;
            case 'image': $result = $this->receiveImage($postObj); break;
            // voice, video, location, link...
            default: $result = '';
        }
        echo $result;
    }
    private function receiveEvent($obj) { /* 關注、掃碼、菜單點擊等 */ }
    private function receiveText($obj) { /* 關鍵字觸發多客服或自動回覆 */ }
    private function transmitService($obj) { /* 上述 XML */ }
    private function transmitText($obj, $content) { /* 文字回覆 XML */ }
    private function transmitNews($obj, $articles) { /* 圖文回覆 */ }
    // ...
}

客服系統配置(微信公眾平台後台)

  1. 登入 mp.weixin.qq.com → 功能 → 多客服。
  2. 啟用多客服,設定客服帳號(最多 100 個),綁定微信號/郵箱。
  3. 設定客服工作時間、歡迎語、轉接提示語。
  4. 客服人員掃碼關注「微信公眾平台客服助手」小程序/公眾號接收會話。

進階:自定義菜單直接進入客服

菜單類型設為 click,key 設為特定值(如 OPEN_KF),後台收到 EventKey: OPEN_KF 時直接回傳 transfer_customer_service。

private function receiveEvent($obj) {
    if ($obj->Event === 'CLICK' && $obj->EventKey === 'OPEN_KF') {
        return $this->transmitService($obj);
    }
    // ...
}

注意:自定義菜單點擊事件觸發多客服,僅在用戶點擊瞬間生效,不會像文字訊息那樣持續 48 小時轉發。若需持續,需引導用戶發送文字觸發。

常見問題與避坑

  1. 開發模式與多客服互斥:一旦進入多客服,原自動回覆(關鍵字、圖文等)完全失效,直到會話結束(48 小時無互動或客服主動關閉)。
  2. 客服回覆延遲:微信服務器推送客服訊息到用戶通常 < 1 秒,但高峰期可能延遲。
  3. 圖片/語音/視頻轉發:用戶發送多媒體訊息同樣轉發給客服,客服可直接在介面查看/播放。
  4. 會話狀態查詢:可調用微信 API customservice/getrecord 獲取聊天記錄(需 access_token)。
  5. 機器人輔助:可結合關鍵字自動回覆作為「機器人客服」,無法解決時再引導輸入「人工」觸發轉人工。

完整代碼結構建議

wechat/
├── config.php          # TOKEN, AppID, AppSecret
├── index.php           # 入口,驗證/分發
├── WechatCallback.php  # 核心處理類
├── Message/
│   ├── Text.php        # 文字訊息處理
│   ├── Event.php       # 事件處理
│   └── Service.php     # 多客服轉發邏輯
└── utils.php           # XML 生成、日誌、HTTP 工具

總結

微信多客服為開發模式提供「零開發」人工客服接入能力。核心在於回傳 transfer_customer_service XML,觸發方式靈活(關鍵字、菜單、事件)。關鍵風險:進入後原自動回覆失效,需精心設計觸發條件與引導語,平衡機器人效率與人工服務品質。

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