[TOC]

关于接收消息

为了能够让自建应用和企业微信进行双向通信,企业可以在应用的管理后台开启接收消息模式。

开启接收消息模式的企业,需要提供可用的接收消息服务器URL(建议使用https)。

开启接收消息模式后,用户在应用里发送的消息会推送给企业后台。此外,还可配置地理位置上报等事件消息,当事件触发时企业微信会把相应的数据推送到企业的后台。

企业后台接收到消息后,可在回复该消息请求的响应包里带上新消息,企业微信会将该被动回复消息推送给用户。

开启接收消息

设置接收消息的参数

在企业的管理端后台,进入需要设置接收消息的目标应用,点击“接收消息”的“设置API接收”按钮,进入配置页面。

要求填写应用的URL、Token、EncodingAESKey三个参数

URL是企业后台接收企业微信推送请求的访问协议和地址,支持http或https协议(为了提高安全性,建议使用https)。

Token可由企业任意填写,用于生成签名。

EncodingAESKey用于消息体的加密。

这三个参数的用处在 加解密方案说明 章节会介绍,此处不用细究。

验证URL有效性

当点击“保存”提交以上信息时,企业微信会发送一条验证消息到填写的URL,发送方法为GET。

企业的接收消息服务器接收到验证请求后,需要作出正确的响应才能通过URL验证。

企业在获取请求时需要做Urldecode处理,否则可能会验证不成功

你可以访问接口调试工具进行调试,依次选择 建立连接 > 接收消息。

假设接收消息地址设置为:http://api.3dept.com/,企业微信将向该地址发送如下验证请求:

请求方式:GET

请求地址:http://api.3dept.com/?msg_signature=ASDFQWEXZCVAQFASDFASDFSS&timestamp=13500001234&nonce=123412323&echostr=ENCRYPT_STR

参数说明

参数

必须

说明

msg_signature

企业微信加密签名,msg_signature结合了企业填写的token、请求中的timestamp、nonce参数、加密的消息体

timestamp

时间戳

nonce

随机数

echostr

加密的字符串。需要解密得到消息内容明文,解密后有random、msg_len、msg、receiveid四个字段,其中msg即为消息内容明文

企业后台收到请求后,需要做如下操作:

对收到的请求做Urldecode处理

通过参数msg_signature对请求进行校验,确认调用者的合法性。

解密echostr参数得到消息内容(即msg字段)

在1秒内响应GET请求,响应内容为上一步得到的明文消息内容(不能加引号,不能带bom头,不能带换行符)

以上2~3步骤可以直接使用验证URL函数一步到位。

之后接入验证生效,接收消息开启成功。

使用接收消息

开启接收消息模式后,企业微信会将消息发送给企业填写的URL,企业后台需要做正确的响应。

接收消息协议的说明企业微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。如果企业在调试中,发现成员无法收到被动回复的消息,可以检查是否消息处理超时。

当接收成功后,http头部返回200表示接收ok,其他错误码企业微信后台会一律当做失败并发起重试。

关于重试的消息排重,有msgid的消息推荐使用msgid排重。事件类型消息推荐使用FromUserName + CreateTime排重。

假如企业无法保证在五秒内处理并回复,或者不想回复任何内容,可以直接返回200(即以空串为返回包)。企业后续可以使用主动发消息接口进行异步回复。

接收消息请求的说明

假设企业的接收消息的URL设置为http://api.3dept.com。

请求方式:POST

请求地址 :http://api.3dept.com/?msg_signature=ASDFQWEXZCVAQFASDFASDFSS&timestamp=13500001234&nonce=123412323

接收数据格式 :

参数说明

参数

说明

ToUserName

企业微信的CorpID,当为第三方套件回调事件时,CorpID的内容为suiteid

AgentID

接收的应用id,可在应用的设置页面获取

Encrypt

消息结构体加密后的字符串

企业收到消息后,需要作如下处理:

对msg_signature进行校验

解密Encrypt,得到明文的消息结构体(消息结构体后面章节会详说)

如果需要被动回复消息,构造被动响应包

正确响应本次请求

以上1~2步骤可以直接使用解密函数一步到位。

3步骤其实包含加密被动回复消息、生成新签名、构造被动响应包三个步骤,可以直接使用加密函数一步到位。

被动响应包的数据格式:

timestamp

参数说明

参数

是否必须

说明

Encrypt

经过加密的消息结构体

MsgSignature

消息签名

TimeStamp

时间戳

Nonce

随机数,由企业自行生成

获取企业微信服务器的ip段

企业微信在回调企业指定的URL时,是通过特定的IP发送出去的。如果企业需要做防火墙配置,那么可以通过这个接口获取到所有相关的IP段。

请求方式:GET(HTTPS)

请求地址: https://qyapi.weixin.qq.com/cgi-bin/getcallbackip?access_token=ACCESS_TOKEN

参数说明:

参数

必须

说明

access_token

调用接口凭证

权限说明:

无限定。

返回结果:

{

"errcode": 0,

"errmsg": "ok",

"ip_list": ["101.226.103.*", "101.226.62.*"]

}

参数说明:

参数

说明

ip_list

企业微信回调的IP段

