定制的服務
對於微信服務號來說,最主要的功能是提供更好的服務。用戶更方便的操作,以及更快的反饋響應。自動回復功能,能夠大幅減少交互時間和客服工作量,在服務號推活動時尤其明顯。另外就是在多客服功能,這個就強大了,簡直就是一個企業qq服務號。目前還不要錢,不過我感覺未來可能會變成一個收費功能
使用場景
這兩個東西走一套流程,所以這里放在一起說了。
自動回復功能大致的使用情景是,用戶發送“流量”,服務號回復“親,送流量活動是xxxxxx: 快點擊【搶流量】 來參加。”
而多客服應該是自動回復的一個超集,如果自動回復處理不了,就要轉接到客服那里。
技術實現
從技術上講,這兩個功能是也一套邏輯。服務回復用戶消息,使用的是統一的格式,如果消息需要轉到多客服,需要給微信服務器回復類似這樣的消息體:
- <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
函數,就返回一個包裝好的消息,走HTTP返還給鵝廠的服務器。
部署
在微信公眾號的后台選擇添加功能插件->多客服。添加好功能模塊后,添加一個客服工號,下載安裝客戶端。這個部署比較簡單,沒啥大坑。上線后拉着客服人員,給做個簡單的使用培訓就成了。
http://blog.csdn.net/fansongy/article/details/45394641