通过集成钉钉自建应用,实现在钉钉端内接收和响应告警的能力。
(本文档以钉钉开放平台新版为例)
创建自建应用
访问钉钉开发者后台应用开发 - 企业内部开发,创建应用。 (详见钉钉开发文档-创建企业内部应用-H5微应用)
应用图标可使用OncallBox官方图标。
复制企业 CorpId
点击页面右上角企业,在下拉菜单中复制CorpId备用。
复制应用凭证信息
前往凭证与基础信息页面,复制AgentID、 ClientID和 ClientSecret备用。
复制事件订阅信息
前往开发配置-事件与回调页面。
生成加密 aes_key和签名 Token备用。
注意:生成 aes_key 和 Token 后请将信息临时保存到其它地方,离开页面后信息会消失,后续会用到
回到OncallBox 集成中心 页面,选择即时消息 > 钉钉,在表单中填入 集成名称以及上一步复制的 应用信息后,点击保存创建。
保存后会看到网页配置地址、服务器出口IP地址以及事件订阅请求网址等信息,后边流程会用到。
添加酷应用、网页应用和机器人
创建酷应用酷应用-酷应用列表页面,点击创建酷应用按钮,选择扩展到群会话
进入到编辑酷应用页面,完成以下步骤:
第一步,填写基本信息,图标可使用官方icon。
第二步,配置功能设计,左侧选中群快捷入口和消息卡片。群快捷入口图标可使用OncallBox图标,桌面和移动端访问地址请复制集成详情里的酷应用网页地址。
跳过第三步功能开发,来到第四步预览发布,点击发布按钮并确认。
配置机器人与消息推送
进入应用能力-机器人页面,打开机器人配置,填写名称并上传图标,图标可使用OncallBox图标,保存即可。
配置应用地址
进入应用能力-网页应用页面
应用首页地址和PC端首页地址,内容为集成详情中的应用首页地址和PC端首页地址。保存。配置事件订阅
开发配置-事件订阅页面,配置请求网址,内容为集成详情中的 事件订阅请求网址,配置完成后保存。
保存按钮下方,选中群会话更换群名称、群内安装酷应用和群内卸载酷应用三种群会话事件,配置完成后保存。
申请消息发送权限
进入 权限管理 页面,申请qyapi_chat_manage、qyapi_get_member_by_mobile、qyapi_robot_sendmsg三项权限。此三项权限将允许当前应用获取自身所在群聊信息以及向群聊或个人发送消息的能力。
完成上述步骤后,进行应用发布-版本管理与发布,进行创建新版本,然后进行发布(注意把可见范围调整为全部员工,否则其他人无法使用)
应用发布后,就可以使用 手机端/PC 端 访问应用。首次访问需要登录并关联(钉钉<->OncallBox)账号,后续可以免登录使用。
在企业内部应用,使用场景群提供的API,实现群助手发送消息流程
在开发者后台-场景群页面,申请机器人,获取机器人ID参数,即robotCode。
说明
申请机器人需要审核,审批通过后可以查看ID,如下图所示。
在开发者后台-场景群页面,创建群模板,获取群模板id参数template_id。
绑定场景群-机器人到场景群-群模板,保存编辑,返回群场景列表。
进入对应群模板,进行提交审核,点击发布。
说明
审核自动通过,无需审批。
通过template_id调用创建群接口,获取openConversationId。
调用发送群助手消息接口,实现机器人群消息的发送。
把场景群机器人ID和场景群模板id配置到OncallBox的钉钉集成配置中,方便后续创建场景群及发送场景群消息使用
通过 Webhook 接入自定义服务,使用自定义机器人,支持在企业内部群和普通钉钉群内发送群消息,不支持发送单聊消息。
选择目标群,点击群设置
在机器人一栏,点击机器人
添加自定义机器人
创建自定义机器人
至少添加一种安全设置,可以选择自定义关键词,如『告警』
获取webhook地址并完成
注意内容要包括安全设置的关键词:告警
支持markdown
curl --location 'https://oapi.dingtalk.com/robot/send?access_token=c16e41244dbf66332c4345fa640b8dba11394beff196346fc620f986d76c23b5' \
--header 'Content-Type: application/json' \
--data-raw '{
"msgtype": "markdown",
"markdown": {
"title":"杭州天气告警",
"text": "#### 杭州天气 @150XXXXXXXX \n > 9度,西北风1级,空气良89,相对温度73%\n > \n > ###### 10点20分发布 [天气](https://www.dingtalk.com) \n"
},
"at": {
"atMobiles": [
"150XXXXXXXX"
],
"atUserIds": [
"user123"
],
"isAtAll": false
}
}'