【Serverless版】企微群机器人开发

简介: 【Serverless版】企微群机器人开发

背景介绍


  我们公司一直在用企业微信来做员工的沟通工具,不少群里面都有添加一下群聊机器人来做一下任务的提醒,那么做为群聊机器人的一个应用场景自然就是执行定义任务,如定时发送会议提醒,周报填写提醒等等,那往往我们就需要有一台不关机的个人PC或者云服务器来支持群聊机器人的长时间运行(Windows系统中的广告可以在任务计划程序中找到并关闭),个人自用的PC电脑其实不太适合长时间的运行(Windows谁用谁知道,没多久就会变卡),云服务器也需要花费不少的费用,所以我们就需要有一个Serverless的平台来解决这个问题(免费的额度也够用了,绝对超值)。


案例介绍


  我们通过采用腾讯云平台中Serverless产品下的云函数来做服务支撑完成一个企业微信群机器人定时每天早8点发送当天天气情况的一个案例,实现此案例你需要做如下准备工作:

  1. 注册腾讯云平台:cloud.tencent.com/
  2. 注册企业微信平台:work.weixin.qq.com/
  3. 使用VSCodeIDE并安装插件《Tencent Serverless Toolkit for VS Code》


企微群机器人如何发送消息:


  实现企微群机器人消息发送主要是通过向分配给机器人的Webhook地址发送请求来完成的,如果你是群主当你拉机器人进群后查看机器人信息就可以得到机器人对应的Webhook地址了,特别特别要注意:一定要保护好机器人的webhook地址,避免泄漏!不要分享到github、博客等可被公开查阅的地方,否则坏人就可以用你的机器人来发垃圾消息了。。

1.png


项目环境准备:

  1. 初始化项目:npm init -y
  2. 初始化Ts配置:tsc --init
  3. 安装axios来实现请求数据:yarn add axios


模块划分:

  1. model.ts:消息模型(对应API文档),创建消息模型函数;
/**
 * 消息类型
 */
export enum MsgType {
    /** markdown类型 */
    markdown = "markdown",
}
/**
 * markdow消息模型
 */
export type MarkdownContext = {
    /** markdown内容,最长不超过4096个字节,必须是utf8编码 */
    content: string,
}
/**
 * 消息模型基类
 */
export type Message<T> = {
    msgtype: MsgType & T,
    [type: string]: T,
}
/**
 * 创建待发送消息
 * @param type 
 * @param content 
 * @returns 
 */
function createMessage<T>(type: MsgType, content: T) {
    return {
        msgtype: type,
        [type]: content,
    } as Message<T>;
}
/**
 * 创建markdown类型的消息
 * @param content 
 * @returns 
 */
export function createFileMessage(content: FileContext) {
    return createMessage<FileContext>(MsgType.file, content);
}
复制代码
  1. notice.ts:发送各类型通知函数;
import axios from 'axios';
import { createFileMessage, createImageMessage, createMarkdownMessage, createNewsMessage, createTextMessage, FileContext, ImageContext, MarkdownContext, Message, NewsContext, TextContext } from './model';
function request<T>(webhook: string, message: Message<T>) {
    if (!webhook) throw new Error("请设置正确机器人的webhook地址");
    axios.post(webhook, message).then(res => {
        const { status, data } = res;
        if (status === 200 && data) {
            console.log(data.errcode === 0 ? "发送成功" : data.errmsg);
        }
    }).catch(err => {
        console.log(err);
    })
}
/** 发起Markdown类型消息通知 */
export const requestMDNotice = (webhook: string, mdContext: MarkdownContext) => request<MarkdownContext>(webhook, createMarkdownMessage(mdContext));
复制代码
  1. index.ts:入口执行天气信息获取和调用发送Markdown类型消息。
import { requestMDNotice } from "./notice";
import axios from 'axios';
import { AMAP_WEATHER_API, ENTERPRISE_WECHAT_ROBOT_WEB_HOOK } from "./config";
axios.get(AMAP_WEATHER_API).then(res => {
    const { status, data } = res;
    if (status === 200 && data) {
        if (data.status === '1' && data.infocode === '10000') {
            let message = ''
            data.lives.forEach((live: any) => {
                message += `
##### 今天${live.province},${live.city}天气情况
* 天气: ${live.weather}
* 气温: ${live.temperature} 摄氏度
* 风向: ${live.winddirection}
* 风力: ${live.windpower} 级
* 湿度: ${live.humidity}
* 数据发布的时间: ${live.reporttime}\n
                `
            });
            // 向企业微信群发送MD格式的通知
            requestMDNotice(ENTERPRISE_WECHAT_ROBOT_WEB_HOOK, {
                content: message
            })
        }
    }
})
复制代码
  1. 高德天气查询API和机器人Webhook地址配置:
// 企业微信群机器人webhook地址
export const  ENTERPRISE_WECHAT_ROBOT_WEB_HOOK = "《请填写你自己机器人的webhook地址》";
// 高德天气查询API,城市地址在高德开发文档查询
export const  AMAP_WEATHER_API = "《请填写你自己申请天气查询地址》"
复制代码


运行调试:

  • 通过ts-node直接执行我们的入口文件:ts-node .\src\index.ts,输出发送成功后就可以在企微群看到最新的消息了。

2.png


云函数执行定时发送天气情况任务:


安装并认识腾讯云函数开发插件《Tencent Serverless Toolkit for VS Code》:

  • 拉取云端的云函数列表,并触发云函数。
  • 在本地快速创建云函数项目。
  • 使用模拟的 COS、CMQ、CKafka、API 网关等触发器事件来触发函数运行。
  • 上传函数代码到云端,更新函数配置。
  • 在云端运行、调试函数代码。


