news 2026/4/16 9:21:17

AI 编程实录:只用“说人话”,如何指挥 Gemini 3.0 打通短信和滴答清单的接口?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI 编程实录:只用“说人话”,如何指挥 Gemini 3.0 打通短信和滴答清单的接口?

聊聊最近解决的一个小痛点,估计不少人也有这个烦恼。

现在的购物平台实在太多了,每次快递到了驿站虽然都会发短信,但我经常是当时看了一眼“哦,到了”,转头忙别的就忘了。结果就是取件码短信被压在下面,经常好几天才想起来去拿,体验很差。

起初我想了个法子,写个正则把取件码提取出来,直接推送到飞书机器人。但用了几天发现有个大问题:飞书消息只是“通知”,我看没看过、取没取件,根本没法标记。经常是一堆消息在那儿,还是搞不清哪个取了哪个没取。

我就想,这事儿还得靠 GTD 思路。如果收到短信能自动往滴答清单里加一条待办,取完货打个勾,这不就闭环了吗?

想是挺好,落地的时候卡住了。我读取短信用的工具是【通知滤盒】,它发出来的 Webhook 格式是固定的,根本对不上滴答清单的 API 接口要求。这就很尴尬,两头接不上。

既然客户端改不了,那就只能在服务端做个中转了。不过为了这点小功能买个服务器属实没必要,太重了。找了一圈,发现腾讯云新出的EdgeOne Pages很合适。

比起大家常用的 Cloudflare 或者 Vercel,EdgeOne 有国内节点,延迟低得多,而且现在还是免费阶段,拿来跑这种轻量级的 Serverless 代码简直完美。

来,跟着我一起把这个自动提醒搭起来。

首先得把最重要的中间件搞定:接收短信 -> 提取取件码 -> 塞进待办清单。

为了省事,这次代码我全是用Trae写的(既然是 AI 时代,能不手写就不手写)。下面我会把每一步的提示词(Prompt)都贴出来,大家直接复制粘贴就能复刻。

打开 Trae,建个新项目,模型记得切换到Gemini-3-Pro。 (插一句:最近 Trae 周年庆,送了一个月 Pro 版,600 次快速请求,能不排队用超级模型,羊毛赶紧薅。)

目前它支持 Gemini 和 ChatGPT。单论写代码,GPT-5.2-Codex 效果可能更好,但它速度太慢了。咱们这个需求逻辑很简单,Gemini 足够应付,跑得还快。

开始动手

第一步:创建接收短信的函数

先把基础架子搭起来,直接给 AI 发需求:

请帮我使用Edgeone Pages Functions完成以下需求: 1.创建函数 kdSMS,监听GET /kdSMS 请求地址 2.接收key:自定义信息,用于区分用户、text:短信内容 3.返回json格式的短信内容 Edgeone Pages 边缘函数文档:https://pages.edgeone.ai/zh/document/edgeone-cli

注意,要把需求和官方文档地址一起扔给它。这样 AI 才知道你要干啥,也能读到最新的 API 文档。

AI 写完后会生成一个测试文件。Trae 这一点做得不错,删除文件或者修改关键代码都需要我点“同意”,防止 AI 发疯把项目删了。

搞定,提示编写成功,速度确实快。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接下来让它启动测试环境,咱们先跑通基础功能。

帮我启动测试环境,我需要测试功能是否可用。 相关文档:https://pages.edgeone.ai/zh/document/edgeone-cli

再次强调:提要求时,一定要带上相关文档。 因为 EdgeOne 是新产品,AI 肚子里存货不多,不给文档它容易瞎编。

如果你用的是 Cloudflare 或者 Vercel 这种老牌子,就可以省掉这一步。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里提示要去浏览器登录,操作一下就行(会自动弹窗)。

已经登录成功,请继续下一步

正在跑下一步的内容了

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

告诉它登录完了,让它继续跑。

依旧是删除测试文件,手动点个同意。

这步运行了半天没反应,不知道是晚上 AI 降智了还是网络波动,稍微有点卡壳。

好在最后还是成功了,看到创建了一堆文件,服务也跑起来了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

赶紧点开链接测一下:

http://localhost:8088/kdSMS?key=MyTestUser&text=HelloEdgeOne

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

OK,返回内容跟预期一样,地基打好了,开始盖楼。

第二步:提取驿站信息和取件码

直接把逻辑和正则需求喂给 AI:

