微信通知Twikoo新消息提醒(Vercel版本)

在按照上面文章实现微信通知twikoo新消息提醒时,因为我是利用Vercel部署的Twikoo,发现和教程有一些出入,特此写一下如何用Vercel 创建云函数。

创建Vercel 云函数

之前创建企业微信的步骤跟上面文章走就行。在创建API云函数时候,首先找到你部署twikoo到Vercel 的文件夹(如果还没有clone到本地过就先clone一遍。)

进入应用文件夹。在此文件夹下 pipenv install requests (如果还没下载过pipenv 的先下载pipenv)

进入/api 文件夹,创建一个名为python.py 的文件并贴入以下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
from http.server import BaseHTTPRequestHandler
import json
import requests
from urllib.parse import parse_qs
# -*- coding: utf8 -*-


class handler(BaseHTTPRequestHandler):


def do_GET(self):
def getTocken(id, secert, msg, agentId):
url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + \
id + "&corpsecret=" + secert

r = requests.get(url)
tocken_json = json.loads(r.text)
# print(tocken_json['access_token'])
sendText(tocken=tocken_json['access_token'], agentId=agentId, msg=msg)

def sendText(tocken, agentId, msg):
sendUrl = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + tocken
# print(sendUrl)
data = json.dumps({
"safe": 0,
"touser": "@all",
"msgtype": "text",
"agentid": agentId,
"text": {
"content": str(msg)
}
})
requests.post(sendUrl, data)

try:
params = parse_qs(self.path[12:])
apiid = params['id'][0]
apisecert = params['secert'][0]
apiagentId = params['agentId'][0]
apimsg = params['msg'][0]
except:
apimsg = self.path
else:
#try:
# 执行主程序
getTocken(id=apiid, secert=apisecert,
msg=apimsg, agentId=apiagentId)
#except:
# status = 1
# apimsg = '主程序运行时出现错误,请检查参数是否填写正确。详情可以参阅:https://blog.zhheo.com/p/1e9f35bc.html'
#else:
# status = 0
# print(event)
# print("Received event: " + json.dumps(event, indent = 2))
# print("Received context: " + str(context))
# print("Hello world")

self.send_response(200)
self.send_header('Content-type', 'text/plain')
self.end_headers()
self.wfile.write(apimsg)
return

此代码是修改于上篇文章的云函数代码,所以只改了必要改的地方,注释了不需要的地方。本来想用JS 重写一下但是想着能用就行。

push当前的更改之后,当Vercel完成部署后,你可以到

1
https://< vercel_app_address>/api/python?id=<ww....>&secert=<secret...>&agentId=<agentId...>&msg=测试一下吧

测试你的访问路径是否有效 (在对应的位置填入你的信息)。

如果成功的话你的手机会接收到对应的推送(如果你的企业微信注册成功且所填信息正确)。

注意文件名命名必须是python.py 否则你可能需要更改 获取query parameters 部分的代码。

之后只需要回到上篇文章再做Twikoo配置并且关联到微信就大功告成!

有问题可以下面评论告诉我。Happy coding!


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!