初始化并编写云函数:

  1. 通过VSCode打开一个空的文件夹;
  2. 认准腾讯云Logo
    网络异常,图片无法展示
    |
    打开插件,第一次使用需要绑定用户凭证,绑定地域;
  3. 在本地函数窗口创建函数=>选择Nodejs版本=>填写函数名,得到如下项目基础模板:

3.png

  1. 将我们ts编写的机器人发送通知的代码编译为js版本,直接运行tsc后将得到的内容覆盖云函数的src目录(index.js文件需要copy内容到main_handler函数中);
  2. 因为我们有实用axios模块来发送请求,所以云函数项目中也需要安装:进入云函数项目的**src**目录执行:npm init -y && yarn add axios


上传并在云端部署调试

  • 云函数的开发到此就完成了,通过本地函数窗口执行上传云函数(node_module如果内容过多建议先在控制台进行安装),并在控制台执行部署和测试;

4.png


配置触发管理(定时任务)

  • 在触发管理菜单中创建新的触发器来执行定时任务Cron表达式通过crontab.guru/every-day查询调整,提交后即可完成,期待明早的消息提醒吧。

5.png6.png

结语:


  本篇涉及到的内容点有:高德开发平台天气查询API使用,腾讯云Serverless云函数使用,企微群机器人配置及API,共同完成了今天的实战案例,你还有什么有趣的应用场景呢?说说看?😂



相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
2月前
|
机器学习/深度学习 数据采集 监控
量化交易机器人开发风控模型对比分析与落地要点
本文系统对比规则止损、统计模型、机器学习及组合式风控方案,从成本、鲁棒性、可解释性等维度评估其在合约量化场景的适用性,结合落地实操建议,为不同阶段的交易系统提供选型参考。
|
2月前
|
人工智能 运维 安全
加速智能体开发:从 Serverless 运行时到 Serverless AI 运行时
在云计算与人工智能深度融合的背景下,Serverless 技术作为云原生架构的集大成者,正加速向 AI 原生架构演进。阿里云函数计算(FC)率先提出并实践“Serverless AI 运行时”概念,通过技术创新与生态联动,为智能体(Agent)开发提供高效、安全、低成本的基础设施支持。本文从技术演进路径、核心能力及未来展望三方面解析 Serverless AI 的突破性价值。
|
6月前
|
机器人 API 数据安全/隐私保护
微博评论脚本, 新浪微博自动评论机器人,autojs工具开发
该机器人包含登录验证、内容识别、智能回复和频率控制功能,使用AutoJS的控件操作API实现自动化。
|
4月前
|
传感器 人工智能 机器人
具身智能9大开源工具全景解析:人形机器人开发必备指南
本文旨在对具身智能、人形机器人、协作机器人、AI机器人、端到端AI系统、AI Agent、AI Agentic、空间智能或世界模型等前沿领域中具有重要影响力的开源软件产品或工具进行深入分析,重点聚焦于支持这些先进AI能力实现的工具、平台和框架。
1643 8
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
TsingtaoAI具身智能机器人开发套件及实训方案
该产品套件创新性地融合了先进大模型技术、深度相机与多轴协作机械臂技术,构建了一个功能强大、灵活易用的人机协作解决方案。其核心在于将智能决策、精准感知与高效执行完美结合,为高校实训领域的发展注入新动力。
784 10
|
10月前
|
人工智能 开发框架 机器人
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
AstrBot 是一个开源的多平台聊天机器人及开发框架,支持多种大语言模型和消息平台,具备多轮对话、语音转文字等功能。
5767 38
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
|
11月前
|
人工智能 自动驾驶 安全
Cosmos:英伟达生成式世界基础模型平台,加速自动驾驶与机器人开发
Cosmos 是英伟达推出的生成式世界基础模型平台,旨在加速物理人工智能系统的发展,特别是在自动驾驶和机器人领域。
1017 15
Cosmos:英伟达生成式世界基础模型平台,加速自动驾驶与机器人开发
|
10月前
|
Cloud Native 安全 Serverless
云原生应用实战:基于阿里云Serverless的API服务开发与部署
随着云计算的发展,Serverless架构日益流行。阿里云函数计算(Function Compute)作为Serverless服务,让开发者无需管理服务器即可运行代码,按需付费,简化开发运维流程。本文从零开始,介绍如何使用阿里云函数计算开发简单的API服务,并探讨其核心优势与最佳实践。通过Python示例,演示创建、部署及优化API的过程,涵盖环境准备、代码实现、性能优化和安全管理等内容,帮助读者快速上手Serverless开发。
|
监控 Serverless 云计算
探索Serverless架构:开发实践与优化策略
本文深入探讨了Serverless架构的核心概念、开发实践及优化策略。Serverless让开发者无需管理服务器即可运行代码,具有成本效益、高可扩展性和提升开发效率等优势。文章还详细介绍了函数设计、安全性、监控及性能和成本优化的最佳实践。
|
编解码 网络协议 机器人
顶顶通电话机器人开发接口对接大语言模型之实时流TTS对接介绍
大语言模型通常流式返回文字,若一次性TTS会导致严重延迟。通过标点断句或流TTS可实现低延迟的文本到语音转换。本文介绍了电话机器人接口适配流TTS的原理及技术点,包括FreeSWITCH通过WebSocket流TTS放音,以及推流协议和旁路流对接的详细说明。
927 1

相关产品

  • 函数计算