微信公眾號「多客服」功能允許人工客服在網頁/客戶端直接回覆用戶消息。開發模式下,只需在收到用戶消息時返回 transfer_customer_service 類型的 XML,即可將會話轉交客服系統。本文基於方倍工作室 PHP SDK,提供從授權驗證、關鍵詞觸發、完整回調代碼到注意事項的全流程實現。
<MsgType><![CDATA[transfer_customer_service]]></MsgType>。<xml> <ToUserName><![CDATA[用戶OpenID]]></ToUserName> <FromUserName><![CDATA[公眾號原始ID]]></FromUserName> <CreateTime>1399197672</CreateTime> <MsgType><![CDATA[transfer_customer_service]]></MsgType> </xml>
<?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」功能(公眾平台後台設置),自行存儲落庫。 |
| 客服賬號無法登入 | 需在公眾平台「多客服」添加客服帳號,並綁定微信號掃碼授權。 |
多客服是微信生態連接人工服務的標準接口,配合開發模式可實現極其靈活的業務路由。掌握 transfer_customer_service 觸發時機與 XML 結構,即可輕鬆接入。