首页 > 代码库 > 微信公众平台API测试——接收视频消息
微信公众平台API测试——接收视频消息
一、简介
当普通微信用户向公众账号发消息时,微信服务器将用户发送的消息封装成XML数据包,通过POST消息发送到开发者的URL上。
微信服务器在五秒内收不到服务器的响应会断掉连接,并且重新发起请求,总共重试三次。关于重试的消息排重,推荐使用msgid排重。
假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。
当前支持如下的普通消息:
- 1 文本消息
- 2 图片消息
- 3 语音消息
- 4 视频消息
- 5 地理位置消息
- 6 链接消息
二、适用场景
普通微信用户通过微信给公众账号发送的视频时,微信服务器将此视频信息封装为视频消息发送到开发者URL。服务器接收到此消息后,可以通过解析到的MediaId调用多媒体文件下载接口获取视频数据,根据解析到的ThumbMediaId可以调用多媒体文件下载接口获取视频消息缩略图。
三、消息格式说明
1 <xml> 2 <ToUserName><![CDATA[toUser]]></ToUserName> 3 <FromUserName><![CDATA[fromUser]]></FromUserName> 4 <CreateTime>1357290913</CreateTime> 5 <MsgType><![CDATA[video]]></MsgType> 6 <MediaId><![CDATA[media_id]]></MediaId> 7 <ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId> 8 <MsgId>1234567890123456</MsgId> 9 </xml>
参数 | 描述 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | 视频为video |
MediaId | 视频消息媒体id,可以调用多媒体文件下载接口拉取数据。 |
ThumbMediaId | 视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。 |
MsgId | 消息id,64位整型 |
四、代码示例
1 <?php 2 /** 3 * wechat php test 4 */ 5 6 //define your token 7 define("TOKEN", "weixin"); 8 $wechatObj = new wechatCallbackapiTest(); 9 $wechatObj->responseMsg(); 10 11 class wechatCallbackapiTest 12 { 13 public function responseMsg() 14 { 15 //get post data, May be due to the different environments 16 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 17 18 if (!empty($postStr)){ 19 $postObj = simplexml_load_string($postStr, ‘SimpleXMLElement‘, LIBXML_NOCDATA); 20 $MSG_TYPE = trim($postObj->MsgType); 21 22 switch ($MSG_TYPE) { 23 case "text": 24 $resultStr = $this->handleText($postObj); 25 break; 26 case "image": 27 $resultStr = $this->handleImage($postObj); 28 break; 29 case "voice": 30 $resultStr = $this->handleVoice($postObj); 31 break; 32 case "video": 33 $resultStr = $this->handleVideo($postObj); 34 break; 35 default: 36 $resultStr = "Unknow message type: " . $MSG_TYPE; 37 break; 38 } 39 //echo $postStr; 40 echo $resultStr; 41 }else { 42 echo ""; 43 exit; 44 } 45 } 46 47 private function handleVideo($postObj) 48 { 49 //获取视频消息媒体id,可以调用多媒体文件下载接口拉取视频 50 $mediaID = trim($postObj->MediaId); 51 52 //获取视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取缩略图 53 $thumbMediaId = trim($postObj->ThumbMediaId); 54 55 if(!empty($mediaID)){ 56 $contentStr = "MediaId : " . $mediaID ."\n" . "ThumbMediaId : " . $thumbMediaId . "\n"; 57 $resultStr = $this->responseText($postObj, $contentStr); 58 }else{ 59 $resultStr = "MediaId is empty."; 60 } 61 62 return $resultStr; 63 } 64 65 private function responseText($object, $content, $flag=0) 66 { 67 $textTpl = "<xml> 68 <ToUserName><![CDATA[%s]]></ToUserName> 69 <FromUserName><![CDATA[%s]]></FromUserName> 70 <CreateTime>%s</CreateTime> 71 <MsgType><![CDATA[text]]></MsgType> 72 <Content><![CDATA[%s]]></Content> 73 <FuncFlag>%d</FuncFlag> 74 </xml>"; 75 $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag); 76 return $resultStr; 77 } 78 79 } 80 81 ?>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。