企微自建应用接入

该文档仅面向SaaS客户

1.简述

QuickAudience(以下简称QA)在对原服务商模式企微接入方式进行了升级,升级为企业自建应用方式接入,升级后,通过企业自建应用接入企微可获得更多企微数据,并不受接口调用次数限制,降低企业获取企微数据成本。

2.接入流程图

由于企微对企业自建应用的接入方式设置了可信IP和域名等安全限制,因此SaaS版的QA产品(企业主体为瓴羊),那么无法直接从企微读取企业客户的数据。为了解决这一问题,企业需要在其内部部署一个QA专用的企微代理,用于获取企微数据并将其转发至QA产品。这一部署方案确保了数据的安全性和完整性,同时满足企业的使用需求。因此需要客户提供回调域名、公网IP等信息,并在客户网络环境内部署QA产品的一方企微代理服务,网络连接示意图如下:

image

如您存在多品牌在企微认证主体不一致且需要接入QA,可使用同一QA一方企微代理,如下图所示

image

3.总体接入说明

3.1接入前准备

前期接入准备如下,如您在准备或配置过程中,遇到关于QA产品功能使用方面的问题,请联系产品运营人员,对于配置过程中的技术指导及任何相关疑问,请联系售后支持团队获取帮助。

角色

操作事项

阶段

IT运维人员

资源申请、网络及代理服务器配置

准备阶段

企微管理员

在企业微信后台完成自建应用相关配置

配置阶段

运营人员

QA产品上完成企业微信功能配置

配置阶段

3.2整体接入流程

阶段

工作内容

操作平台

负责人

准备

提供企微代理资源清单

【QA】产品运营

准备企微代理资源

【客户】IT运维人员

开通代理资源,配置企微代理服务器

【客户】IT运维人员

创建企微自建应用,提供企微信息清单

企业微信后台

【客户】企微管理员

删除服务商代开发模式企微应用

企业微信后台

【客户】企微管理员

为客户开启企微功能菜单

QA运营后台

【QA】产品运营

准备验证

验证企微代理服务器联通性

【客户】IT运维人员

验证服务商模式企微应用已删除

QA产品

【客户】运营人员

验证企微功能菜单是否开启

QA产品

【客户】运营人员

配置

企微应用可见范围配置

企业微信后台

【客户】企微管理员

企微应用权限配置

企业微信后台

【客户】企微管理员

企微引用可信域名&IP配置

企业微信后台

【客户】企微管理员

QA关联企微自建应用

QA产品

【客户】运营人员

配置企微自建应用回调信息

企业微信后台

【客户】企微管理员

配置验证

检查企微数据表

QA产品

【客户】运营人员

检查企微调度任务

QA产品

【客户】运营人员

4.准备阶段

4.1企微代理服务器资源

序号

资源名称

规格

资源要求

备注

1

公网域名

qawecom.xxx.com

域名备案企业与企微注册企业必须一致

2

ECS

24G,磁盘100G

安装Linux操作系统

根据企微用户量参考建议规格:

<=100W,2C4G

>100W&<=500W,4C8G

>500W,8C16G

3

EIP

(公网IP)

带宽5Mbps

二级域名指向该公网IP

根据企微用户量参考建议规格:

<=100W,5M

>100W&<=500W,10M

>500W,15M

4

SSL证书

与二级域名配套的SSL证书

建议提供,如果不提供只能使用http进行通信,存在安全风险

需要企微会话存档功能的话,必须提供

4.2企微代理服务器配置

SaaS客户需要部署一方企微代理服务器,QA一方企微代理服务使用Nginx软件实现,对QA与企微的请求进行转发处理,因此需要在服务器(ECS)上安装Nginx软件,并按照模板进行配置,以实现QA请求转发功能。可参考以下步骤进行部署。

4.2.1部署步骤(以CentOS操作系统为例)

安装Nginx服务

sudo yum update 
sudo yum install nginx

启动Nginx

sudo systemctl enable nginx
sudo systemctl start nginx

