千家信息网

php开发微信公众平台接口智能回复的示例分析

发表于:2024-11-29 作者:千家信息网编辑
千家信息网最后更新 2024年11月29日,这篇文章主要为大家展示了"php开发微信公众平台接口智能回复的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"php开发微信公众平台接口智能回复的示
千家信息网最后更新 2024年11月29日php开发微信公众平台接口智能回复的示例分析

这篇文章主要为大家展示了"php开发微信公众平台接口智能回复的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"php开发微信公众平台接口智能回复的示例分析"这篇文章吧。

具体如下:

智能回复是根据用户输入的条件来反馈结果用用户了,这个小编以前有做过信整理了一些例子供各位参考,比较完整主要是介绍在开发端了。

微信自推出后,着实火了一把,而支付功能的推出,又把微信推到了一个无可比拟的高度,然后申请微信订阅号或者服务号的人也开始比肩接踵。下面我将给大家简单讲解下微信公众平台开发接口。

先去 微信公众平台 申请账号,然后按照提示一步步。在选择订阅号和服务号上,个人只能申请订阅号,而且局限于基础功能;而企业两者都可以申请。订阅号和服务号的区别在于:订阅号可以每天群发一条消息,而服务号一个月才能群发一条;订阅号需要微信认证才能自定义菜单(企业才能认证,认证300元一次),而服务号则一开始就有自定义菜单,但是也可以认证,认证后服务号直接升级高级功能。更多差异请百度...

我申请的是订阅号,因为是个人。只要传一张手捧身份证的人头照就可以了,虽然有点傻。然后等待信息登记审核(一天左右时间)。通过后直接进入 微信公众平台 ,点击功能进入高级功能,关闭编辑模式,开启开发模式,然后下载微信提供的demo,解压,就一个文件:wx_sample.php,代码如下:

