首先请下载并安装鱼渔微信开发包。
接收语音消息的官方文档参见:接收普通消息,配合本次课程,开发包中会专门有一个教学文件tool/send_and_response.php,代码如下:
<?phprequire_once dirname(__FILE__) . '/../common/Common.php';$account = 'YUYU';$options = array('token'=>WEIXIN_TOKEN,'appid'=>$GLOBALS['APP_INFO'][$account]['appId'],'appsecret'=>$GLOBALS['APP_INFO'][$account]['appSecret'],'debug'=>(DEBUG == 'true')?true:false,'logcallback'=>'yuyuLog');$weObj = new YuyuWeChat($options);if (!$weObj->debug) $weObj->valid();$type = $weObj->getRev()->getRevType();switch($type) { case Wechat::MSGTYPE_TEXT: $response = $weObj->getRevContent(); $weObj->text($response)->reply_exit(); break; case Wechat::MSGTYPE_IMAGE: $response = $weObj->getRevPic(); $weObj->text($response)->reply_exit(); break; case Wechat::MSGTYPE_VOICE: $response = $weObj->getRevVoice(); $response = json_encode($response); $weObj->text($response)->reply_exit(); break; default: $weObj->text("help info")->reply();}?>注意上述代码里的json_encode是php的一个函数,把数组转换为json格式的字符串,然后通过text函数,组装成xml形式的文本消息,返回给微信服务器,详见下面的日志记录。当然返回一个json字符串对用户没有任何意义,这里只是便于大家学习,产品应用中应该参照【八】鱼渔微信开发初级教程 - 发送并显示多媒体文件 的说明,直接向用户展示语音条。getRevVoice函数出自开发包中的common/wechat-php-sdk/wechat.html' target='_blank'>class.php:
/** * 获取接收语言推送 */ public function getRevVoice(){ if (isset($this->_receive['MediaId'])){ return array( 'mediaid'=>$this->_receive['MediaId'], 'format'=>$this->_receive['Format'], ); } else return false; }判断接收消息中是否包含MediaId,如果有,返回包含MediaId和Format的数组,如果没有,返回fasle。
在run.php的最前面加上:
require_once dirname(__FILE__) . '/tool/send_and_response.php';exit;在手机微信里以对讲机的方式上传一句语音,结果如下:
日志如下:
**********************[2014-04-15 17:10:51 118] [6412]**********************[wechat-php-sdkwechat.class.php] [194] [getRev]<xml> <ToUserName><![CDATA[gh_7eb72a2f76ab]]></ToUserName> <FromUserName><![CDATA[oL5xDuNHKJ_Fwv9qzR-GneFWhY08]]></FromUserName> <CreateTime>1397553054</CreateTime> <MsgType><![CDATA[voice]]></MsgType> <MediaId><![CDATA[iCyns87xVYOdnicxdesQ47QnkoObi05hINQMuCJA9VtVZmHrUgkLwdHZPYYncJxW]]></MediaId> <Format><![CDATA[amr]]></Format> <MsgId>6002444661555089771</MsgId> <Recognition><![CDATA[]]></Recognition></xml>**********************[2014-04-15 17:10:51 119] [6412]**********************[wechat-php-sdkwechat.class.php] [508] [reply]<xml> <ToUserName><![CDATA[oL5xDuNHKJ_Fwv9qzR-GneFWhY08]]></ToUserName> <FromUserName><![CDATA[gh_7eb72a2f76ab]]></FromUserName> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[{"mediaid":"iCyns87xVYOdnicxdesQ47QnkoObi05hINQMuCJA9VtVZmHrUgkLwdHZPYYncJxW","format":"amr"}]]></Content> <CreateTime><![CDATA[1397553051]]></CreateTime> <FuncFlag><![CDATA[0]]></FuncFlag></xml>注意微信内部语音采用amr的格式,适合手机网络应用。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答