zoukankan      html  css  js  c++  java
  • 微信公众号--消息回复

    消息回复

    使用微信进行接口实现消息自动回复,要在微信公众号中进行服务器配置和编写对应的服务器代码响应微信端的请求。

    服务器配置

    l  公众平台官网登录之后,找到“基本配置”菜单栏

     

    l  填写配置

     

    现在选择提交肯定是验证token失败,因为还需要完成代码逻辑编写。

    服务端代码编写

    服务器配置时,微信服务器会向填写的url地址发送Get请求来验证服务器的合法性,逻辑流程图如下

     

    以PHP语言为例,编写验证服务器合法性的示例代码如下:

    <?php

     

    $signature = isset($_GET["signature"])?$_GET["signature"]:'';

    $signature = isset($_GET["msg_signature"])?$_GET["msg_signature"]:$signature; //如果存在加密验证则用加密验证段

    $timestamp = isset($_GET["timestamp"])?$_GET["timestamp"]:'';

    $nonce = isset($_GET["nonce"])?$_GET["nonce"]:'';

     

    $token = 'your token';

    $tmpArr = array($token, $timestamp, $nonce,$str);

    sort($tmpArr, SORT_STRING);

    $tmpStr = implode( $tmpArr );

    $tmpStr = sha1( $tmpStr );

     

    if( $tmpStr == $signature ){

        $echoStr = $_GET["echostr"];

        die($echoStr);

    }else{

        die('no access');

    }

    回复代码

    根据以上的描述,正确填写服务器配置后,微信会将接收到的图文等信息自动转发到配置的服务器地址中。图文等消息回复流程如下,核心逻辑为解析微信端post过来的xml消息数据,根据解析的消息类型,根据消息类型返回处理结果。

     

    查询官方wiki 开头强调: 假如服务器无法保证在五秒内处理回复,则必须回复“success”或者“”(空串),否则微信后台会发起三次重试。

    解释一下为何有这么奇怪的规定。发起重试是微信后台为了尽可以保证粉丝发送的内容开发者均可以收到。如果开发者不进行回复,微信后台没办法确认开发者已收到消息,只好重试。

    真的是这样子吗?尝试一下收到消息后,不做任何回复。在日志中查看到微信后台发起了三次重试操作,日志截图如下:

    三次重试后,依旧没有及时回复任何内容,系统自动在粉丝会话界面出现错误提示“该公众号暂时无法提供服务,请稍后再试”。

     

  • 相关阅读:
    沙尘天气,但还是要坚持锻炼
    为了欧冠,堕落两天
    NRF24L01测试板子完成了
    昨天参加ti的研讨会了
    自我安慰一下
    功率W与dBm的对照表及关系
    短时间提高英语口语方法
    看了一个星期的欧洲杯,熬阿
    最近比较忙,项目较累
    后台获取js赋给服务器控件的值
  • 原文地址:https://www.cnblogs.com/SLchuck/p/8530955.html
Copyright © 2011-2022 走看看