1. 概述
网络环境畅通是实现微信钉钉集成的重要前提,本篇介绍微信钉钉集成所需的各种网络要求,以及对应网络环境下的部署配置。
2. 网络要求
配置微信钉钉集成环境的操作,需要两条网络线路都畅通:
1)报表服务器上添加微信/钉钉应用时,需要能够访问微信/钉钉服务器;
2)移动设备单点登录时,需要能访问报表服务器。
2.1 报表服务器访问微信/钉钉服务器
2.1.1 添加微信/钉钉应用与同步通讯录
微信/钉钉集成配置时,需要调取微信钉钉开发的接口来实现单点集成。
在「管理系统」的微信/钉钉管理页面,添加应用。对应配置如下:
在同步通讯录的时候,可以通过接口获取微信/钉钉后台的一些token,用户信息等。对应配置如下:
微信钉钉服务器提供的接口格式如下:
微信:https://qyapi.weixin.qq.com/cgi-bin/xxxx
钉钉:https://oapi.dingtalk.com/xxxx
网络要求:
故为保证集成正常配置,需要保证报表服务器能够正常访问微信/钉钉服务器,正常调用这些接口获取信息。
影响:
若报表服务器无法访问微信/钉钉服务器,则在上述应用添加和通讯录同步阶段,会因为网络异常而操作失败。
2.1.2 钉钉集成使用文件上传控件
在集成环境下,若模板中配置有文件上传控件,在上传图片以后,图片会存储到微信/钉钉对应服务器上,提供一个图片路径 url 给模板访问,此时需要报表服务器能够访问对应图片存储服务器,保证图片的正常加载。
微信钉钉图片存储路径对应域名如下:
微信:https://qyapi.weixin.qq.com/xxx
钉钉:https://static.dingtalk.com/xxx
网络要求:
微信:由于微信图片存储的域名与上述 2.1.1 中接口调用域名一致,故不需要单独配置网络。
钉钉:钉钉图片存储的域名与钉钉接口调用的域名不一致,需要单独开放网络,确保报表服务器可以访问图片存储域名服务器。
影响:
如果这部分网络受阻,对钉钉集成环境整体使用没有影响,但是在集成环境下,模板中文件控件上传图片以后,对应图片不会显示在文件控件栏中。
2.2 移动设备访问报表服务器
微信钉钉集成配置完后,通常是需要使用移动设备来访问报表平台地址,查看对应的模板数据。
2.2.1 微信集成报表服务器
由于微信管理平台对集成的地址有一定的要求,故报表服务器一定是可以被外网访问的,并且一定是域名地址,不能用 IP 地址。
域名地址举例http://xxx.xxx.com:xxx/webroot/decision。如果是http://IP:xxx/webroot/decision,是不可以做微信集成的。
注:请使用二级或二级以上域名,且需通过 ICP 备案。
当报表服务器配置好域名访问地址以后,需要将对应的域名地址填写到「微信管理>报表服务器地址」栏中,点击「保存」。
这里服务器地址格式的填写要求如下:
Finereport服务器访问地址 | 报表服务器地址填写 | 注意事项 |
---|---|---|
http://IP:xxx/webroot/decision | - | IP地址不可用,需要转化为外网域名地址 |
http://xxx.xxx.com:xxx/webroot/decision | http://xxx.xxx.com:xxx/webroot/decision | - |
http://xxx.xxx.com:xxx | http://xxx.xxx.com:xxx/decision | 工程名缺省的平台地址,需要在后面带上/decision |
https://xxx.xxx.com:xxx/webroot/decision | https://xxx.xxx.com:xxx/webroot/decision | - |
https://xxx.xxx.com/webroot/decision | https://xxx.xxx.com:443/webroot/decision | https协议地址且缺省端口的,需要带上默认端口443 |
2.2.2 钉钉集成报表服务器
钉钉管理平台对集成的地址没有域名的限制,只需要可以被外网访问即可(PS:因为移动设备一般是在外网网络环境下访问平台的)。故报表服务器可以是外网域名地址,也可以是外网 IP 地址。
当报表服务器配置好外网访问地址以后,需要将对应的外网地址填写到「钉钉管理>报表服务器地址」栏中,并「保存」。
这里服务器地址格式的填写要求如下:
Finereport服务器访问地址 | 服务器地址填写 | 注意事项 |
---|---|---|
http://IP:xxx/webroot/decision | http://IP:xxx/webroot/decision | - |
http://xxx.xxx.com:xxx/webroot/decision | http://xxx.xxx.com:xxx/webroot/decision | - |
http://xxx.xxx.com:xxx | http://xxx.xxx.com:xxx/decision | 工程名缺省的平台地址,需要在后面带上/decision |
https://xxx.xxx.com:xxx/webroot/decision | https://xxx.xxx.com:xxx/webroot/decision | - |
https://xxx.xxx.com/webroot/decision | https://xxx.xxx.com:443/webroot/decision | https协议地址且缺省端口的,需要带上默认端口443 |
3. 网络检测
对于 2. 网络要求 中,提到的网络场景,这里给出较为简单的检测方法。
3.1 报表服务器访问微信/钉钉服务器
注:检测网络能够访问微信/钉钉服务器,不可以通过直接将微信钉钉域名输入浏览器中来检测。
3.1.1 方案一:命令行ping
在报表环境所在的服务器上,打开 cmd 命令行窗口, ping 对应的微信/钉钉服务器域名地址。如下图所示:
微信服务器:ping qyapi.weixin.qq.com
钉钉服务器:ping oapi.dingtalk.com
钉钉图片存储服务器:ping static.dingtalk.com
注:这里ping的是微信钉钉接口调用对应的域名,而并非登录微信钉钉后台管理平台的地址,例如微信管理平台域名为 work.weixin.qq.com ,与接口调用的域名不一致。
3.1.2 方案二:微信钉钉调试工具检测
如何使用调试工具参考文档: 微信钉钉调试工具
若检测如下结果,说明网络畅通。
若检测如下异常,则说明网络异常,需要网络管理员调整网络环境。
3.2 移动设备访问报表服务器
用移动设备,比如手机,在手机浏览器中访问平台地址http://xxxx:xxx/webroot/decision,看能否显示报表登录页。
能显示则说明网络畅通;访问失败则说明网络异常。
4. 不同网络情况下配置
4.1 网络顺畅
若在 3. 网络检测 中检测两条网络线路均正常,则请查看文档 企业微信集成 和 钉钉管理插件,可以进行对应的微信钉钉集成配置。
4.2 网络不通
若两条线路任意一条线路访问有问题,可以请专门的网络管理员,对网络配置进行调整,从而实现两条线路双方通信。
部分用户,基于网络安全的考虑,可以通过 IP 外网映射实现 2.2 移动设备访问报表服务器 的网络要求,但是无法让报表服务器访问到微信服务器,针对这种场景,这里提供一个解决方案:
使用代理服务器实现 2.1报表服务器访问微信/钉钉服务器 的网络要求。
配置步骤如下:
1)找一台服务器作为代理服务器,通过这台代理服务器接收报表服务器发送的网络请求,并将请求转发至微信/钉钉服务器
以图例为例,报表服务器可以访问代理服务器,代理服务器可以访问微信/钉钉服务器。
2)在代理服务器172.16.0.12上,安装nginx,下载安装配置见:代理服务器配置
3)在代理服务器上配置 nginx 的正向代理。修改配置文件conf/nginx.conf,在 http{} 之间添加如下代码:
微信服务器正向代理:
server {
listen 8113; // 微信代理服务器端口
server_name 172.16.0.12; //代理服务器IP
location / {
proxy_redirect off;
proxy_pass https://qyapi.weixin.qq.com;#微信服务器域名地址
}
location = /favicon.ico {
log_not_found off;
}
}
钉钉服务器正向代理
server {
listen 8114; // 钉钉代理服务器端口
server_name 172.16.0.12; //钉钉代理服务器IP
location / {
proxy_redirect off;
proxy_pass https://oapi.dingtalk.com; #钉钉服务器域名地址
}
location = /favicon.ico {
log_not_found off;
}
}
4)nginx 配置好以后启动,然后在平台上微信/钉钉管理的「应用快捷配置>代理服务器地址」中添加对应代理地址即可。
上述实例中对应的配置如下:
微信管理配置代理服务器地址为:http://172.16.0.12:8113
钉钉管理配置代理服务器地址为:http://172.16.0.12:8114
5)测试连接通过后「保存」,则网络环境配置完成。
可以查看文档 企业微信集成 和 钉钉管理插件,进行对应的微信/钉钉集成配置。
注 1 :快捷配置中的代理服务器配置项,仅在报表环境需要配置正向代理转发时使用。
注 2 :2.1 报表服务器访问微信/钉钉服务器 网络要求满足的情况下,代理服务器这里不要填写!
注 3 :平台地址,外网映射的ip/域名,模板地址,以及各类链接等,均不可以填写至代理服务器配置项中!
4.3 服务器私有化部署
常用的微信/钉钉集成,都是使用的公网服务器,即微信/钉钉后台管理平台地址如下:
部分用户的微信/钉钉服务器做了私有化部署,单独搭建了一套服务器环境,针对这种场景,也有对应的配置方案.
配置方案
1)获取私有化微信/钉钉服务器的接口地址。
由于服务器私有部署,对应服务器的接口调用域名就不能用公网的域名,需要在环境部署阶段,了解微信/钉钉官方文档,获取对应私有化部署的服务器接口调用域名,这里举两个例子:
例:微信私有化环境接口域名为:https://private.weixin.com ;钉钉私有化环境接口域名为:https://private.dingtalk.com
注:实际私有化部署服务器对应的接口地址,请通过微信/钉钉官网部署文档查看获取。
2)检测报表服务器访问私有服务器的网络情况。
参照 3.1.1 命令行检测方法,在报表服务器上ping对应的微信钉钉接口域名。
微信服务器: ping private.weixin.com
钉钉服务器: ping private.dingtalk.com
3)接 步骤2)的检测结果,若 ping 通,则直接将微信钉钉的私有化域名填写至代理服务器页面,如图所示,私有化部署网络环境配置完成,可以查看帮助文档 企业微信集成 和 钉钉管理插件,进行对应的微信钉钉集成配置。
微信代理服务器配置:
钉钉代理服务器配置:
4)接步骤2)的检测结果,若ping不通,显示网络超时或者丢包等结果,则需要参考 4.2网络不通 ,配置正向代理实现
网络要求:报表服务器可以访问代理服务器,代理服务器可以访问私有化部署的微信钉钉服务器。
正常安装nginx后,修改nginx正向代理配置文件,将配置代码中的微信/钉钉服务器地址,改成私有化服务器的地址。
微信服务器正向代理
server {
listen 8113; // 微信代理服务器端口
server_name 172.16.0.12; //代理服务器IP
location / {
proxy_redirect off;
proxy_pass https://private.weixin.com;#微信私有服务器域名地址
}
location = /favicon.ico {
log_not_found off;
}
}
钉钉服务器正向代理
server {
listen 8114; // 钉钉代理服务器端口
server_name 172.16.0.12; //钉钉代理服务器IP
location / {
proxy_redirect off;
proxy_pass https://private.dingtalk.com; #钉钉私有服务器域名地址
}
location = /favicon.ico {
log_not_found off;
}
}
5)nginx 配置好以后启动,然后在平台上微信/钉钉管理的「应用快捷配置>代理服务器地址」中添加对应代理地址即可。
测试连接通过后「保存」,则网络环境配置完成。
上述实例中对应的配置如下:
微信管理配置代理服务器地址为:http://172.16.0.12:8113
钉钉管理配置代理服务器地址为:http://172.16.0.12:8114