laravel 微信开发-自动回复
admin
2023-02-10 14:00:14
0

                                         laravel 微信开发-自动回复


1.微信公众号的逻辑,用户关注了你的微信公众号后,假设用户发送了一条消息给你的公众号,实际上是先发送到腾讯的服务器上,腾讯把内容转成特定的xml格式,再转发到你指定的服务端(如:/var/www/html/weixin/weixin.php或者自定义API地址)。你的服务端接收并解析这个xml,根据用户发来信息的内容进行逻辑处理,最后返回一个特定的xml格式内容给腾讯服务器,腾讯再转发给用户,如下图:

laravel 微信开发-自动回复



2. 首先申请微信公众号,进行配置,前期可以用微信的测试公众号进行开发(提供了很多个人订阅号没有的接口权限,如:群发,菜单权限等),然后设置好接口配置信息和JS接口安全域名,如下图:

 

laravel 微信开发-自动回复


laravel 微信开发-自动回复

      




3. 我是用laravel框架进行开发的,目前找了easyWechat的微信开发的包,十分好用,作者很nice,文档也通俗易懂,具体文档查看https://easywechat.org/。

引用包之后,直接使用契约,这里以自动回复作为例子进行使用,


核心代码如下:

 true,
               /**
               * 账号基本信息,请从微信公众平台/开放平台获取
               */
                     'app_id'  => 'wxappid', // AppID
                     'secret'  => 'appsecret',// AppSecret
                     'token'   => 'yourtoken', // Token
                                  'aes_key' => ''//密文
      ]; 
        $app = new Application($options);
        //用户实例,可以通过类似$user->nickname这样的方法拿到用户昵称,openid等等
        $user = $app->user;
        // 从项目实例中得到服务端应用实例。
        $server = $app->server;
        $server->setMessageHandler(function ($message)use($user) {
            switch ($message->MsgType) {
             case 'event':
                   switch ($message->Event) {
                     case 'subscribe':
                     // code...
                     return new Text(['content' => '欢迎关注']);
                     break;
                   default:
                   return new Text(['content' => '收到文字消息']);
                   break;
                     }
                   break;
              //文本
              case 'text':
                   $content = $message->Content;
                   return new Text(['content' => $content]);
                   break;
              //图片
              case 'p_w_picpath':
                   $mediaId  = $message->MediaId;
                   return new Image(['media_id' => $mediaId]);
                   break;
              //语音
              case 'voice':
                   $mediaId  = $message->MediaId;
                   return new Voice(['media_id' => $mediaId]);
                   break;
              //视频
              case 'video':
                   $mediaId  = $message->MediaId;
                   return new Video(['media_id' => $mediaId]);
                   break;
              //地理位置
              case 'location':
                   return  new Text(['content' => $message->Label]);
                   break;
              //超链接
              case 'link':
                   return new Text(['content' => $message->Description]);
                   break;
              // ... 其它消息
             default:
                 return new Text(['content' => '其他消息']);
                 break;
         }
     });
     $response = $server->serve();

     return $response;
}

    效果如下:

laravel 微信开发-自动回复



注意:这里一定要用Route::any,因为微信服务端认证的时候是GET,接收用户消息时是POST!




相关内容

热门资讯

多地官宣结婚生娃发钱,最高20... 近日,广东佛山顺德陈村镇大都村通过股东会议表决,将生育结婚奖励政策纳入《佛山市顺德区陈村镇大都村股份...
蒋万安、卢秀燕、谢国梁开记者会... 海峡导报综合报道 民进党当局核准台湾“中联”19批油品即日起重新上架,台“食药署”23日首度公布共计...
西门子洗衣机不工作了什么原因 西门子洗衣机不工作了什么原因1、可能是使用时间太久了,导致洗衣机内部零件出现了问题。2、可能是长时间...
不工作时西门子洗衣机一直响 1、洗衣机的电源电压过低导致西门子洗衣机一直响。2、洗衣机的电容器故障。3、洗衣机的转子卡住导致西门...
博世洗衣机泡沫过多机器不转了 可能是系统部分堵塞。要立即修复单次洗涤,在分配器抽屉上加一顶织物调节剂即可,最好在机器下次用水冲洗时...
14名残疾人用AI做了部爆款短... 执笔 王波日前,宁波众闻道软件科技有限公司负责人龙杰收到了6月份AI短剧收益报告。在公司当月上线的4...
小米洗衣机不运转了怎么修 小米洗衣机不运转,可能是由于多种原因引起的,可能是由于电源问题、电机损坏、控制面板故障等原因。下面是...
杂牌洗衣机不转了怎么办 如果杂牌洗衣机出现不转的故障,可能会造成很多麻烦。无法使用洗衣机会影响我们的日常生活,但是针对这个问...
晒出317万年终奖后,腾讯一员... 近日,有网友晒出疑似腾讯内部发布的通报:WXG某项目组负责人叶某在职期间,因私自泄露公司敏感信息,被...
公安部:国际打击电信网络诈骗联... 今天(24日)上午,国务院新闻办公室举行“开局起步‘十五五’”系列主题新闻发布会,公安部相关负责人介...