接下来,修改函数的运行逻辑: 1.1 读取短信内容 1.2 使用正则表达式,提取出驿站名称和取件码 1.3 提取成功,整理标题格式 1.3.1 标题示例1:菜鸟驿站 6-4-1622 1.3.2 标题示例2:兔喜驿站 52-6672 1.3.3 短信内容模板:【菜鸟驿站】您的xx包裹已到xx店,请23:59前凭6-5-0261扫码开门自助取件。 1.3.4 短信内容模板:【兔喜生活】您有包裹已到达xx店,取件码为49-5859,地址:xx 1.4 提取失败,发送webhook告警通知。 1.4.1 我的飞书webhook地址为https://open.feishu.cn/open-apis/bot/v2/hook/162a164a-220e-46ab-b42e-4ed94b1ceccc 1.4.2 告警通知需包含短信原文。

运行成功~,

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为了保险,我还专门测了一下失败的情况,飞书马上就弹了告警:

万事俱备,下一步就是把这些信息推送到滴答清单了。

第三步:创建滴答清单授权函数

这里有个小插曲。我看了一下文档,写入滴答清单需要 OAuth 登录获取 Token,流程稍微有点绕。

既然要搞 OAuth,就得用正式域名了,咱们先把现在的代码推送到线上环境。

帮我发布到线上环境,项目名为kdToDida

运行完毕,去 Pages 页面 瞄一眼,项目已经上线了。

接着创建一个 KV 存储,用来存 Token。

绑定好命名空间:

下面这段提示词有点长,主要是为了搞定滴答清单的登录授权和 Token 回调:

现在,根据以下要求 创建一个滴答清单的授权函数和回调函数 监听 GET /dida/login 1.用户访问这个接口时,接收 key 值,代表用户id,用于区分用户 2.跳转到以下url,让用户授权。注意回调地址,需要填写真实的回调地址。 https://dida365.com/oauth/authorize?client_id=你的Client_ID&scope=tasks:write%20tasks:read&response_type=code&redirect_uri=你的回调地址&state=随机字符串 我的Client_ID是2Z54m7Yhy6xhwKOWO0 我的Client Secret是L0UpCWeuLK9cj7bi0QQ8sW0jV7PfkmRZ 3.创建回调函数,接收返回的code 3.1 拿到 code 后,后端服务器向 Dida365 发起 POST 请求来获取 Token。 接口地址: https://dida365.com/oauth/token 请求方式: POST Header: Content-Type: application/x-www-form-urlencoded 重要: 需要将 client_id 和 client_secret 进行 Base64 编码 (client_id:client_secret) 放入 Authorization 头部 (Basic Auth)。 Body 参数: code: 第一步获取的 code grant_type: authorization_code scope: tasks:read tasks:write redirect_uri: 你的回调地址 4.拿到返回的Token后,写入到kv存储 返回示例: { "access_token": "b8364... (一串很长的加密字符串) ...", "token_type": "bearer", "expires_in": 3600, "scope": "tasks:write tasks:read", "refresh_token": "a1290... (用于续期的令牌) ..." } KV存储文档:https://pages.edgeone.ai/zh/document/kv-storage KV存储空间名:KD 我的项目域名是http://kd.lyzhan.cn/

看起来 AI 说搞定了,直接访问线上地址试试:

http://kd.lyzhan.cn/dida/login?key=username

自动跳转到了授权页,看着挺像那么回事儿,成功率可以啊。

结果……白夸了,还是报错。

没办法,把报错信息扔回给 AI 让它修:

我在授权页面登录后,跳转到http://kd.lyzhan.cn/dida/callback?code=5oKGOR&state=runyu,提示Internal Server Error: Failed to construct Request: only String/ArrayBuffer/ArrayBufferView/Blob/ReadableStream/FormData is allowed as the body initializer。修复这个问题

这次修复完可以正常登录了:

但检查 KV 存储发现,密钥根本没写进去。看来 KV 写入逻辑还有问题,继续改:

将获取到的密钥存储到KV存储中。 KV存储文档:https://pages.edgeone.ai/zh/document/kv-storage KV存储示例: export async function onRequest({ request, params, env }) { // 获取变量名为 my_kv 的命名空间 key let count = await my_kv.get('count'); count = Number(count) + 1; // 重新写入 visitCount 键值 await my_kv.put('count', String(count)); return new Response("ok", {}); } 修复后,推送到线上环境。 KV存储命名空间:KD 存储名称:key.accesstoken和key.refertoken。 其中 key是用户传递的参数。

AI 信誓旦旦说修好了。

好吧,果不其然,又错了。

这个时候我都在想:是不是我错了?我不该当这个小白鼠用新产品的……

