消息管理-自动回复文本消息

输入关键字回复文本消息

首先

消息管理-自动回复文本消息_第1张图片

当用户发送消息给公众号时(或某些特定的用户操作引发的事件推送时),会产生一个POST请求,开发者可以在响应包(Get)中返回特定XML结构,来对该消息进行响应,严格来说,发送被动响应消息其实并不是一种接口,而是对微信服务器发过来消息的一次回复。

创建两个数据表

其中关键字和内容

消息管理-自动回复文本消息_第2张图片


创建文本应创建文本的html,传给控制器进行响应,

其次,把数据传递给数据库,保存到数据库

//显示文本到数据库
  public function replytext(){
    if(IS_GET){
      $this->display();
    }else{
      $content=I('post.content');
      $keyword=I('post.keyword');
      $model=M('reply_text');
      $data['content']=$content;
      $reply_id=$model->add($data);
      if(isset($reply_id)){
        $mp=getCurrentMp();
        $data['mp_id']=$mp['id'];
        $data['type']='text';
        $data['keyword']=$keyword;
        $data['reply_id']=$reply_id;
        M('rule')->add($data);
        $this->ajaxReturn(array('msg'=>'添加成功'));
      }else{
        $this->ajaxReturn(array('msg'=>'添加失败'));
      }
    }
  }

最后,在本地服务器测试完善后,传到我们的云服务器,测试微信公众号。将数据库传到阿里云数据库

输入数据库传入的关键字,系统自动回复数据库相对应的文本内容

但是

假如服务器无法保证在五秒内处理并回复,必须做出下述回复,这样微信服务器才不会对此作任何处理,并且不会发起重试(这种情况下,可以使用客服消息接口进行异步回复),否则,将出现严重的错误提示。详见下面说明:

1、直接回复success(推荐方式) 2、直接回复空串(指字节长度为0的空字符串,而不是XML结构体中content字段的内容为空)

一旦遇到以下情况,微信都会在公众号会话中,向用户下发系统提示“该公众号暂时无法提供服务,请稍后再试”:

1、开发者在5秒内未回复任何内容 2、开发者回复了异常数据,比如JSON数据等

微信服务器在将用户的消息发给公众号的开发者服务器地址(开发者中心处配置)后,微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次,如果在调试中,发现用户无法收到响应的消息,可以检查是否消息处理超时。关于重试的消息排重,有msgid的消息推荐使用msgid排重。事件类型消息推荐使用FromUserName + CreateTime 排重。

这样,我们的自动回复文本消息就完成了,在每一个步骤需要程序员的细心敲代码。



你可能感兴趣的:(自动回复文本消息)