在上文里我們介紹了如何通過Force.com平台里為微信賬號添加自定義菜單,本文里我們將進一步介紹如何查詢菜單以及刪除菜單的相關知識,最后會介紹微信平台如何進行語音識別的相關技術。
查詢菜單
與創建菜單類似,查詢菜單有自己的接口,其中ACESS_TOKEN需要通過前文介紹到的接口獲取,通常2小時后會失效:
https://api.weixin.qq.com/cgi-bin/menu/get?access_token=[ACCESS_TOKEN]
為此首先通過前文介紹到的獲取Access_Token,獲得類似如下的真實請求URL:
在IE等瀏覽器里運行該鏈接,將相應文件保存下來打開即可看到微信賬號當前的菜單結構(通過不同瀏覽器查看可能會出現顯示亂碼問題等,這是瀏覽器的默認編碼顯示問題所致,下載下來通過記事本查看即可看到對應的真實文字):
刪除菜單
使用接口創建自定義菜單后,開發者還可以使用接口刪除當前使用的自定義菜單,刪除菜單的接口如下:
https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=[ACCESS_TOKEN]
正確時的返回JSON數據包如下:
{“errcode”:0, “errmsg”:”ok”}
語音識別
微信公眾賬號通過微信認證后可以獲得語音識別接口,開啟語音識別功能以后,用戶每次發送語音給微信賬號時,微信會在推送的語音消息XML數據包中增加一個Recognition字段,該字段為依雲識別出的文本內容。如下是開啟語音識別后的語音XML數據包示例:
1 <xml> 2 <ToUserName><![CDATA[toUser]]></ToUserName> 3 <FromUserName><![CDATA[fromUser]]></FromUserName> 4 <CreateTime>1357290913</CreateTime> 5 <MsgType><![CDATA[voice]]></MsgType> 6 <MediaId><![CDATA[media_id]]></MediaId> 7 <Format><![CDATA[Format]]></Format> 8 <Recognition><![CDATA[騰訊微信團隊]]></Recognition> 9 <MsgId>1234567890123456</MsgId> 10 </xml>
每個參數的說明參見下圖:
前文Force.com微信開發系列(三)申請測試賬號及回復圖文消息中已經包含了如何解析該節點的值,並且在相應的IncomingMsg類里面也包含了該屬性,接下來需要做的是在doPost方法里的判斷消息類型部分添加對聲音類型消息的處理代碼:
1 else if(msgType.equals('voice')){ 2 rtnMsg = handleVoice(inMsg); 3 }
這里我們識別消息類型為voice類型后調用handleVoice方法並傳遞IncomingMsg對象來處理聲音,handleVoice方法代碼如下:
1 private static String handleVoice(IncomingMsg msg){ 2 String result = '您說了: ' + msg.recognition; 3 return composeTextReply(msg, result); 4 }
代碼讀取了騰訊平台識別后傳遞過來的XML問中Recognition節點的內容並返回給用戶,保存代碼后嘗試發送語音給微信測試賬號,運行效果如下: