PHP微信公众号开发入门(三)
2017-11-11 本文已影响0人
无聊的电风扇
上一篇文章已经介绍了如何回复图片,文字,图文,这篇再来介绍一下其他格式的内容回复方式。
微信规定个人开发者,也就是订阅号无法通过微信认证,也就导致了很多好玩的功能我们都不能用,但是简单的公众号开发已经足够了。
1.音频
根据官方文档显示,我们需要在给用户回复音频的时候,需要发送给微信方一个这样的xml
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[music]]></MsgType>
<Music>
<Title><![CDATA[TITLE]]></Title>
<Description><![CDATA[DESCRIPTION]]></Description>
<MusicUrl><![CDATA[MUSIC_Url]]></MusicUrl>
<HQMusicUrl><![CDATA[HQ_MUSIC_Url]]></HQMusicUrl>
<ThumbMediaId><![CDATA[media_id]]></ThumbMediaId>
</Music>
</xml>

官方给出的说明中,ThumbMediaId是必填,但是这需要我们调用微信的素材上传接口,而后获取素材的id,但是我们个人开发者并没有 这个权限,所以我们只能发送给微信一条这样的xml
<xml>
<ToUserName>%s</ToUserName>
<FromUserName>%s</FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[music]]></MsgType>
<Music>
<Title><![CDATA[talking to the moon]]></Title>
<Description><![CDATA[火星哥(Bruno Mars)深情演唱]]></Description>
<MusicUrl><![CDATA[http://helper.aaa.com/music.mp3]]></MusicUrl>
<HQMusicUrl><![CDATA[http://helper.aaa.com/music.mp3]]></HQMusicUrl>
</Music>
</xml>
之后我们再通过代码来整理为自己需要的xml,发送给微信方就可以了,这样用户就会接收到一条这样的消息。还有就是现在mp3文件的URL不是很好找啊……

2.视频
同样的,先看文档,微信需要我们给他这样的xml
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[video]]></MsgType>
<Video>
<MediaId><![CDATA[media_id]]></MediaId>
<Title><![CDATA[title]]></Title>
<Description><![CDATA[description]]></Description>
</Video>
</xml>
可以看到,我们仍然需要提供素材,也就是视频的MediaId,之后再组合xml,返回就可以了。
3.接受语音消息
在用户像我们的公众号发送语音消息的时候,我们会收到一条这样的xml
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[voice]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<Format><![CDATA[Format]]></Format>
<Recognition><![CDATA[你好啊]]></Recognition>
<MsgId>1234567890123456</MsgId>
</xml>

还是像原来一样获取之后处理就可以了。这里,终于有一个个人订阅号可以使用的便捷功能了,那就是语音识别。
先去 开发->接口权限 中打开语音识别。

而后用户再像我们发送语音文件时,微信会自动识别,并且把识别结果保存在Recognition,我们直接按照需求获取即可。
就像这样

4.另外我还弄了个简单的聊天机器人
有一个功能还不错,完全免费的聊天机器人接口
http://api.qingyunke.com
直接贴代码了
$msgType = "text"; //消息类型
$file_contents = file_get_contents('http://api.qingyunke.com/api.php?key=free&appid=0&msg='.$keyword);
$str = json_decode($file_contents);
$ob = $str->content;
$newStr = str_replace('{br}', "\n", $ob);
$contentStr = $newStr;
$resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
echo $resultStr;
用这个接口主要是因为完全免费,平时自己开发着玩玩还是不错的。

会了这些,你做一些简单的开发都是可以的了,就差个数据库。你可以通过框架连接,或者PDO什么的都可以,这就不多说了,总系希望可以对您有所帮助,谢谢。