你所在的位置:微信群>互联网推广>正文

微信公众平台常用接口-自动回复消息

原创
发布时间: 2023-07-11 10:57:44 热度: 233 作者: 李斯特 来源: 微信加 本文共 12903 字 阅读需要 44 分钟
微信公众账号常用的回复用户的消息类型有文本、音乐、图文等。其中图文又可分为单图文和多图文。下面分别进行介绍。

微信公众账号常用的回复用户的消息类型有文本、音乐、图文等。其中图文又可分为单图文和多图文。下面分别进行介绍。

文本消息

微信公众账号向用户回复文本消息的示例如图 4-5 所示。

图 4-5 公众账号回复文本消息

微信公众账号回复用户文本消息时的 XML 数据格式如下所示:

<![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]> <![CDATA[gh_680bdefc8c5d]]> 1359036631 <![CDATA[text]]> <![CDATA[【深圳】天气实况 温度:27℃ 湿度:59% 风速:东北风 3 级 11 月 03 日 周日 27℃~23℃ 小雨 东北风 4-5 级 11 月 04 日 周一 26℃~21℃ 阵雨 微风 11 月 05 日 周二 27℃~22℃ 阴 微风]]>

公众账号回复文本消息的参数及描述如表 4-5 所示。

表 4-5 文本消息的参数及描述

音乐消息

微信公众账号向用户回复音乐消息的示例如图 4-6 所示。

图 4-6 公众账号回复音乐消息