linux+企业微信+api,概述 - 企业微信API相关推荐

  1. ASP.NET Core 企业开发架构概述

    ASP.NET Core 企业开发架构概述 企业开发框架包括垂直方向架构和水平方向架构.垂直方向架构是指一个应用程序的由下到上叠加多层的架构,同时这样的程序又叫整体式程序.水平方向架构是指将大应用分成 ...

  2. 开放API接口整合多元办公能力,企业微信助IT企业打造高效办公平台

    5月11日,企业微信线下行业交流沙龙--IT行业专场来到北京,产品团队在现场深入解读了企业微信如何更好地帮助IT企业兼顾效率与成本,满足IT企业办公的高效.轻便和移动化. 此次活动,艺龙网及众安保险作 ...

  3. PHP之 微信支付 查询企业付款银行卡API 或 查询给企业付款是否到账 功能业务处理

    一.情景简述 之前做了微信付款到企业银行卡的功能,但是,给客户打款后,次日才能到账,为及时进行反馈,于是又做了"查询给企业付款是否到账"的功能.这块,我直接写了一个类,进行处理,下 ...

  4. SAP ABAP 添加企业微信群机器人并调用 API 发送消息

    SAP ABAP 添加企业微信群机器人并调用 API 发送消息 引言: 这篇文章以我在个人开源项目"任务管理服务(ZTASK)"中的应用为例,通过讲述使用企业微信机器人实现任务的通 ...

  5. 企业微信开发文档接口API获取accesstoken和读取成员内部员工

    企业微信开发文档接口API获取accesstoken和读取成员内部员工 <?php /*** 企业微信 API*/ namespace app\common;use think\Config; ...

  6. 微信小程序api概述

    微信小程序api概述 1.api 1.1 网络api 1.2 缓存api 1.3 界面api 2 开放能力-获取用户信息 2.1 通过API获取用户信息 3 图片与文件 3.1 下载图片 3.2 上传 ...

  7. 微信小程序H5页面API红包代发接口

    开发者在日常涉及到给小程序.H5等应用嵌入微信红包时,有一个坎是必须要迈过的,那就是需要有一个具备红包发放权限的商户号,但因相关权限准入门槛过高,短时间内无法取得相关权限,所以很是让开发者为难,那么有 ...

  8. Delphi调用微信原生Web开发接口JS-SDK开发小程序及微信支付等的Rest API

    目录 Delphi调用微信原生Web开发接口JS-SDK开发小程序及微信支付等的Rest API 一.概述及API 1.JS-SDK是对之前的 WeixinJSBridge 的一个包装 2.JS-SD ...

  9. 企业付款到零钱「微信小程序别样发放红包」

    目录 一.开发前的准备工作 二.接入微信企业付款到零钱API 1)接入「企业付款到零钱」API 2)接入「查询企业付款」API 三.开发过程的参数封装以及工具类封装 四.调试注意事项汇总 一.开发前的 ...

  10. 企业微信发送企业红包java_发放企业红包

    API接口协议 发放规则: 发送频率限制---默认1800/min 发送个数上限---默认1800/min 场景金额限制---默认红包金额为1-200元,如有需要,可前往商户平台进行设置和申请 其他限 ...

最新文章

  1. c#如何取自身应用程序文件名和路径?
  2. tkinter 笔记:创建输入框并显示结果 (莫烦python笔记)
  3. 点融产品 VP 赵征宇:增长是一个探索人性的过程
  4. 百度视频携手神策数据 为用户精准推送短视频内容
  5. 荒岛野人[exgcd]
  6. java实训遇到问题解决_「instantiationexception」关于java出现 java.lang.InstantiationException异常的分析与解决方案 - seo实验室...
  7. Hadoop:Hadoop简介及环境配置
  8. hdu 1003 Max Sum 简单动态规划
  9. bat 启动 不弹出对话框_跳过网易启动器用Steam启动逆水寒
  10. IOS AVPlayer视频播放器 AVPlayerViewController视频播放控制器
  11. 直流电动机调速matlab,基于MATLAB龙门刨床直流电动机调速系统仿真研究
  12. PDB药物综合数据库必备8大类非付费网址80个
  13. mysql的explain执行计划_MySQL之Explain(执行计划)
  14. 服务器cpu都有哪些型号,盘点目前性价比最高的CPU有哪些型号
  15. 第六届中国软件开源创新大赛——飞桨赛题新鲜出炉,速来pick!
  16. 怎么禁用笔记本的触摸板
  17. wordpress美化插件
  18. 社区发现算法python视频_社区发现FN算法Python实现
  19. 高二会考计算机操作题试题及答案,2017高二数学会考试题及答案_高二会考答案(数学)(5)...
  20. 每天学点说话技巧+人性的弱点 +陈吉宁

热门文章

  1. 遥感专业学c语言吗,2019遥感科学与技术专业怎么样、学什么、前景好吗
  2. 助老服务机器人结构设计
  3. 全国高等学校非计算机专业计算机水平考试一级,全国高等学校计算机一级考试选择题题库及答案参考...
  4. VueX模块化使用(超级实用)
  5. Java面试学习资源
  6. 市场热门行驶证识别性能测评对比
  7. 传感器采取船舶的_电容式传感器工作原理与电容式传感器行业应用
  8. mx播放器有没有投屏功能_无线投屏、即插即用,投影仪其实可以更智能:明基 E580T...
  9. 结巴分词python教程_Python笔记:用结巴分词制作词云图
  10. echarts官网在线编辑的图表如何导出svg