微信公眾平台開發模式可透過回傳特定 XML 訊息,將用戶後續對話轉發至微信原生多客服系統(網頁版/手機版客服介面),客服人員在後台回覆,訊息再由微信服務器推送給用戶。開發者無需自建聊天系統。
1399197672
MsgType 必須為 transfer_customer_service。Content、MediaId 等欄位。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);
}
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) { /* 圖文回覆 */ }
// ...
}
mp.weixin.qq.com → 功能 → 多客服。菜單類型設為 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 小時轉發。若需持續,需引導用戶發送文字觸發。
customservice/getrecord 獲取聊天記錄(需 access_token)。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,觸發方式靈活(關鍵字、菜單、事件)。關鍵風險:進入後原自動回覆失效,需精心設計觸發條件與引導語,平衡機器人效率與人工服務品質。