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

微信公眾平台開發模式接入多客服系統:完整 PHP 實現方案

     編輯:PHP 相關知識

微信公眾平台開發模式接入多客服系統:完整 PHP 實現方案

微信公眾號「多客服」功能允許人工客服在網頁/客戶端直接回覆用戶消息。開發模式下,只需在收到用戶消息時返回 transfer_customer_service 類型的 XML,即可將會話轉交客服系統。本文基於方倍工作室 PHP SDK,提供從授權驗證、關鍵詞觸發、完整回調代碼到注意事項的全流程實現。

核心原理

  1. 用戶發送消息 → 公眾號服務器推送至開發者 URL。
  2. 開發者判斷觸發條件(關鍵詞、事件、菜單點擊)。
  3. 返回 <MsgType><![CDATA[transfer_customer_service]]></MsgType>。
  4. 微信服務器收到後,將該用戶後續消息(一段時間內)轉發至多客服系統(PC 客戶端/網頁版/移動端)。

觸發回復 XML 結構

<xml>
  <ToUserName><![CDATA[用戶OpenID]]></ToUserName>
  <FromUserName><![CDATA[公眾號原始ID]]></FromUserName>
  <CreateTime>1399197672</CreateTime>
  <MsgType><![CDATA[transfer_customer_service]]></MsgType>
</xml>

PHP 實現:關鍵詞觸發多客服

<?php
// 核心回調類(精簡自方倍 SDK)
class WechatCallback {
    const TOKEN = 'your_token';

    public function responseMsg() {
        $postStr = file_get_contents('php://input');
        if (empty($postStr)) return;

        $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
        $msgType = trim($postObj->MsgType);

        switch ($msgType) {
            case 'text':
                $result = $this->handleText($postObj);
                break;
            case 'event':
                $result = $this->handleEvent($postObj);
                break;
            default:
                $result = '';
        }
        echo $result;
    }

    // 文本消息:關鍵詞觸發
    private function handleText($obj) {
        $keyword = trim($obj->Content);
        $triggerWords = ['你好', '在嗎', '有人嗎', '投訴', '客服', '人工'];

        foreach ($triggerWords as $word) {
            if (strpos($keyword, $word) !== false) {
                return $this->transferService($obj);
            }
        }
        // 其他業務邏輯...
        return '';
    }

    // 事件消息:點擊菜單觸發
    private function handleEvent($obj) {
        if ($obj->Event === 'CLICK' && $obj->EventKey === 'KEFU') {
            return $this->transferService($obj);
        }
        // 關注歡迎語等...
        return '';
    }

    // 生成轉接 XML
    private function transferService($obj) {
        $tpl = "<xml>
  <ToUserName><![CDATA[%s]]></ToUserName>
  <FromUserName><![CDATA[%s]]></FromUserName>
  <CreateTime>%s</CreateTime>
  <MsgType><![CDATA[transfer_customer_service]]></MsgType>
</xml>";
        return sprintf($tpl, $obj->FromUserName, $obj->ToUserName, time());
    }
}

// 入口
$wc = new WechatCallback();
if (isset($_GET['echostr'])) {
    // 驗證簽名(略)
    echo $_GET['echostr'];
} else {
    $wc->responseMsg();
}

自定義菜單接入(需高級接口權限)

菜單類型設為 view,URL 指向微信 OAuth2 授權頁,授權後回調業務頁,業務頁再判斷是否返回 transfer_customer_service。注意:直接在菜單 URL 返回 transfer_customer_service 無效,必須經過消息推送流程。

完整可運行版(含簽名驗證、日誌、多消息類型)

見原文末尾完整代碼區塊,已包含:

  • checkSignature():SHA1 簽名驗證
  • receiveEvent():關注/取消關注/菜單點擊/掃碼等事件
  • transmitText/News/Music:普通回復類型
  • logger():SAE/本地環境自適應日誌

關鍵注意事項(避坑指南)

現象原因與對策
菜單點擊無法進入客服view 菜單直接跳轉 URL,不產生消息推送,無法返回 transfer_customer_service。需用 click 菜單產生事件,或在授權回調頁引導用戶發送關鍵詞。
轉接後原自動回復失效轉接成功後,一段時間內(約 48h)所有消息直達客服,開發模式回調不再觸發。需在客服系統處理或等待超時恢復。
多客服離線消息丟失啟用「離線消息推送到開發者 URL」功能(公眾平台後台設置),自行存儲落庫。
客服賬號無法登入需在公眾平台「多客服」添加客服帳號,並綁定微信號掃碼授權。

進階擴展

  • 智能路由:關鍵詞分類(售前/售後/技術) → 標記會話屬性 → 客服端分組接待。
  • 機器人輔助:未轉人工前,先走關鍵詞/知識庫自動回復,降低人工壓力。
  • 會話存檔:開發模式 + 客服系統雙向同步消息到 DB,構建完整會話歷史。
  • 滿意度評價:會話結束推送評價卡片,收集服務質量數據。

多客服是微信生態連接人工服務的標準接口,配合開發模式可實現極其靈活的業務路由。掌握 transfer_customer_service 觸發時機與 XML 結構,即可輕鬆接入。

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