1、完成钉钉与腾讯会议sso配置,完成配置后,钉钉用户账号和组织架构会同步到腾讯会议后台,两个系统的userid字段保持一致。参考:腾讯会议商业版2.0对接SSO说明文档V1.0。
2、服务器已经部署好linux操作系统,并且完成nodejs环境安装。

整体开发配置如上图,文章最后提供的工程完成了腾讯会议和钉钉API对接开发,本文主要介绍的是如何完成腾讯会议和钉钉后台的配置,以及如何启动工程。
1、使用腾讯会议管理员账号登录企管平台,在左侧的企业管理 - 高级 - 企业自建应用菜单点击进入应用设置页面。点击创建应用,同步会议信息到钉钉需要监听用户从腾讯会议客户端创建的会议事件消息,因此这里应用类型选择企业级。

2、基础信息和凭证,填写对应信息,然后进行下一步。

3、应用安全和可用范围,白名单处填写部署的服务所在机器的公网出口IP,如果公网出口IP有多个时需要都配置上。应用可用范围与钉钉应用的保持一致即可。

4、事件订阅,EncodingAESKey和Token复制到项目工程服务端的配置文件中,URL为后端服务所在的地址+端口+路径(路径为/api/webhook)。需要订阅的事件消息类型与截图中保持一致。

1、使用钉钉管理员账号登录钉钉开放平台,点击创建应用按钮创建一个应用。

2、填写应用名称,应用描述并上传应用图标。

3、为应用添加网页应用和机器人能力。

4、网页应用配置,这里配置的应用首页地址为移动端点击应用打开的URL,PC端首页地址为PC端点击应用后打开的地址。目前钉钉已有的能力只支持PC端跳转腾讯会议客户端,移动端不支持,因此两者的实现方式不一样,这里首页配置也不相同。配置的时候需要注意,URL前后不要有空格,否则后续应用配置无法生效。

5、机器人配置,填写必填的内容即可,只用到了消息推送接口,没有消息接收功能。

6、权限管理设置,需要用到的钉钉接口权限如下,需要都勾上。授权范围根据实际需求选择。
权限类型 | 权限信息 | 使用的接口 | 权限点code | 用途 |
|---|---|---|---|---|
个人权限 | 日历应用中日程写权限 | 创建日程 修改日程 删除指定日程 新增日程参与人 删除日程参与人 | Calendar.Event.Write | 将会议信息同步到钉钉日程 |
个人权限 | 调用SNS API时需要具备的基本权限 | 查询个人授权记录 | snsapi_base | 默认开通 |
通讯录管理 | 通讯录部门信息读权限 | 无 | qyapi_get_department_list | 应用配置权限范围需要勾选 |
通讯录管理 | 成员信息读权限 | 查询用户详情 根据unionid查询用户 | qyapi_get_member | 钉钉部分接口使用userid,部分接口使用unionid,因此需要调用接口转换id |
待办任务 | 待办应用中待办写权限 | 创建待办 删除钉钉待办任务 | Todo.Todo.Write | 将会议信息同步到待办 |
考勤 | 调用企业API基础权限 | 获取企业accessToken(企业内部应用) 生成jsapi ticket 自定义机器人接入发送消息 | qyapi_base | 默认开通 |
机器人 | 企业内机器人发送消息权限 | 人与人会话中机器人发送普通消息 | qyapi_robot_sendmsg | 发送云录制完成消息 |
7、安全设置,这里服务器出口IP按需设置,重定向URL填写应用首页地址。

8、版本管理与发布,点击创建新版本,填写相关信息后保存发布。

