php 回复信息 微信开发_php 开发关键字回复 微信 - CSDN
  • 今天跟大家分享一下微信自动回复功能开发,在这这次需要准备好自己的服务器(可以在外网上面访问的),以及在公众号上面进行服务器认证,并且开启服务器配置。 用户在给公众号发消息的时候,微信会把这些消息以xml...

          今天跟大家分享一下微信自动回复功能开发,在这这次需要准备好自己的服务器(可以在外网上面访问的),以及在公众号

    上面进行服务器认证,并且开启服务器配置。

      用户在给公众号发消息的时候,微信会把这些消息以xml格式的形式发送到开发者服务器对应的url上面;

    开发者接收到xml息之后,可以对其进行解析,然后根据消息的内容回发对应的内容给用户,回复的消息也是要以xml格式发送

    出去的。

    <xml> <ToUserName>< ![CDATA[toUser] ]></ToUserName> <FromUserName>< ![CDATA[fromUser] ]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType>< ![CDATA[text] ]></MsgType> <Content>< ![CDATA[你好] ]></Content> </xml>
    参数是否必须描述
    ToUserName接收方帐号(收到的OpenID)
    FromUserName开发者微信号
    CreateTime消息创建时间 (整型)
    MsgTypetext
    Content回复的消息内容(换行:在content中能够换行,微信客户端就支持换行显示)

       这里面有一个需要注意的就是,微信向开发者服务器发送请求的等待时间是5秒钟,如果开发者服务器5秒内不能回复,

    微信会重新发送请求(最多三次),三次之后还是不能再5秒内回复或者回复的内容微信无法进行解析,就会显示“该公众号无

    法提供服务”。如果无法保证在5秒内回复,可以回复一个空字符串,微信不会对这个消息做任何处理。

      因为微信发送到开发者服务器的消息类型比较多样化,有普通消息,关注事件,取消关注事件,按钮点击事件等。所以在设

    计自动回复功能的时候要充分考虑到程序的灵活性、可扩展性以及可维护性。

      这里我使用了“责任链设计模式”,定义一个处理接口,让每一个消息处理程序都实现这个接口;接收到请求的时候,把该请

    求传递到第一个处理程序类,每一个请求类里面都包含下一个处理程序类的引用;如果请求可以在该类里面处理则直接返回处理

    结果,否则流向下一个处理程序类,直至该请求被处理完毕。该模式的特点是,把处理请求的步骤进行分解,可以对复杂的判断

    条件进行分解,同时每一个处理程序都只有一个单一的职责,对其进行修改不会影响到其他处理程序类。另外,将每一个请求类

    xml文件的格式配置好,应用程序启动的时候,使用反射+IOC注入的方式实例化每一个处理程序类。

      首先创建一个页面,replyText.html


     我们创建两个数据表,

    rule表 :用来存储回复数据,id自增长 , mp_id是当前正在使用的公众号,keyword是用户输入的关键字,type在此为text,reply_id与reply_text表建立连接,status为当前状态(是否正在使用)。



    reply_text表 : reply_id作为主键,content为回复内容。

    (在此注意一点,在页面输入对应值后,要把数据统一添加到两个数据表中,add()方法成功返回主键值,可利用这点进行两表关联添加)



    public function replyText(){
            if(IS_GET){
                $this->display('replytext');
            }else{
                $mp = $this->mp;
                $mp_id = $mp['id'];
                $data = I('post.');
    
                $textret = M('reply_text')->add($data);
    
                if($textret){
                    $data['reply_id'] = $textret;
                    $data['mp_id'] = $mp_id;
                    $data['type'] = 'text';
                    if ($mp['is_use'] == 1){
                        $data['status'] = 1;
                    }else{
                        $data['status'] = 0;
                    }
                    $ret = M('rule')->add($data);
                    if ($ret) {
                        $this->ajaxReturn(array('msg'=>'添加成功!'));
                    }else{
                        $this->ajaxReturn(array('msg'=>$ret));
                    }
                }
            }
        }

    之前介绍过,我用的laneWeChat包,可以直接调用里边的方法,在wechatrequest.lib.php里的text方法中加入以下代码进行文本回复:

    //获取哪个公众号发过来的请求
            $mp_id = $_GET['id'];
    
            $content = $request['content'];
            $where['mp_id'] = $mp_id;
            $where['keyword'] = $content;
            $data = M('rule')->where($where)->find();
            if ($data) {
                //发送消息中有这个关键字
                $reply_id = $data['reply_id'];
                $type = $data['type'];
    
                if ($type == "text") {
                    $reply = M('reply_text')->find($reply_id);
                    $reply_text = $reply['content'];
                    return ResponsePassive::text($request['fromusername'], $request['tousername'], $reply_text);
                }
                
            }else{
                return 'success';
            }

    代码要一一写的话就有些多了,在此,只给小伙伴们分享以上代码,如果还有其他问题,欢迎留言提问哦~

    请大家多多关注,我会时刻更新的!

     
    展开全文
  • 它不仅仅是社交软件,还是手机支付工具,而且现在的公众号更是微信的一大特色,他可以对外宣传和介绍自己的产品,作为一名IT,我们不仅要会使用微信,还要进行微信的二次开发,接下来就给大家介绍一下微信开发的入门...

    微信,大家应该都不陌生了,应该说每个人都离不开微信,它不仅仅是社交软件,还是手机支付工具,而且现在的公众号更是微信的一大特色,他可以对外宣传和介绍自己的产品,作为一名IT,我们不仅要会使用微信,还要进行微信的二次开发,接下来就给大家介绍一下微信开发的入门。

    开发者首先要接入微信公众平台,这就需要我们编写代码来给两者开通一条道路:

    $echoStr = $_GET["echostr"];

    仅此一条就可以开通,但是这并不安全,以下是完整代码:

    <?php
    /**
      * wechat php test
      */
    //define your token
    define("TOKEN", "weixin");
    $wechatObj = new wechatCallbackapiTest();
    $wechatObj->valid();
    
    class wechatCallbackapiTest
    {
    	public function valid()
        {
        	if($this->checkSignature()==fslse){
        		die('非法请求');
        		exit();
        	}
            
            //valid signature , option
            if(isset($_GET["echostr"])){
            	$echoStr = $_GET["echostr"];
            	echo $echoStr;
            	exit();
            }else{
            	$this->responseMsg();
            }
    
    
            // if($this->checkSignature()){
            // 	echo $echoStr;
            // 	exit;
            // }
        }
        //自动回复
        public function responseMsg()
        {
    		//得到微信向公众号发送的消息接受消息
    		// $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
    		//存xml文件,tousername--微信公众号 fromusername--openid cratetime--是时间戳 <![]]>为了防止有特殊字符,里面的是数据,不是节点
    		$postStr=file_get_contents("php://input");
    		file_put_contents("msg.txt", $postStr,FILE_APPEND);
    		// $postObj=simplexml_load_string($postStr,'SimpleXMLElement',E)
    
    
          	//回复消息
    		if (!empty($postStr)){
                    
                  	$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                    $fromUsername = $postObj->FromUserName;
                    $toUsername = $postObj->ToUserName;
                    $keyword = trim($postObj->Content);
                    $time = time();
                    //xml模板%s占位符
                    $textTpl = "<xml>
    							<ToUserName><![CDATA[%s]]></ToUserName>
    							<FromUserName><![CDATA[%s]]></FromUserName>
    							<CreateTime>%s</CreateTime>
    							<MsgType><![CDATA[%s]]></MsgType>
    							<Content><![CDATA[%s]]></Content>
    							<FuncFlag>0</FuncFlag>
    							</xml>";             
    				if(!empty( $keyword ))
                    {
                    	//sprintf---返回一个字符串不做输出
                  		$msgType = "text";
                    	$contentStr = "欢迎使用测试账号!";
                    	$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                    	echo $resultStr;
                    }else{
                    	echo "Input something...";
                    }
    
    
            }else {
            	echo "";
            	exit;
            }
        }
    
    	//判断是否是腾讯提交,为了更加安全
    	private function checkSignature()
    	{
    //将token、timestamp、nonce三个参数进行字典序排序 2)将三个参数字符串拼接成一个字符串进行sha1加密 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
            $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 say($news){
                if($news == "天气"){
                    $content="今天天气阴天";
                    return $content;
                }else if($news == "放假吗"){
                    $content="清明放三天假";
                    return $content;
                }else{
                    $content="这个问题不知道怎么回复您!";
                   return $content;
                }
            }

    在回复消息方法里调用此方法就可以在微信里输入关键字来得到相应的回复了,大家学会了吗,赶紧打开电脑试一下吧。





    展开全文
  • 本文原创自news.mkq.online ...本文实例为大家分享了php微信开发之关键词回复的具体代码,供大家参考,具体内容如下 view sourceprint? 01 10 $wechatObj-&gt;responseMsg(); 11 class wechatCallbackapiT...

    本文原创自news.mkq.online
    本文地址:news.wpj.online
    版权声明:本文为原创文章,版权牛站www.niuzhan.com所有
    本文实例为大家分享了php微信开发之关键词回复的具体代码,供大家参考,具体内容如下

    view sourceprint?
    01

    10
    $wechatObj->responseMsg();
    11
    class wechatCallbackapiTest
    12
    {
    13
    public function valid()
    14
    {
    15
    $echoStr = $_GET[“echostr”];
    16

    17
    //valid signature , option
    18
    if($this->checkSignature()){
    19
    echo $echoStr;
    20
    exit;
    21
    }
    22
    }
    23

    24
    public function responseMsg()
    25
    {
    26
    //get post data, May be due to the different environments
    27
    $postStr = $GLOBALS[“HTTP_RAW_POST_DATA”];
    28

    29
    //extract post data
    30
    if (!empty($postStr)){
    31

    32
    postObj=simplexmlloadstring(postObj = simplexml_load_string(postStr, ‘SimpleXMLElement’, LIBXML_NOCDATA);
    33
    $fromUsername = $postObj->FromUserName;
    34
    $toUsername = $postObj->ToUserName;
    35
    keyword=trim(keyword = trim(postObj->Content);
    36
    $time = time();
    37
    $textTpl = “%s0”;
    38
    if(!empty( $keyword ))
    39
    {
    40
    msgType=&quot;text&quot;;41if(msgType = &quot;text&quot;; 41 if(keyword==“1”){
    42
    KaTeX parse error: Expected 'EOF', got '}' at position 23: …Str = "qiphon";}̲ 43 if(keyword==“2”){
    44
    KaTeX parse error: Expected 'EOF', got '}' at position 36: …环境违法行为举报奖励办法》";}̲ 45 if(keyword==“3”){
    46
    $contentStr = “31离婚协议\n32租房合同\n33交通事故协议书”;}
    47
    resultStr=sprintf(resultStr = sprintf(textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
    48
    echo $resultStr;
    49
    }else{
    50
    echo “Input something…”;
    51
    }
    52

    53
    }else {
    54
    echo “”;
    55
    exit;
    56
    }
    57
    }
    58

    59
    private function checkSignature()
    60
    {
    61
    $signature = $_GET[“signature”];
    62
    $timestamp = $_GET[“timestamp”];
    63
    $nonce = $_GET[“nonce”];
    64

    65
    $token = TOKEN;
    66
    tmpArr=array(tmpArr = array(token, $timestamp, nonce);67sort(nonce); 67 sort(tmpArr);
    68
    $tmpStr = implode( $tmpArr );
    69
    $tmpStr = sha1( $tmpStr );
    70

    71
    if( $tmpStr == $signature ){
    72
    return true;
    73
    }else{
    74
    return false;
    75
    }
    76
    }
    77
    }
    78

    79
    ?>
    以上就是本文的全部内容,希望对大家的学习有所帮助。

    展开全文
  • 微信公众号开发5-自定义菜单-微信开发php讲师介绍: 秦子恒,CEO/董事长/总经理,大秦电商创始人,专注网络技术的电商应用。已经出品《1小时快速建站》《微博营销实战》《PHP采集》《网络招商系统》课程介绍: ...

    微信公众号开发5-自定义菜单-微信开发php

    讲师介绍: 
    秦子恒,CEO/董事长/总经理,大秦电商创始人,专注网络技术的电商应用。已经出品《1小时快速建站》《微博营销实战》《PHP采集》《网络招商系统》

    课程介绍: 
    微信公众平台开发之自定义菜单管理是子恒老师《微信公众平台开发》视频教程的第5部。详细讲解了用php开发微信,对微信公众平台中的自定义管理开发。内容包含微信添加菜单,获取自定义菜单配置,删除菜单等等。欢迎反馈,微信/QQ:68183131

    课程特色: 
    专属答疑+课件资料提供+视频无限时回放+VIP交流群

    开课时间: 
    随到随学,自由支配

    点我试看: http://edu.csdn.net/course/detail/2953?utm_source=blog11

    展开全文
  • 微信开发之入门教程

    万次阅读 多人点赞 2016-01-12 10:55:26
    微信开发也是有了一定的认识。在此,小宝鸽再次无私地分享给大家啦。其实微信开发跟web开发没有多大的区别,只是经过了微信,然后再由浏览器打开。因为经过微信,因此你的web会附加一些微信平台所提供的一些功能,...
  • PHP微信开发---简单的文本自动回复

    千次阅读 热门讨论 2016-08-27 19:13:40
    可以看到左侧的“开发者中心”,开启开发者中心前好像还要你完善一些资料,按照步骤完善即可。...URL是你自己的域名下的PHP脚本(往下读有该脚本的demo),该脚本用于和微信接口对接。比如http://w
  • PHP 一一 微信公众号开发(二次开发)

    万次阅读 多人点赞 2018-01-11 19:13:59
    两个星期前,学校请了传智播客的老师给我们做实训,讲了一个微信公众号开发,感觉挺有意思,在这里做一下记录,以便以后复习. 一、了解微信公众平台 1. 什么是微信公众平台? 微信公众平台是腾讯为了让用户申请和管理...
  • PHP微信开发(测试号)-建立链接

    千次阅读 2017-09-28 21:31:22
    PHP微信开发是指将微信与线上服务器建立链接,服务器与用户会通过微信联系起来,用户发送给微信的信息会通过微信发送到服务器上,服务器接收到信息并处理之后再通过微信返回给用户。 用户→微信→服务器→...
  • 微信开发之自动回复图文消息

    千次阅读 2017-08-05 16:05:43
    基于 laravel框架的微信公众号的自动回复功能。主要是图文消息和文本类型
  • 微信公共平台消息封装一个类,便于开发使用。具体效果自己测试
  • 微信开发五之微信红包开发

    千次阅读 2018-01-18 10:20:24
    微信支付的开发,作为微信公众号开发的难点之一,另不少开发者颇为头痛。市面上微信支付开发成本动辄上万,也让刚创业的小公司无力负担。本次文章将详细介绍微信支付中微信原生红包的开发思路,并提供源代码。以供...
  • ##图文消息回复 <?php ...微信开发(二)........ //3、图文消息回复 elseif(strtolower($postObj->MsgType)=='text'){ if(trim($postObj->Content)=='图文'){ $arr=array( array( ...
  • 自己封装 微信 开发api */ header('Content-type: text/html; charset=utf-8');#设置头信息 class zhphpWeixinApi{ //定义属性 private $userPostData; #微信反馈给平台的数据集 pri...
  • 微信开发 PHP代码 图片回复

    千次阅读 2018-06-16 23:15:07
    “`
  • 自动回复消息,就是把自动回复信息,组成xml文件,每一个回复都会对应着一个xml文件,并不是所有回复都使用的一个xml。下面分别是回复文本、图片、图文消息。在回复图片和图文中都需要上传图片,分别需要点用接口...
  • 微信公众 平台开发 消息回复功 能源代码 单图文回复 多图文回复 文本回复 音乐回复 music 微信公众平台开发 多个功能整合
  • 微信开发二之关键字回复

    千次阅读 2017-01-24 16:08:37
    1、修改和插入代码如下 switch ($keyword){ case '1': $contentStr = "您输入为1:联系"; break; case '2': $contentStr = "您输入为2:加群"; break;... $contentStr = "您输入为3:订购...
  • 微信开发之微信网页授权 完整示例

    万次阅读 2016-09-04 22:39:52
    所有微信开发的相关内容,都需要参考官方文档。 [微信公众平台|开发文档] http://mp.weixin.qq.com/wiki/home/。 一、通过网页授权,可以获取用户微信的基本信息。 二、总共有5个步骤: 1 :用户同意授权,...
  • 接着上次分享的服务器被动回复文本消息,这次分享的是图文消息(也叫文章消息),文本消息虽然可以处理大部分的业务需求,但美中不足的是消息过于死板不够活泼生动,为了丰富消息的内容和展现微信提供了图文消息供...
1 2 3 4 5 ... 20
收藏数 6,461
精华内容 2,584
关键字:

php 回复信息 微信开发