一、介绍
- 使用机器人通知功能,可直接在平台中快速查看自动化测试结果
- 根据使用平台来看,目前个人自动化项目兼容了企微(wecom)和飞书(lark)两种平台的机器人通知
二、企微
企微的机器人是某个群组被添加之后,创建者可以在机器人详情页看到该机器人特有的webhookurl。可以向该webhookurl发起HTTP POST 请求,即可实现给该群组发送消息
1. 自定义机器人
支持推送的消息格式有文本(text)、markdown(markdown、markdown_v2)、图片(image)、图文(news)、文件(file)、语音(voice)、模板卡片(template_card)八种消息类型
具体请参考:群机器人配置说明
1.1 优化
- 当通过企微消息的超链接访问服务器上的文件时,可通过SMB实现
具体请参考:ubuntu设置smb
- 设置完成之后,服务器上的文件地址即为
file://${ip}/vmshare/test_data/complete.html
注意:
1.samba配置文件中除path路径修改外,其他保持不变
2.${ip}为服务器地址,vmshare为samba配置文件中secion名,test_data/complete.html为complete.html文件在samba配置文件中path目录的相对路径
三、飞书
对比企微,飞书有两种机器人模式,一种是自定义机器人,一种是应用机器人
1. 自定义机器人
- 自定义机器人是一种只能在当前群聊中使用的机器人。该类机器人无需经过租户管理员审核,即可在当前群聊中通过调用 webhook 地址的方式完成消息推送
- 向自定义机器人 webhook 地址发送 POST 请求时,支持推送的消息格式有文本、富文本、图片消息以及群名片(自定义机器在任一群的群设置添加)
具体请参考:自定义机器人使用指南
2. 应用机器人(2026年6月30日下线)
上述自定义机器人和企微的自定义机器人用法基本一致,每个群都可以添加一个自定义机器人,且每个机器人的url各不相同,通过url来区分消息发到哪个机器人
注意:发送到飞书自定义机器人的文本内容不支持markdown语法
2.1 创建
- 应用机器人其实也需要手动创建,只是创建的入口不在群聊,而是在飞书机器人助手
- 创建流程,设置Webhook触发和发送飞书消息
- Webhook触发设置
- 仿照自定义机器人机制,向应用机器人发送消息。其中包含请求url和请求体内容,且请求体内容可以随意设置
- 发送飞书消息设置
- 设置消息发送到哪一对象
- 设置消息中哪些内容发送到对象
注意:上述Webhook的内容来源于第一步中Webhook触发设置的请求体内容,且内容支持markdown语法
- 设置不同条件分支,通过请求体内容判断满足哪一分支,即把消息发到指定群
具体请参考:飞书机器人助手快速入门
2.2 优化(其他机器人通用)
飞书应用机器人的超链接目前仅支持 https、http 协议头。当访问服务器上的文件时,则使用Nginx配置静态文件服务器
- 安装 Nginx
sudo apt update
sudo apt install nginx
- 配置 Nginx
- 在配置文件中添加或修改内容
sudo vim /etc/nginx/sites-available/default

