🎨 业务场景设计

系统检测到某台服务器 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 运维告警外,该方案还可以无缝平移到 大客户公海线索指派(抢单按钮)

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