「这是我参与2022首次更文挑战的第8天,活动详情查看:2022首次更文挑战」
前言
基于腾讯云函数+twikoo组合,将评论信息推送至企业微信(注册企业微信、创建应用),编写云函数(接收数据并封装,调用企业微信API获取token验证并触发消息发送)
开发说明
<1>注册企业微信,创建一个应用
登录网页版企业微信,进入企业微信管理后台,选择应用管理->自建(创建应用)
应用创建完成,则可查看相关的AgentId、Secret,在企业微信后台中查看我的企业->企业信息(查看企业ID)
<2>创建API函数,参考hexo引入twikoo的内容,创建基于腾讯云的云函数
需要CloudBase环境支持,可选择适配的套餐组合进行构建
创建云函数,环境选择Python3.6,代码填充如下所示:()
# 构建思路
a.调用企业微信API获取token信息并验证
b.根据toekn触发企业微信消息发送
c.定义主函数接收请求参数并校验,调用方法触发消息发送
# -*- coding: utf8 -*-
import requests
import json
# 调用企业微信API获取token信息
def getToken(id,secert):
url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + id + "&corpsecret=" + secert
r =requests.get(url)
token_json = json.loads(r.text)
# print(tocken_json['access_token'])
# 返回验证的token信息
return token_json['access_token']
# 自定义封装方法验证toekn信息并触发企业微信消息发送
def sendMsg(token,agentId,msg):
# 配置企业微信消息发送url
sendUrl = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + token
# 配置发送策略(发送对象、消息等)
data = json.dumps({
"safe": 0,
"touser" : "@all",
"msgtype" : "text",
"agentid" : agentId,
"text" : {
"content" : msg
}
})
# 触发请求发送消息
requests.post(sendUrl,data)
# 主函数定义
def main(event, context):
# 验证请求参数,调用API触发企业微信消息发送
try:
apiId=event['queryStringParameters']['id']
apiSecert=event['queryStringParameters']['secert']
apiAgentId = event['queryStringParameters']['agentId']
apiMsg = event['queryStringParameters']['msg']
except:
apiMsg = '请检查是否请求参数格式和内容是否填写正确(企业微信ID、应用secert、应用agentId、发送消息内容)'
status = 1
else:
try:
# 执行主程序:获取token、根据token触发企业微信消息通知
token = getToken(apiId,apiSecert)
sendMsg(token,apiAgentId,apiMsg)
except:
status = 1
apiMsg = '主程序运行时出现错误'
else:
status = 0
# print(event)
# print("Received event: " + json.dumps(event, indent = 2))
# print("Received context: " + str(context))
# print("Hello world")
status_str = json.dumps({
"status":status,
"msg":apiMsg
})
# 返回响应结果
return(status_str)
<3>环境->访问服务->新建(配置信息)
构建完成待函数正常生效,随后访问URL进行测试:
云函数的访问服务 URL + 触发路径 + ? id = 企业微信ID & secert = 应用secert & agentId=应用 AgentId & msg = 消息内容
随后在twikoo中配置企业微信发送,配置即时通知,企业微信消息通知URL配置
# URL配置:配置管理->即时通知->WECOM_API_URL
https://<vercel_app_address>/api/python?id=<企业id>&secert=<应用secret>&agentId=<应用agentId>&msg=
# 对应msg内容会自动拼接触发消息通知
常见问题 在测试url访问的时候如果提示异常则可参考相应提示一步步排查问题,构建完成可在测试窗口编写模板在线测试
响应成功则查看响应报文(可结合官方API进行参考,一步步定位)