注意:每一项新增配置最后,都要以
;结尾
- 重启 Nginx
- 保存配置文件后,重启 Nginx 使配置生效
sudo systemctl restart nginx
- 访问特定文件
- 如果某一文件的路径为
${path}/test_data/report.html,则可以通过以下URL直接访问该文件:
- 如果某一文件的路径为
http://${ip}/test_data/report.html
注意:${ip}为nginx配置文件中sever_name后面的地址,${path}为nginx配置文件中root后面的路径
3. 飞书集成平台
3.1 背景
- 飞书机器人助手,2026-06-30 起下线,流程编排入口不可用
- 原机器人应用,仍在飞书开放平台存在,群内头像/名称不变
注意:下线的是助手编排界面,不是机器人本身。集成平台通过原应用的 App ID / App Secret发消息,群里仍是同一个 bot
3.2 使用
3.2.1 总体架构
推荐节点顺序:
网址触发器 → 动态脚本 → 分支 → 发送消息卡片(×N)
- 网址触发器:接收 CI / 测试服务 POST 的 JSON
- 动态脚本:把 Webhook 字段组装成飞书卡片 JSON 字符串
-
分支:按
robot(或业务字段)路由到不同群 -
发送消息卡片:以原机器人身份发到对应
chat_id群
3.2.2 前置准备
3.2.2.1 获取原机器人 App ID / App Secret
- 打开飞书开放平台 → 开发者后台
- 选择任一应用,进入应用详情,获取详情页面对应的 URL
注意:如果没有任何应用,直接使用https://open.feishu.cn/app/cli_xxx/baseinfo - 使用浏览器访问原机器人应用,浏览器的地址中会包含该机器人的 App ID
- 把上述获的 App ID 替换到 URL 中
- 访问替换后的 URL,再获取 App Secret
3.2.3 工作流配置步骤
3.2.3.1 新建工作流
- 打开飞书集成平台 AnyCross
- 新建工作流(示例名称:
自动化消息/消息推送) - 保存后 发布 / 启用(未发布时 Webhook 可能返回
not found)
3.2.3.2 新建网址触发器
新建网址触发器:

首次获取出参:
- 用 curl 向 Webhook POST 一次示例 JSON
curl -X POST "https://open.feishu.cn/anycross/trigger/callback/你的回调ID" \
-H "Content-Type: application/json" \
-d '{
"robot": 3,
"msg_type": "markdown",
"content": {
"markdown": "**<font color=blue>测试</font>**"
}
}'
- 触发器 → 测试 → 获取数据并预览,点击 应用为出参
出参字段路径(供后续引用):
| 字段 | 路径 |
|---|---|
| 路由字段 | body.robot |
| 报告正文 | body.content.markdown |
3.2.3.3 动态脚本
集成平台不支持在卡片 JSON 里手写 {{webhook-trigger-1.xxx}} 自动替换,需用脚本生成卡片字符串
添加入参:
| 属性名 | 绑定变量 |
|---|---|
markdown |
网址触发器 → body → content → markdown
|
robot |
网址触发器 → body → robot
|


注意:添加入参时,可形象引用网址触发器的出参
编写代码:
function handler(input) {
const md = input.markdown;
const rb = input.robot;
const card = {
config: {
wide_screen_mode: true,
},
elements: [
{
tag: 'div',
text: {
tag: 'lark_md',
content: md,
},
},
],
};
return JSON.stringify(card);
}
注意:
1.变量来自入参中的变量,卡片内容来自下文的卡片消息格式
2.出参就是整个函数的返回结果,即JSON.stringify(card)
3.2.3.4 分支
| 分支 | 条件 | 发送节点 | 目标群(示例) |
|---|---|---|---|
| 分支 1 |
script-1.robot 等于 1
|
im-1 | 自动化消息群 |
| 分支 2 |
script-1.robot 等于 2
|
im-2 | 质量部群 |
| 分支 3 |
script-1.robot 等于 3
|
im-3 | 机器人测试群 |
| 默认 | 兜底 | 可选 | 默认群或不发 |
设置条件:


注意:添加对比参数时,也可形象引用网址触发器的出参
3.2.3.5 发送消息卡片
| 配置项 | 值 |
|---|---|
| 连接 / 应用凭证 | 原机器人 App 凭证 |
| 接收者 ID 类型 | chat_id |
| 接收者 | 选择对应群(机器人须在群内) |
| 卡片 content |
仅绑定 script-1.card_json(插入变量,表达式模式) |
注意:测试报告需红/绿/蓝/黄着色时,必须发送卡片消息,因为 post 富文本 + md 显示后不带有颜色,具体可参考:卡片JSON构建卡片
配置凭证:

配置入参(实际是发送对象+发送内容):

注意:配置发送内容时,可形象引用
动态脚本的出参












