首先我们要确定我们接收到的是用户的语音信息,在微信公众号中消息分为以下几类
被关注:subscribe
取消关注:unsubscribe
文本:text
图片:image
语音:voice
视频:video
小视频:shortvideo
地理位置:location
连接消息:link
要确保这里的接受语音识别结果接口是开启的,微信公众号默认是开启的,但是还是要去确认一遍,如果关闭了再次打开就好了
而我们需要的是语音消息也就是voice,所以这时候在代码中就应该是
//
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$RX_TYPE = trim($postObj->MsgType);
if($RX_TYPE=='voice')
{
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Recognition);//这里就是微信自带的语音识别返回的识别到的文本,然后格式化输出到公众号就ok了
$time = time();
$msgType = "text";
$contentStr = "你发送的是语音\n内容为:\n"."$keyword";
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
</xml>";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}