仔细检查代码,发现是 KV 写入逻辑写歪了。再给 AI 喂一次正确的饭:

修改kv的写入逻辑,直接使用KD.PUT写入数据,例如// 读取 Key-Value 数据constvisitCount=awaitMY_KV.get('visitCount');letvisitCountInt=Number(visitCount);visitCountInt+=1;// 写入 Key-Value 数据awaitMY_KV.put('visitCount',String(visitCountInt));constres=JSON.stringify({visitCount:visitCountInt,});。不是从env中写入,你明白么

这回终于没问题了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

成功写入!

去KV存储空间检查一下

去后台检查一眼,数据安安稳稳躺在那儿。

ps:后来复盘了一下,其实这步我走弯路了。

滴答清单的 Access Token 有效期长达半年,我完全没必要费劲写个自动化授权接口,手动获取一下填进去就行了。不过写都写了,就当练手吧。

第四步:创建待办任务

真棒!验证通过了。 下面继续修改 kdSMS 接口 1.提取到驿站和取件码 2.读取key对应的accesstoken。比如:runyu.accesstoken 3.调用滴答清单接口,创建待办任务。 阅读文档:https://developer.dida365.com/api#/openapi?id=create-task 标题为上一步获取到的标题,即 驿站 取件码。 时区为UTC+8 北京时间 提醒时间为当天17:45以前的,为当天17:45。以后的,为第二天的17:45 内容为完整短信内容 4.如果创建失败,则发送告警。

AI 修改完毕,直接上线上环境测试。

请求一下这个地址:http://kd.lyzhan.cn/kdSMS/?key=username&text=【菜鸟驿站】您的xx包裹已到xx店,请23:59前凭6-5-0261扫码开门自助取件。

见证奇迹的时刻——滴答清单里弹出来了!

全流程接入

通知滤盒配置

服务端搞定了,客户端我也顺手配置了一下。我用的是【通知滤盒】(主要为了过滤骚扰通知),其他支持 WebHook 的 App 也是一样的道理。

进入页面后,在底部菜单栏选择【智能】,然后在顶部菜单栏选择【增强】,点击【Wenhook】,创建规则

在【智能】->【增强】->【Webhook】里创建规则:

  • App:选包含【短信】。

  • 关键词:填短信里的关键词,比如“菜鸟驿站”、“兔喜生活”。

  • URL:填咱们刚才做好的服务地址:http://kd.lyzhan.cn/kdSMS?key=自己的key&text={android.text}

总结

这一套方案折腾下来,算是彻底解决了我苦恼已久的“快递遗忘症”。

现在每天打开滴答清单,哪些快递要拿一目了然,这种掌控感真的很爽。

这篇文章重点在于演示怎么用 AI 写代码,至于滴答清单的 ID、密钥申请这些琐事,我就没展开写,有疑问的随时私聊我。

另外,这个服务我也开放出来了,永久免费。如果不想折腾代码,直接用我的服务接口也能给你的滴答清单创建待办。

多嘴一句:目前的告警 Webhook 地址我是偷懒硬编码在代码里的。如果你也有接收告警的需求,联系我,我再改改代码支持参数传入。

(主要也不确定有没有人用,先懒得改了 😂)

后面还想看什么自动化玩法?评论区告诉我。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/10 9:22:47

软考老金团队:2026年5月高项的「确定上岸通道」

在软考高项通过率常年不足20%的背景下,一个名字却连续三年为学员创造了超过75%的通过率——软考老金团队。这不是偶然,而是一个经过精密设计的备考系统必然产生的结果。如果你正在备战2026年5月的高项考试,这条被数千名前辈验证的“上岸通道”…

作者头像 李华
网站建设 2026/4/15 4:33:46

【计算机毕业设计案例】基于springboot个性化服务智能提醒的社区老年康养管理系统(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/16 9:19:45

【计算机毕业设计案例】基于springboot的家庭物品收纳管理系统基于Springboot+Vue的个人物品管理系统(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/3/26 20:27:34

网络安全入门必学内容有哪些?网络安全最全知识点汇总来了

随着时代的发展,经济、社会、生产、生活越来越依赖网络。而随着万物互联的物联网技术的兴起,线上线下已经打通,虚拟世界和现实世界的边界正在变得模糊。这使得来自网络空间的攻击能够穿透虚拟世界的边界,直接影响现实世界的安全。…

作者头像 李华
网站建设 2026/4/2 21:27:42

Java计算机毕设之基于springboot个性化智能提醒的社区老年康养管理系统智能药物提醒和管理(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华