在启动应用前,需要完成服务端和网页端工程的启动参数配置。配置时,将工程根目录的.env.example文件重命名为.env,然后编辑其中的参数。需要配置的参数主要是必填参数和可选参数两部分。
################################################################### 必填参数 开始 ###################################################################
# 钉钉对接参数(前端)- 前端环境变量必须以 REACT_APP_ 为前缀
# 企业ID,在钉钉开发者后台获取
# 示例:ding1234567890abcdef
REACT_APP_CORP_ID=
# 应用的Client ID(原AppKey和SuiteKey),在钉钉开发者后台应用详情页获取
# 示例:dingoaabc123def456
REACT_APP_CLIENT_ID=
# 后端服务配置(前端)
# 后端服务地址,后端服务和前端部署在同一台机器上时不需要设置,后端URL和前端URL需要是在同一个域名下
# 示例:192.168.1.100 或 api.example.com
REACT_APP_SERVER_URL=
# 后端服务协议类型,http或者https
# 示例:https
REACT_APP_SERVER_PROTOCOL=http
# 前端server地址,后端用于回调或通知前端
# 示例:http://dingtalk-test.company.cn:7000
FRONT_END_SERVER_URL=
# 腾讯会议对接参数
# 腾讯会议应用APPID,在腾讯会议开发者平台获取
# 示例:1300000000
WEMEET_APPID=
# 腾讯会议应用SDKID,在腾讯会议开发者平台获取
# 示例:1000000000
WEMEET_REST_API_SDKID=
# 腾讯会议API应用SecretID,在腾讯会议开发者平台获取
# 示例:your_secret_id_here
WEMEET_REST_API_SECRET_ID=
# 腾讯会议API应用SecretKey,在腾讯会议开发者平台获取
# 示例:your_secret_key_here
WEMEET_REST_API_SECRET_KEY=
# 腾讯会议webhook回调token,在腾讯会议开发者平台获取
# 示例:your_webhook_token_here
WEMEET_WEBHOOK_TOKEN=
# 腾讯会议webhook回调AES密钥,在腾讯会议开发者平台获取
# 示例:your_webhook_aes_key_here
WEMEET_WEBHOOK_AES_KEY=
# 腾讯会议IDaaS/Oneid免登链接前缀地址,需要替换成自己所在环境的地址
# 示例:https://oauth2.account.tencent.com/v1/sso/jwtp/12xxx9/13xxx8/kit/meeting
WEMEET_SSO_URL=
# 管理员用户ID
WEMEET_ADMIN_USERID=your_admin_userid
# 钉钉对接参数(后端)
# 企业ID,与前端CORP_ID相同
# 示例:ding1234567890abcdef
DINGTALK_CORP_ID=
# 钉钉应用ID,在钉钉开发者后台获取
# 示例:app_1234567890abcdef
DINGTALK_APP_ID=
# 钉钉应用Agent ID,在钉钉开发者后台获取
# 示例:123456789
DINGTALK_AGENT_ID=
# 钉钉应用Client ID(原AppKey和SuiteKey),在钉钉开发者后台获取
# 示例:dingoaabc123def456
DINGTALK_CLIENT_ID=
# 钉钉应用Client Secret(原AppSecret和SuiteSecret),在钉钉开发者后台获取
# 示例:your_client_secret_here
DINGTALK_CLIENT_SECRET=
# 钉钉机器人编码,在钉钉开发者后台获取
# 示例:robot_1234567890abcdef
DINGTALK_ROBOT_CODE=
# 预约普通会议时是否创建钉钉日程,对周期会议不生效,周期会议固定会创建日程
# 可选值:true/false
# 示例:true
DINGTALK_CALENDAR_SWITCH=false
# 预约普通会议时是否创建钉钉待办,对周期会议不生效,周期会议固定会创建待办
# 可选值:true/false
# 示例:true
DINGTALK_TODO_SWITCH=true
# 后端指定端口
# 示例:7001
REACT_APP_API_PORT=7001
################################################################### 必填参数 结束 ###################################################################1)在在钉钉应用设置 - 基础信息 - 凭证与基础信息页面,获取REACT_APP_CORP_ID和钉钉REACT_APP_CLIENT_ID参数。

1)在腾讯会议自建应用设置 - 基础信息和凭证页面,获取腾讯会议APPID(WEMEET_APPID)、腾讯会议应用SDK ID(WEMEET_REST_API_SDKID)、腾讯会议API应用Secret ID(WEMEET_REST_API_SECRET_ID)和腾讯会议API应用Secret Key(WEMEET_REST_API_SECRET_KEY)参数。

2)在腾讯会议自建应用设置 - 事件订阅页面,获取腾讯会议webhook回调token(WEMEET_WEBHOOK_TOKEN)和腾讯会议webhook回调AES密钥(WEMEET_WEBHOOK_AES_KEY)参数。

3)使用超管账号登录腾讯会议企管平台,在企业管理 - 用户管理 - 用户列表页面点击用户列表管理按钮进入oneid设置页面。

4)在登录 - 认证源页面点击添加认证源,选择JWT 。

5)Issuer字段填meeting,将登录链接复制保存下来,链接的内容为“https://oauth2.account.tencent.com/v1/sso/jwtp/129xxx99/1306xxx948/kit/{app_type}”,将{app_type}替换成meeting,得到的新链接“https://oauth2.account.tencent.com/v1/sso/jwtp/129xxx99/1306xxx948/kit/meeting”即为WEMEET_SSO_URL,将其填写到服务端配置文件中。
点击生成新的密钥对并下载,得到私钥文件。将文件名改为“rsa_private_key.pem”。

6)关联规则配置与下图保持一致即可。

1)在钉钉应用设置 - 基础信息 - 凭证与基础信息页面,获取钉钉CorpId(DINGTALK_CORP_ID)、钉钉App ID(DINGTALK_APP_ID)、钉钉AgentId(DINGTALK_AGENT_ID)、钉钉clientID(DINGTALK_CLIENT_ID)、钉钉clientSecret(DINGTALK_CLIENT_SECRET)参数。

2)在钉钉应用设置 - 应用能力 - 机器人页面,点击复制RobotCode获取钉钉机器人code(DINGTALK_ROBOT_CODE)参数。

3、私钥文件配置
将前面获取到的rsa_private_key.pem文件保存到工程目录下的“/server/config”路径下。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。