AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


企业微信+Dify=Chatops?

发布日期:2025-03-10 06:38:40 浏览次数: 1599 来源:小红帽rh
推荐语

DevOps自动化运维新思路,用聊天的方式提升效率。

核心内容:
1. DevOps工程师面临的效率困境及自动化目标
2. 企业微信配置和Dify工作流设置步骤
3. 通过聊天实现自动化运维的代码实现和工作原理

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

1.背景与目标

1.1 需求背景

作为DevOps工程师面临的效率困境:

  1. 权限集中导致的流程阻塞

  • 生产环境发布权限需严格管控,所有正式版本发布需经本人手动操作
  • 日均处理发布请求20+次,单次人工操作耗时3-5分钟
  • 传统操作平台体验短板

  • 1.2 核心目标

    • 实现自动化人机协作,用聊天的方式实现自动化运维

    2. 环境准备

    2.1 企业微信配置

    企业微信文档地址:https://developer.work.weixin.qq.com/document/path/90238

    • 应用创建与权限配置


    • 消息接口配置
    • 回调服务部署 
      企业微信文档地址:https://developer.work.weixin.qq.com/tutorial/detail/38
      python加解密库下载: https://developer.work.weixin.qq.com/devtool/introduce?id=10128

    本文代码链接: https://github.com/AYYQ127/wecome-dify-chatops

    • 启动服务(启动前需要安装requirements.txt内容)
    只有在启动服务成功后,才能保存企业微信的内容,因为企微自己会验证接口状态,当然中间还需要nginx代理,将域名代理到对应的回调服务的端口。
    server {    listen 443 ssl http2;    server_name chatops.aaa.bbb;
        error_log /data2/www/log/nginx/chatops.aaa.bbb-443.error.log;
        location / {        proxy_pass http://10.37.2.152:9000;        include proxy.conf;    }
    }

    2.2 Dify工作流设置

    工作流创建


    代码执行1

        脚本工作原理:通过判断输入变量是否合法,匹配到相应的流程,分别执行代码2和代码3,或直接结束。

    代码执行2

        脚本工作原理:通过prometheus接口,查询pod监控数据,返回结果

    代码执行3

        脚本工作原理:通过jenkins接口,触发构建任务执行。

    接口对接


    3. 应用消息发送

    这里需要用到企业ID和应用的secret还有应用的agentID。
    企业微信文档地址:https://developer.work.weixin.qq.com/document/path/90236 分为两步,第一步获取accresstoken;第二步构建消息体,并发送消息。
    企业微信服务器在五秒内收不到响应会断掉连接,如果dify后面接入LLM,需要启用异步的方式处理,否则不会返回消息。

    async def _process_and_send_msg(user, wecomtextContent):
        """真正的异步任务"""
        try:
            # 调用 Dify 工作流
            content = await asyncio.to_thread(dify.run_workflow, 'difyuser', wecomtextContent)

            # 调试信息
            print("Content:", content)

            # 获取并清理文本内容
            text_content = content['data']['outputs']['text']
            text_content = text_content.replace("```""").strip()
            # 调试信息
            print(text_content)

            # 异步发送企业微信应用消息
            await asyncio.to_thread(wecom_send_msg.send_app_msg, user, text_content)

        except Exception as e:
            print(f"异步处理消息出错: {e}")

    在dify中有自己的消息返回格式,需要严格遵守这种格式,修改脚本中函数返回方式

    def main(arg1: str, arg2: str) -> dict:
        return {
            "result": arg1 + arg2,
        }

    4. 典型场景实现

    4.1 智能运维场景

    • 服务器状态监控

    • 自动构建发版处理

    5. 接入Deepseek

    • 工作流变化
    • 发送消息

      53AI,企业落地大模型首选服务商

      产品:场景落地咨询+大模型应用平台+行业解决方案

      承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

      联系我们

      售前咨询
      186 6662 7370
      预约演示
      185 8882 0121

      微信扫码

      添加专属顾问

      回到顶部

      加载中...

      扫码咨询