赞
踩
Cloudflare Workers AI 现在可以免费使用了,把它集成到我们的公众号作为聊天机器人,先看成品,直接发送消息,由AI回复
Cloudflare Workers AI提供了文本生成、翻译、图像生成、图像分类、语言识别等多种模型, 每天可以有100000次的免费请求
Cloudflare Workers AI 目前为开放 Beta 版,不建议用于生产数据和流量,限制 + 访问可能会发生变化
cloudflare提供接口可以直接使用
这种方式更加自由,可以自定义更多功能。
要求:需要一台服务器和基础编程能力
当用户给公众号发消息时,公众号会把消息发送到我们的服务器,微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。
由于cloudflare接口在国外,网络原因请求可以会超过5秒,以下是我的处理过程:
- @router.post("/wx", )
- def message(request: Request, param = Body()):
- """"""
- try:
- params = xmltodict(param.decode())
- event = params.get("Event")
- to_user = params.get("FromUserName")
- content = params.get("Content")
- msg_id = params.get("MsgId")
- # 回复文本消息
- if params.get("MsgType") == "text":
- # 检查是否存在当前msg_id, 没有则添加任务发送请求
- if redis.exists(replay_key(msg_id)) == 0:
- add_task(replay_key(msg_id), cf_request, (content, msg_id))
-
- delay = 5000 # 等待时间5s
- step = 300 # 间隔检查时间300ms
-
- while delay > 0:
- logger.info(f"{delay}_{msg_id}_{str(redis.hgetall(replay_key(msg_id)))}")
- # 检查是否有错误
- if redis.hget(replay_key(msg_id), "error"):
- redis.delete(replay_key(msg_id))
- return Response(replay_msg(to_user, "系统错误"))
- content = redis.hget(replay_key(msg_id), "content")
- # 有结果返回结果
- if content:
- redis.delete(replay_key(msg_id))
- return Response(replay_msg(to_user, content))
-
- delay -= step
- time.sleep(step/1000)
-
- # 用户关注回复消息
- if event == "subscribe":
- result = """[让我看看]"""
- return Response(replay_msg(to_user, result))
- except Exception as e:
- logger.exception(e)
- return Response("success")
对于这个过程还有什么优化方法,欢迎大佬指正
还可以直接使用cloudflare的Workers来实现,不需要服务器,具体后续分享
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。