告别单向通知:基于 QIWE 机器人交互卡片 API 实现可回传的智能运维闭环
·
🎨 业务场景设计
系统检测到某台服务器 CPU 负载过高,群机器人立即推送一张带有交互性质的富文本卡片,卡片下方内嵌两个操作按钮:【🔋 动态扩容】和【🔇 暂且忽略】。工程师在群内点击按钮后,直接触发对应的底层自动化脚本,且卡片状态在群内实时变更为“已处理”。
💻 核心实现步骤与代码
步骤 1:向机器人 Webhook 投递带按钮的组件卡片
import requests
QIWE_ROBOT_URL = "https://api.qiweapi.com/v1/webhook/send?key=YOUR_ROBOT_KEY"
card_payload = {
"msgtype": "template_card",
"template_card": {
"card_type": "button_interaction",
"source": {
"desc": "云原生智能监控"
},
"main_title": {
"title": "生产环境 Kubernetes 集群节点 CPU 异常告警"
},
"description": {
"desc": "异常节点: node-us-east-01\n监控指标: CPU 核心利用率 > 94%"
},
"button_list": [
{
"text": "一键横向扩容",
"style": 1, # 绿色高亮组件
"key": "action_k8s_scale_out" # 点击后回传至我们系统的动作标识
},
{
"text": "暂不处理",
"style": 4, # 红色警告组件
"key": "action_ignore_alert"
}
]
}
}
res = requests.post(QIWE_ROBOT_URL, json=card_payload)
print(res.json())
步骤 2:在交互组件回调中动态刷新群消息状态
当团队内某位工程师在群里点击“一键横向扩容”按钮时,QIWE API 平台会向我们在开发者后台配置的 “交互组件回调 URL” 推送包含操作人信息的 POST 请求。我们在后台处理完自动化扩容逻辑后,直接给平台响应更新后的卡片 JSON,即可瞬间替换掉群内的旧卡片。
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/api/robot/callback', methods=['POST'])
def handle_robot_action():
payload = request.json # 已通过平台中间件解密
clicked_key = payload.get("button", {}).get("key")
operator_user = payload.get("click_user", {}).get("userid")
if clicked_key == "action_k8s_scale_out":
# 触发底层云原生 API 或 Ansible 扩容脚本
trigger_cluster_scale()
# 核心技巧:处理成功后返回新结构,原地替换群内卡片,防止他人二次误触
return jsonify({
"errcode": 0,
"errmsg": "ok",
"template_card": {
"card_type": "button_interaction",
"source": {"desc": "云原生智能监控"},
"main_title": {"title": "生产环境 Kubernetes 集群节点 CPU 异常告警"},
"description": {"desc": f"最新状态:🟢 已由处理人 ({operator_user}) 成功执行集群扩容,指标已恢复正常。"}
# 将 button_list 置空,消除按钮,完成交互闭环
}
})
return jsonify({"errcode": 0, "errmsg": "processed"})
def trigger_cluster_scale():
pass
💡 行业应用外延
这种“可交互卡片”的设计模式能够彻底激活企业内部的信息流转效率。除 IT 运维告警外,该方案还可以无缝平移到 大客户公海线索指派(抢单按钮)
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)