5 分钟实现企业微信的机器人定时提醒

2021-11-08 19:31:50 浏览数 (1)

一、概述

本案例中用企业微信,添加机器人的方式,来达到消息推送的目的。例子中还读取了腾讯云账号的账户余额,并通过调用机器人Webhook url (http post 请求),实现定时提醒。

这里的定时提醒使用了腾讯云函数触发器,也可以通过 linux 自带的 crontab 工具实现定时触发。

二、实现过程

2.1 创建企业微信机器人

企业微信左侧聊天列表,选中需要创建机器人的群,右键添加机器人,并查看机器人的 webook url。

2.2 编写调用机器人 webhook 的脚本。

创建云函数,编写 python 代码。(或者本地编写,不使用云函数也可)

云函数 python 代码:

代码语言:python代码运行次数:7复制
# 首次使用,需安装requests、tencentcloud-sdk-python 依赖包
# pip3 install requests
# pip3 install tencentcloud-sdk-python
import json
import requests as requests

# 消息提醒
def main_handler(event, context):
    print("调用提醒函数")
    webhook = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxx'
    
    # 拼接待发送的内容 content
    mount = get_billing()
    threshold_value = 1000
    content = None
    if mount < threshold_value:
        content = f'账号余额为:{mount} 元,小于 {threshold_value} 元,请及时充值。'
    else:
        content = f'账号余额为:{mount} 元。'
    # 发送提醒
    requests.post(url=webhook, json={"msgtype": "text", "text": {"content": content}},
                  headers={'Content-Type': 'application/json'})

    return ("Hello World")

# 获取腾讯云账号余额,只做提醒的话不需要此部分
def get_billing():
    import json
    from tencentcloud.common import credential
    from tencentcloud.common.profile.client_profile import ClientProfile
    from tencentcloud.common.profile.http_profile import HttpProfile
    from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
    from tencentcloud.billing.v20180709 import billing_client, models
    try:
        # 你的账号的 secretID 和secretKey
        cred = credential.Credential("你账号的secretID", "你账号的secretKey")
        httpProfile = HttpProfile()
        httpProfile.endpoint = "billing.tencentcloudapi.com"

        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        client = billing_client.BillingClient(cred, "", clientProfile)

        req = models.DescribeAccountBalanceRequest()
        params = {}
        req.from_json_string(json.dumps(params))

        # DescribeAccountBalance: 获取账号余额的API
        resp = client.DescribeAccountBalance(req)
        print(resp.to_json_string())
        
        # 获取账户余额
        mount = resp.Balance * 0.01
    except TencentCloudSDKException as err:
        print(err)
    return mount

2.3 添加定时调度。

方式一:使用云函数,可直接添加触发器,添加 cron 表达式,启动即可。

方式二:使用 linux crontab工具,添加定时任务。网上例子比较多,这里不在赘述。

三、查看效果

企业微信群的提醒效果企业微信群的提醒效果

参考阅读:

[1] 腾讯云函数实现定时触发:https://cloud.tencent.com/document/product/583/37509

[2] 企业微信机器人配置说明:https://open.work.weixin.qq.com/api/doc/90000/90136/91770

0 人点赞