微信開發(八)自動回覆和多客服開發

松陽發表於2015-04-30


文章作者:松陽

本文出自 阿修羅道,禁止用於商業用途,轉載請註明出處。  

原文連結:http://blog.csdn.net/fansongy/article/details/45394641







定製的服務

對於微信服務號來說,最主要的功能是提供更好的服務。使用者更方便的操作,以及更快的反饋響應。自動回覆功能,能夠大幅減少互動時間和客服工作量,在服務號推活動時尤其明顯。另外就是在多客服功能,這個就強大了,簡直就是一個企業qq服務號。目前還不要錢,不過我感覺未來可能會變成一個收費功能

使用場景

這兩個東西走一套流程,所以這裡放在一起說了。

自動回覆功能大致的使用情景是,使用者傳送“流量”,服務號回覆“親,送流量活動是xxxxxx: 快點選【搶流量】 來參加。”

而多客服應該是自動回覆的一個超集,如果自動回覆處理不了,就要轉接到客服那裡。

技術實現

從技術上講,這兩個功能是也一套邏輯。服務回覆使用者訊息,使用的是統一的格式,如果訊息需要轉到多客服,需要給微信伺服器回覆類似這樣的訊息體:

 <xml>
     <ToUserName><![CDATA[touser]]></ToUserName>
     <FromUserName><![CDATA[fromuser]]></FromUserName>
     <CreateTime>1399197672</CreateTime>
     <MsgType><![CDATA[transfer_customer_service]]></MsgType>
 </xml>

官方文件說明是這樣的:

如果公眾號處於開發模式,普通微信使用者向公眾號發訊息時,微信伺服器會先將訊息POST到開發者填寫的url上,如果希望將訊息轉發到多客服系統,則需要開發者在響應包中返回MsgTypetransfer_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返還給鵝廠的伺服器。

部署

在微信公眾號的後臺選擇新增功能外掛->多客服。新增好功能模組後,新增一個客服工號,下載安裝客戶端。這個部署比較簡單,沒啥大坑。上線後拉著客服人員,給做個簡單的使用培訓就成了。

如果你覺得這篇文章對你有幫助,可以順手點個,不但不會喜當爹,還能讓更多人能看到它... 

相關文章