配置Nginx

cd /etc/nginx/conf.d
vim proxy.conf

配置模板如下:

server {
    listen 80; # 监听端口,如果使用https则为443
    server_name 106.39.X.XX; # 本机的公网IP,【需要修改】
    root /usr/share/nginx/html;
    index index.html index.htm;
  
    # QA请求企微-转发规则配置,用于QA从企微拉取数据、发送企微营销任务等
    location /cgi-bin {
        proxy_pass https://qyapi.weixin.qq.com; # 企微地址,【不需要修改】
    }

    # 企微请求QA-转发规则配置,用于接收企微回调事件
    location / {
        # 【需要修改】QA回调地址,按照QA所在Region进行配置
        # 张北Region:https://quicka.aliyun.com
        # 上海Region:https://quicka-shanghai.aliyun.com
        proxy_pass https://quicka.aliyun.com; 
    }
}

启动Nginx

nginx -t
nginx -s reload

查看日志

tail -f /var/log/nginx/access.log

4.3创建企微自建应用【企微后台】

4.3.1操作路径

企微后台->应用管理->自建->创建应用

image.png

4.3.2输入信息

输入内容

建议内容

应用logo

下图瓴羊logo

应用名称

瓴羊QA企微应用

应用介绍

用于瓴羊QA产品获取企微信息及发送企微营销任务

瓴羊logo

image.png

4.3.3设置可见范围

image

4.3.4记录企微应用信息

创建企微自建应用,并获取如下信息,后续配置中使用:

序号

用途

信息

获取方式(企微链接)

1

企微账号关联

corpid、secret

https://developer.work.weixin.qq.com/document/path/90665#secret

2

企微接口回调

corpid

https://developer.work.weixin.qq.com/document/path/90930

4.4删除服务商代开发模式企微应用

说明

如未在QA上绑定过服务商模式账号可忽略

在企微后台,将原有服务商代模式企微应用删除。

4.5QA与企微联通性验证

4.5.1验证企微代理连通性

验证企微代理连通性包含两个方向,QA请求企微方向和企微请求QA方向,验证前需要准备以下信息:

验证QA请求企微是否正常

在浏览器中请求http://qawecom.xxx.com/cgi-bin/department/list?access_token=8f7OUcWM8fJGsC41pSwWG8hioA****,检查是否可以正常返回部门信息,errcode0,errmsgok,则说明配置正确。

{
    "errcode": 0,
    "errmsg": "ok",
    "department":[  
    ]
}

验证企微请求QA是否正常

在浏览器中访问https://qawecom.xxx.com/restapi/thirdservice/we/com/inner/event/oneparty/callback/wwb697d33134e48xxx,检查是否能返回,http返回code200,页面为空白页面,则说明配置正确。

4.5.2验证服务商待开发模式应用已删除

说明

如果未关联过服务商模式企微账号,本步骤可忽略

企微服务商应用删除后,5分钟内检查QA产品页面中的企微账号是否已自动删除

image

4.5.3验证一方企微菜单已开启

一方企微菜单开启后,在营销账号中会展现“企业微信”,如果未开启成功,则没有显示,需要联系QA产品运营进行开通。

image

5.配置阶段

以下以企微自建应用名称【瓴羊QA企微应用】进行举例

5.1配置应用可见范围【企微后台】

重要
  • 如果不设置可见范围,会导致无法从企微获取通信录、粉丝等数据

  • 如果是新建的企微应用,在创建时已设置,该步骤可忽略

image.png

image.png

5.2配置应用可信域名及IP【企微后台】

  1. 配置可信域名

    使用企微代理服务器的公网域名

    image

  2. 设置可信IP

    填写企微代理服务器的出口IP

    重要

    注意,企微代理服务器的出口IP与新申请的公网IP不一定一致,可信IP需要填写出口IP,即请求企微时的出口IP,可咨询企业IT人员获取。

    image

    image.png

5.3配置应用相关权限【企微后台】