valid();class wechatCallbackapiTest{ public function valid()  {    $echoStr = $_GET["echostr"];    //valid signature , option    if($this->checkSignature()){     echo $echoStr;     exit;    }  }  public function responseMsg()  { //get post data, May be due to the different environments $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];    //extract post data if (!emptyempty($postStr)){        $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);        $fromUsername = $postObj->FromUserName;        $toUsername = $postObj->ToUserName;        $keyword = trim($postObj->Content);        $time = time();        $textTpl = "            %s            0    ";  if(!emptyempty( $keyword ))        {        $msgType = "text";         $contentStr = "Welcome to wechat world!";         $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);         echo $resultStr;        }else{         echo "Input something...";        }    }else {     echo "";     exit;    }  } 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; } }}?>

其实就是认证,然后发送消息。将文件传到你的服务器上,我放在根目录下,然后修改开发模式下的url和token值。假设这里使用的url是http://www.jb51.net/wx_sample.php,token就是上面define的token,这个可以改的,只要两边保持一致,默认是weixin。然后点提交,就会提示你成功了。然后扫下你申请的号码,发个消息,你会发现没反应,这个时候我们需要小调整一下,关闭接口文档中调用认证的方法,开启调用处理回复信息的方法:

//$wechatObj->valid();$wechatObj->responseMsg();

这个时候你再发个消息,你就会收到:Welcome to wechat world!

是不是在关注了有些订阅号或者服务号之后,马上会收到一条消息。什么回复1,怎样怎样;回复2,怎样怎样之类的。

那这个怎么实现呢?直接上代码:

valid();$wechatObj->responseMsg();class wechatCallbackapiTest{  public function valid()  {    $echoStr = $_GET["echostr"];    //valid signature , option    if($this->checkSignature()){      echo $echoStr;      exit;    }  }  public function responseMsg()  {    //get post data, May be due to the different environments    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];    //extract post data    if (!empty($postStr)){      $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);      $fromUsername = $postObj->FromUserName;      $toUsername = $postObj->ToUserName;      $keyword = trim($postObj->Content);      $time = time();      $MsgType = $postObj->MsgType; //add      $textTpl = "                        %s                        0        ";      if($MsgType != 'event') {        if(!empty( $keyword ))        {          $msgType = "text";          $contentStr = "Welcome to wechat world!";        }else{          echo "Input something...";        }      } else {        $msgType = "text";        $contentStr = "感谢您关注AndyYang个人博客微信小助手。\r\n".          "回复【1】返回两篇最新文章\r\n".          "回复【2】返回两篇人气文章\r\n".          "回复【3】返回两篇热评文章\r\n".          "回复【4】返回两篇最新技术文章\r\n".          "回复【5】返回两篇最新写作文章\r\n".          "回复其他返回搜索关键字的两篇文章\r\n".          "更多精彩内容,尽在:www.jb51.net。亲们,请多多支持哦,谢谢~";        ;      }      $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);      echo $resultStr;    }else {      echo "";      exit;    }  }  private function checkSignature()  {    $signature = $_GET["signature"];    $timestamp = $_GET["timestamp"];    $nonce = $_GET["nonce"];    $token = TOKEN;    $tmpArr = array($token, $timestamp, $nonce);    sort($tmpArr, SORT_STRING); //这个在新的sdk中添加了第二个参数(compare items as strings)    $tmpStr = implode( $tmpArr );    $tmpStr = sha1( $tmpStr );    if( $tmpStr == $signature ){      return true;    }else{      return false;    }  }}

当然这里只是简单的实现下,在微信公众平台提供的sdk上做简单的修改,实际上msgtype类型很多,就算消息类型为event的,它里面也有subscribe、LOCATION等,而如果细化的话,就用Event为subscribe来处理初次关注的事件,代码如下:

weixin_run();class wechatCallbackapiTest {  private $fromUsername;  private $toUsername;  private $times;  private $keyword;  private $MsgType;  public function responseMsg() { $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; if (!emptyempty($postStr)) {      $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);      $this->fromUsername = $postObj->FromUserName;      $this->toUsername  = $postObj->ToUserName;      $this->keyword   = trim($postObj->Content);      $this->time     = time();      $this->MsgType   = $postObj->MsgType;    } else {     echo "Pay attention to http://{$_SERVER['HTTP_HOST']},thanks!";     exit;    }  }  public function weixin_run() {    $this->responseMsg();    if($this->MsgType != 'event') { //attention      $data = $this->getData();     $this->fun_xml("news", $data, count($data));    } else {      $data = $this->getWelData();     $this->fun_xml("text", $data, 1);    }  } //type: text 文本类型, news 图文类型 //text,array(内容),array(ID) //news,array(array(标题,介绍,图片,超链接),...小于10条),条数 private function fun_xml($type, $value_arr, $count) {   $con="   fromUsername}]]>   toUsername}]]>   {$this->times}   ";    switch($type) {     case "text" :   $con.="";     break;   case "news" :   $con.="{$count}    ";   foreach($value_arr as $key => $v) {      $con.="       <![CDATA[{$v[0]}]]>                            ";   }   $con.="";     break;   }   echo $con.""; }  private function getData() {    //数据库通过关键字查询文章    //。。。。。。。。。。。。    //。。。。。。。。。。。。    //返回文章结果的数组    return $data;  }  private function getWelData() {    $data = "感谢您关注AndyYang个人博客微信小助手。\r\n".          "回复【1】返回两篇最新文章\r\n".          "回复【2】返回两篇人气文章\r\n".          "回复【3】返回两篇热评文章\r\n".          "回复【4】返回两篇最新技术文章\r\n".          "回复【5】返回两篇最新写作文章\r\n".          "回复其他返回搜索关键字的两篇文章\r\n".          "更多精彩内容,尽在:www.jb51.net。亲们,请多多支持哦,谢谢~";        ;    return $data;  }}

以上是"php开发微信公众平台接口智能回复的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0