文章分类 Classification
微信完整判断消息类型
稿件来源: 阳光企业网站管理系统 撰稿作者: 太阳光 发表日期: 2014-04-25 阅读次数: 943 查看权限: 游客查看
微信最基本的就是判断消息类型,根据不同的信息我们可以作出不同的反应。
从新用户关注微信公众平台,就产生一个订阅事件,即subscribe事件,默认代码中没有对这一事件进行相应回复处理。
在新用户关注公众平台后,所有粉丝发送的信息或者点击菜单都会推送一个事件到服务器微信目前提供了五种消息类型,分别为:
- 文本消息(text);
- 图片消息(image);
- 地理位置消息(location);
- 链接消息(link);
- 事件推送(event);
接收到消息后,首先需要对消息类型做出判断,然后再针对不同类型的消息做出处理。在事件推送中,事件类型又分为三种,subscribe(订阅)、unsubscribe(取消订阅)、CLICK(自定义菜单点击事件),还需要再加一次判断;判断为subscribe事件后,根据设定好的欢迎消息,回复给用户。
<?php header('Content-Type: text/html; charset=UTF-8'); define("TOKEN", "scscms"); $wechatObj = new wechatCallbackapiTest(); $wechatObj->valid(); class wechatCallbackapiTest { private $fromUsername; private $toUsername; private $times; public function valid() { if (isset($_GET['echostr'])) { if($this->checkSignature()){ echo $_GET["echostr"]; exit(); } }else{ $this-> responseMsg(); } } private function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } } public function responseMsg() { $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; if (!empty($postStr)){ $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $this->fromUsername = $postObj->FromUserName;//发送信息方ID $this->toUsername = $postObj->ToUserName;//接收信息方ID $this->times = time();//发送时间 $Content = trim($postObj->Content);//用户发送的消息 $msgType = $postObj->MsgType;//消息类型 $MsgId = $postObj->MsgId; //$msgType == 'event'不存在此值 $Event = $postObj->Event;//获取事件类型 if($msgType == 'event'){ //判断微信自定义响应事件 if($Event == 'subscribe'){ //订阅、关注 事件 $EventKey = $postObj->EventKey;//同时带入二维码的key }else if($Event == 'unsubscribe'){ //退订阅事件 }else if($Event == 'SCAN'){ //用户已关注时的事件推送 $EventKey = $postObj->EventKey; //是一个32位无符号整数,即创建二维码时的二维码scene_id $Ticket = $postObj->Ticket; //二维码的ticket,可用来换取二维码图片 }else if(strtoupper($Event) == 'LOCATION'){ //上报地理位置事件 $latitude = $postObj->Latitude; //地理位置纬度 $longitude = $postObj->Longitude; //地理位置经度 $precision = $postObj->Precision; //地理位置精度 }else if($Event == 'VIEW'){ //点击菜单跳转链接时的事件推送 $webUrl = $postObj->EventKey; //跳转页面地址 }else if($Event == 'CLICK'){ //点击菜单拉取消息时的事件推送 $EventKey = $postObj->EventKey; //菜单对应的key } }else if($msgType == 'text'){ //文本消息(text); }else if($msgType == 'image'){ $PicUrl = $postObj->PicUrl; //图片消息url $MediaId = $postObj->MediaId; //图片消息媒体id }else if($msgType == 'voice'){ $MediaId = $postObj->MediaId; //媒体ID $Format = $postObj->Format; //语音文件格式 $postObj->Recognition; //语音识别结果 }else if($msgType == 'video'){ $MediaId = $postObj->MediaId;//语音消息媒体id $postObj->ThumbMediaId; //视频消息缩略图的媒体id }else if($msgType == 'location'){ $Location_X = $postObj->Location_X; //地理位置维度 $Location_Y = $postObj->Location_Y; //地理位置经度 $Scale = $postObj->Scale; //地图缩放大小 $Label = $postObj->Label; //地理位置信息 }else if($msgType == 'link '){ $Title = $postObj->Title; $Description = $postObj->Description; $Url = $postObj->Url; } } } } ?>
关键词: 微信,微信开发,消息类型 编辑时间: 2014-04-25 17:38:16
0
高兴0
支持0
搞笑0
不解0
谎言0
枪稿0
震惊0
无奈0
无聊0
反对0
愤怒
0%(0)
0%(0)
- 中搜索:微信完整判断消息类型
- 中搜索:微信完整判断消息类型
- 暂无评论
文章图片 article Pictrue
网友评论