如果要通过API获取客户信息,需要先配置应用具备获取客户信息权限,否则会导致获取失败

  1. 进入客户与上下游

    如下图所示在客户与上下游->客户联系->客户,绑定微信开发者ID

    说明

    如不绑定,会影响客户数据的获取。

    image.png

  2. 增加可调用的接口应用

    将【瓴羊QA企微应用】应用勾选

    参考文档:概述 - 文档 - 企业微信开发者中心

    image.png

5.4QA关联企微自建应用【QA产品】

如下图所示菜单路径:配置管理->营销账号->账号授权->选择企业微信

image

填写如下信息:

image.png

信息填写说明:

填写字段

填写值

信息来源

备注

企业ID

企微corpid

企微后台

https://developer.work.weixin.qq.com/document/path/90930

企业名称

企业名称

用户输入

企业secret

企微自建应用secret

企微后台

https://developer.work.weixin.qq.com/document/path/90665#secret

可信域名

二级域名

客户准备

企微代理域名,默认请求使用http,如果需要使用https,需要加https://前缀

可信IP

公网IP

客户准备

企微代理公网IP

Token

企微回调Token

企微后台

建议先在企微后台设置应用“设置API接收”的页面生成,或随机生成,需要与企微后台“设置API接收”配置时保持一致

EncodingAESKey

企微回调EncodingAESKey

企微后台

可以先在企微后台设置应用“设置API接收”的页面生成,或随机生成,需要与企微后台“设置API接收”配置时保持一致

5.5配置应用回调API信息【企微后台】

  1. 进入企微自建应用

    image.png

  2. 设置API接收

    image.png

    配置信息说明

    配置项

    配置值

    说明

    URL

    https://{domain}.com/restapi/thirdservice/we/com/inner/event/oneparty/callback/{corpid}

    domain使用真实域名进行替换

    corpid使用企业corpid替换

    示例:

    https://test.lydaas.com/restapi/thirdservice/we/com/inner/event/oneparty/callback/wwb697d33134e48cfc

    Token

    随机获取

    需要记录,后续在QA上关联企微账号使用

    EncodingAESKey

    随机获取

    需要记录,后续在QA上关联企微账号使用

5.6配置验证

  1. 企微账号关联验证

    账号管理状态,为授权成功

    image

    检查回流开关是否打开

    image.png

  2. 企微相关数据表结构

    说明

    配置完成后第二天检查

    image

  3. 企微相关调度任务

    说明

    配置完成后第二天检查

    image

6.运维监控

一方企微代理作为QA与企微通信统一转发的关键组件,一旦发生异常将影响QA产品企微相关功能的使用,如企微数据回流异常、营销活动企微组件发送异常等,因此需要对一方企微代理配置相应监控告警,当出现异常时能及时发现并处理。

建议对如下对象进行配置告警监控规则:

监控对象

监控项

告警规则

通知方式

服务器

CPU、内存、磁盘使用率

CPU使用率>=70%

内存使用率>=80%

磁盘使用率>=80%

钉钉/短信

EIP

带宽使用率

带宽使用率>=80%

钉钉/短信

Nginx

Nginx 进程是否存活

Nginx进程不存在

钉钉/短信

7.其他注意事项

重要

华为云GaussDB分析源字符编码

如果分析源使用的是华为云GaussDB,必须指定字符编码为UTF8,默认字符编码SQL_ASCII在解析企微数据的Unicode编码时会异常报错,导致QA调度任务失败。

【注意】字符编码在数据库创建完成后不支持修改,因此必须在创建时指定。

8.FAQ

8.1调用企微接口返回48002

现象

image

企微错误说明

image.png

解决办法

按照5.3企微后台配置权限

8.2 调用企微接口返回一直报502

在配置都没有问题的情况下(域名、可信ip)可以考虑QA的服务器ip是否在代理服务器的安全白名单中,需要开通80443端口

8.3企微常见错误码

https://developer.work.weixin.qq.com/document/path/96213