微信開發(八)自動回復和多客服開發
來源:程序員人生 發布時間:2015-06-12 08:55:34 閱讀次數:3689次
定制的服務
對微佩服務號來講,最主要的功能是提供更好的服務。用戶更方便的操作,和更快的反饋響應。自動回復功能,能夠大幅減少交互時間和客服工作量,在服務號推活動時特別明顯。另外就是在多客服功能,這個就強大了,簡直就是1個企業qq服務號。目前還不要錢,不過我感覺未來可能會變成1個收費功能
使用處景
這兩個東西走1套流程,所以這里放在1起說了。
自動回復功能大致的使用情形是,用戶發送“流量”,服務號回復“親,送流量活動是xxxxxx: 快點擊【搶流量】 來參加。”
而多客服應當是自動回復的1個超集,如果自動回復處理不了,就要轉接到客服那里。
技術實現
從技術上講,這兩個功能是也1套邏輯。服務回復用戶消息,使用的是統1的格式,如果消息需要轉到多客服,需要給微佩服務器回復類似這樣的消息體:
<xml>
<ToUserName><![CDATA[touser]]></ToUserName>
<FromUserName><![CDATA[fromuser]]></FromUserName>
<CreateTime>1399197672</CreateTime>
<MsgType><![CDATA[transfer_customer_service]]></MsgType>
</xml>
官方文檔說明是這樣的:
如果公眾號處于開發模式,普通微信譽戶向公眾號發消息時,微佩服務器會先將消息POST到開發者填寫的url上,如果希望將消息轉發到多客服系統,則需要開發者在響應包中返回MsgType
為transfer_customer_service
的消息,微佩服務器收到響應后會把當次發送的消息轉發最多客服系統。具體可以參照這里
因此我做了這樣的設計,收到用戶輸入的消息后,首先在數據庫的表中檢查是不是有匹配的應對,如果有則直接返回給用戶,否則,就返回類型為transfer_customer_service
的消息,將其轉接到客服那邊。
實現
protected String getRawText(String key) {
// 如果對應的EVENT_KEY有個相同的配置信息,就直接載入
String tmpRaw = getRawByStateDao(key);
if (tmpRaw != null && tmpRaw.length() > 0) {
raw = tmpRaw;
} else {
raw = "";
}
return raw;
}
String getRawByStateDao(String key) {
//you should get data from db here
}
public String getContextText(String key) {
// 回復文本消息
TextMessage textMessage = new TextMessage();
textMessage.setToUserName(fromUserName);
textMessage.setFromUserName(toUserName);
textMessage.setCreateTime(new Date().getTime());
String contextText = getRawText(key);
if(contentText.length()>0){
textMessage.setContent(contentText);
textMessage.setMsgType("text");
} else {
textMessage.setMsgType("transfer_customer_service");
}
// 將文本消息對象轉換成xml
String respXml = MessageUtil.messageToXml(textMessage);
return respXml;
}
大致流程就是這樣,使用時調用getContextText
函數,就返回1個包裝好的消息,走HTTP返還給鵝廠的服務器。
部署
在微信公眾號的后臺選擇添加功能插件->多客服。添加好功能模塊后,添加1個客服工號,下載安裝客戶端。這個部署比較簡單,沒啥大坑。上線后拉著客服人員,給做個簡單的使用培訓就成了。
如果你覺得這篇文章對你有幫助,可以順手點個頂,不但不會喜當爹,還能讓更多人能看到它... 
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