Salesforce Force.com Site 集成微信公众平台 (六) 语音识别

这一章我们讲一下微信的语音识别处理功能,微信公众账号通过微信认证后可以获得语音识别接口,开启语音识别功能以后,用户每次发送语音给微信账号时,微信会在推送的语音消息 XML 数据包中,增加一个 Recognition 字段,该字段为语音识别出的文本内容。下面是开启语音识别后的 XML 数据包示例:

<xml>  
<ToUserName><![CDATA[toUser]]></ToUserName>  
<FromUserName><![CDATA[fromUser]]></FromUserName>  
<CreateTime>2357291913</CreateTime>  
<MsgType><![CDATA[voice]]></MsgType>  
<MediaId><![CDATA[media_id]]></MediaId>  
<Format><![CDATA[Format]]></Format>  
<Recognition><![CDATA[腾讯微信团队]]></Recognition>  
<MsgId>Msg Id</MsgId>  
</xml>  

解释 XML 格式如下:

接下来我们把声音类型消息的处理代码添加到 doPost 方法里:

else if(msgType.equals('voice'))  
{
     rtnMsg = handleVoice(receiveMsg);
}

这里我们识别消息类型为 voice 类型,在这个 if 语句中调用了 handleVoice 方法并传递 ReceiveMsg 对象来处理声音,handleVoice 方法代码如下:

private static String handleVoice(ReceiveMsg msg)  
{
    String result = '您说了: ' + msg.recognition;
    return composeTextReply(msg, result);
}

代码读取了腾讯平台识别后传递过来的 XML 内容,其中 Recognition 节点的内容是语音转化后的文本内容。保存代码后尝试发送语音给微信测试账号,测试了两条语音,结果并没有得到语音内容。之后在公众测试账号的体验接口权限表中发现 接收语音识别结果 接口并未开启,如下图所示:

开启后再次测试,显示内容如下:

注:由于客户端缓存,开发者开启或者关闭语音识别功能,对新关注者立刻生效,对已关注用户需要24小时生效。开发者可以重新关注此帐号进行测试。

Samba

Read more posts by this author.