微信公众账号回复用户音乐消息时的 XML 数据格式如下所示:

     <![CDATA[ollB4jqgdO_cRnVXk_wRnSywgtQ8]]>      <![CDATA[gh_b629c48b653e]]>      1372310544      <![CDATA[music]]>                  <![CDATA[最炫民族风]]>            <![CDATA[凤凰传奇]]>      <![CDATA[http://zj189.cn/zj/download/music/zxmzf.mp3]]>      <![CDATA[http://zj189.cn/zj/download/music/zxmzf.mp3]]>      

公众账号回复音乐消息的参数及描述如表 4-6 所示。

表 4-6 音乐消息的参数及描述

图文消息

图文信息可以分为单图文消息和多图文消息,实现它们的代码是一样的,但在微信上的显示方式上有细小区别。

微信公众账号向用户回复单图文消息的示例如图 4-7 所示。

图 4-7 公众账号回复单图文消息

微信公众账号回复用户单图文消息的 XML 数据格式如下所示:

     <![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]>      <![CDATA[gh_680bdefc8c5d]]>      1359011899      <![CDATA[news]]>      <![CDATA[]]>      1                                 <![CDATA[[苹果产品信息查询]]>                 <![CDATA[序列号:USE IMEI NUMBER                                     IMEI 号:358031058974471                                     设备名称:iPhone 5C                                     设备颜色:                                     设备容量:                                     激活状态:已激活                                     电话支持:未过期[2014-01-13]                                     硬件保修:未过期[2014-10-14]                                     生产工厂:中国]]>       <![CDATA[http://www.doucube.com/weixin/weather/ icon/banner.jpg]]>                <![CDATA[]]>                

微信公众账号向用户回复多图文消息的示例如图 4-8 所示。

图 4-8 公众账号回复多图文消息

微信公众账号回复用户多图文消息时的 XML 数据格式如下所示:

     <![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]>      <![CDATA[gh_680bdefc8c5d]]>      1359011829      <![CDATA[news]]>      <![CDATA[]]>      5                                 <![CDATA[【深圳】实况 温度:6℃ 湿度:62﹪ 风速:东北风 2 级]]>                 <![CDATA[]]>                 <![CDATA[http://www.doucube.com/weixin/weather/icon/banner.jpg]]>                 <![CDATA[]]>                                    <![CDATA[建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。]]>                <![CDATA[]]>                <![CDATA[http://www.doucube.com/weixin/weather/icon/d00.gif]]>                <![CDATA[]]>                                           <![CDATA[02 月 12 日 周三 10℃~6℃ 阴 微风]]>                   <![CDATA[]]>                   <![CDATA[http://www.doucube.com/weixin/weather/icon/d00.gif]]>                   <![CDATA[]]>                                                <![CDATA[02 月 13 日 周四 11℃~7℃ 小雨 微风]]>                    <![CDATA[]]> <![CDATA[http://www.doucube.com/weixin/weather/ icon/d01.gif]]>                  <![CDATA[]]>                                           <![CDATA[02 月 14 日 周五 11℃~8℃ 小雨 东北风 3-4 级]]>                   <![CDATA[]]>             <![CDATA[http://www.doucube.com/weixin/weather/icon/d01.gif]]>             <![CDATA[]]>            

公众账号回复图文消息的参数及描述如表 4-7 所示。

表 4-7 图文消息的参数及描述

在单图文消息中,标题、描述、图片分开显示在各处,图片为大图。在多图文信息中,每条信息将只显示标题的内容,描述字段中的内容不会显示,第一条消息标题与图片层叠,显示在上方,从第二条消息开始,对应的图片显示为小图。

回复消息代码实现

本节将上述类型的响应消息通过代码实现,以便读者理解。具体代码如下所示:

<?php // // 响应用户消息 // 微信公众账号响应给用户的不同消息类型 // define(「TOKEN」, 「weixin」); $wechatObj = new wechatCallbackapiTest(); if  (!isset($_GET[『echostr』])) {     $wechatObj->responseMsg(); }else{     $wechatObj->valid(); } class wechatCallbackapiTest {      public function valid()      {            $echoStr = $_GET[「echostr」];            if($this->checkSignature()){                echo $echoStr;                exit;            }      }      private function checkSignature()      {            $signature = $_GET[「signature」];            $timestamp = $_GET[「timestamp」];            $nonce = $_GET[「nonce」];            $token = TOKEN;            $tmpArr = array($token, $timestamp, $nonce);            sort($tmpArr);            $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);                 $RX_TYPE = trim($postObj->MsgType);                 //用户发送的消息类型判断                 switch ($RX_TYPE)                 {                      case 「text」:                            $result = $this->receiveText($postObj);                            break;                      case 「image」:                            $result = $this->receiveImage($postObj);                            break;                      case 「voice」:                            $result = $this->receiveVoice($postObj);                            break;                      case 「video」:                            $result = $this->receiveVideo($postObj);                            break;                      default:                            $result = 「unknow msg type: 」.$RX_TYPE;                            break;                 }                 echo $result;           }else {                 echo 「」;                 exit;           }      }      private function receiveText($object)      {            $keyword = trim($object->Content);            if($keyword == 「文本」){                //回复文本消息                $content = 「这是个文本消息」;                $result = $this->transmitText($object, $content);            }            else if($keyword == 「单图文」){                 //回复单图文消息                 $content = array();                 $content[] = array(「Title」=>「单图文标题」,                                                「Description」=>「单图文内容」, 「PicUrl」=>「http://discuz.comli.com/weixin/weather/icon/cartoon.jpg」,                                                「Url」 =>「http://m.cnblogs. com/?u=txw1958」);                       $result = $this->transmitNews($object, $content);                }                else if($keyword == 「多图文」){                      //回复多图文消息                      $content = array();                      $content[] = array(「Title」=>「多图文 1 标题」, 「Description」=>「」, 「PicUrl」=>「http://discuz.comli.com/weixin/weather/icon/cartoon.jpg」, 「Url」 =>「http://m.cnblogs.com/?u=txw1958」);                      $content[] = array(「Title」=>「多图文 2 标题」, 「Description」=>「」, 「PicUrl」=>「http://d.hiphotos.bdimg.com/wisegame/pic/item/f3529822720e0cf3ac9f1ada0846f21fbe09aaa3.jpg」, 「Url」 =>「http://m.cnblogs.com/?u=txw1958」);                      $content[] = array(「Title」=>「多图文 3 标题」, 「Description」=>「」, 「PicUrl」=>「http://g.hiphotos.bdimg.com/wisegame/pic/item/18cb0a46f21fbe090d338acc6a600c338644adfd.jpg」, 「Url」 =>「http://m.cnblogs.com/?u=txw1958」);                      $result = $this->transmitNews($object, $content);                }                else if($keyword == 「音乐」){                      //回复音乐消息                      $content = array(「Title」=>「最炫民族风」,                      「Description」=>「歌手:凤凰传奇」,                      「MusicUrl」=>「http://121.199.4.61/music/zxmzf.mp3」,                      「HQMusicUrl」=>「http://121.199.4.61/music/zxmzf.mp3」);                      $result = $this->transmitMusic($object, $content);                }                return $result;         }         private function receiveImage($object)         {              //回复图片消息              $content = array(「MediaId」=>$object->MediaId);              $result = $this->transmitImage($object, $content);;              return $result;         }         private function receiveVoice($object)         {               //回复语音消息               $content = array(「MediaId」=>$object->MediaId);               $result = $this->transmitVoice($object, $content);;               return $result;         }         private function receiveVideo($object)         {               //回复视频消息               $content = array(「MediaId」=>$object->MediaId, 「ThumbMediaId」=>$object->ThumbMediaId, 「Title」=>「」, 「Description」=>「」);               $result = $this->transmitVideo($object, $content);;               return $result;         }                 /*          * 回复文本消息          */         private function transmitText($object, $content)         {               $textTpl = 「 <![CDATA[%s]]> <![CDATA[%s]]> %s <![CDATA[text]]> <![CDATA[%s]]> 」;               $result = sprintf($textTpl, $object->FromUserName, $object-> ToUserName, time(), $content);                return $result;         }         /*          * 回复图片消息          */         private function transmitImage($object, $imageArray)         {               $itemTpl = 「          <![CDATA[%s]]> 」;               $item_str = sprintf($itemTpl, $imageArray[『MediaId』]);               $textTpl = 「 <![CDATA[%s]]> <![CDATA[%s]]> %s <![CDATA[image]]> $item_str 」;               $result = sprintf($textTpl, $object->FromUserName, $object-> ToUserName, time());               return $result;         }         /*          * 回复语音消息          */         private function transmitVoice($object, $voiceArray)         {               $itemTpl = 「          <![CDATA[%s]]> 」;               $item_str = sprintf($itemTpl, $voiceArray[『MediaId』]);               $textTpl = 「 <![CDATA[%s]]> <![CDATA[%s]]> %s <![CDATA[voice]]> $item_str 」;               $result = sprintf($textTpl, $object->FromUserName, $object-> ToUserName, time());               return $result;        }         /*          * 回复视频消息          */         private function transmitVideo($object, $videoArray)         {               $itemTpl = 「」;               $item_str = sprintf($itemTpl, $videoArray[『MediaId』], $videoArray[『ThumbMediaId』], $videoArray[『Title』], $videoArray[『Description』]);               $textTpl = 「 <![CDATA[%s]]> <![CDATA[%s]]> %s <![CDATA[video]]> $item_str 」;              $result = sprintf($textTpl, $object->FromUserName, $object-> ToUserName, time());              return $result;         }         /*          * 回复图文消息          */         private function transmitNews($object, $arr_item)         {                if(!is_array($arr_item))                     return;                $itemTpl = 「                    <![CDATA[%s]]>                <![CDATA[%s]]>                <![CDATA[%s]]>                <![CDATA[%s]]>           」;                $item_str = 「」;                foreach ($arr_item as $item)                      $item_str .= sprintf($itemTpl, $item[『Title』], $item[『Description』], $item[『PicUrl』], $item[『Url』]);                $newsTpl = 「 <![CDATA[%s]]> <![CDATA[%s]]> %s <![CDATA[news]]> <![CDATA[]]> %s $item_str 」;              $result = sprintf($newsTpl, $object->FromUserName, $object-> ToUserName, time(), count($arr_item));              return $result;         }         /*          * 回复音乐消息          */        private function transmitMusic($object, $musicArray)        {              $itemTpl = 「        <![CDATA[%s]]>        <![CDATA[%s]]>        <![CDATA[%s]]>        <![CDATA[%s]]> 」;        $item_str = sprintf($itemTpl, $musicArray[『Title』], $musicArray[『Description』], $musicArray[『MusicUrl』], $musicArray[『HQMusicUrl』]);        $textTpl = 「 <![CDATA[%s]]> <![CDATA[%s]]> %s <![CDATA[music]]> $item_str 」;              $result = sprintf($textTpl, $object->FromUserName, $object-> ToUserName, time());              return $result;        } } ?>

版权保护: 本文由 李斯特 原创,转载请保留链接: https://www.wechatadd.com/artdet/8920