Habitica Webhook自动化实战:3步构建你的习惯提醒机器人
2026/9/19 2:39:08 网站建设 项目流程

Habitica Webhook自动化实战:3步构建你的习惯提醒机器人

【免费下载链接】habiticaA habit tracker app which treats your goals like a Role Playing Game.项目地址: https://gitcode.com/gh_mirrors/ha/habitica

Habitica是一款把目标管理变成角色扮演游戏的习惯追踪应用(habit tracker RPG)。而它内置的Webhook 推送机制,正是把习惯数据接到你工作流里的核心功能:完成任务、宠物孵化、任务关卡开始等事件发生时,Habitica 服务器会自动向你的网址发送一条 JSON 通知。本文将带你 3 步搭建一个习惯提醒机器人——无需复杂开发,普通用户也能上手。

为什么需要 Habitica Webhook 自动化

用习惯类应用时,最大的痛点是:完成了没人知道,断了没人提醒

Habitica 的 Webhook 就是解决这个问题的钩子。你在设置里填一个接收地址(URL),之后每当指定事件发生,服务器就会主动 POST 一段 JSON 到你的地址。你的"机器人"只需要负责收消息——转发到 Slack、微信、邮箱,或者记录到表格都行。

Habitica Webhook 支持的 5 种事件类型

Webhook 的完整数据模型定义在 website/server/models/webhook.js 中,共支持 5 种类型,选对类型是第一步:

类型触发时机典型用途
taskActivity(默认)任务创建 / 更新 / 删除 / 完成打分习惯完成提醒(最常用)
userActivity宠物孵化、坐骑养成、角色升级成长里程碑播报
questActivity任务关卡开始 / 完成 / 收到邀请团队任务日程提醒
groupChatReceived群组聊天收到消息(需指定 groupId)群消息同步到其他平台
globalActivity以上全部事件全量数据备份

各类型的触发开关(options)是布尔值,例如taskActivity默认只有"完成打分(scored)"开启,其余(created / updated / deleted / checklistScored)默认关闭,可按需打开。

步骤一:在设置页创建 Webhook

  1. 打开 Habitica 网站,进入设置 → 网站数据(Site Data)→ Webhooks,该页面的实现见 website/client/src/pages/settings/siteDataRows/webhooksRow.vue;
  2. 点击添加 Webhook,填入一个能接收 POST 请求的 https 地址(例如你的云函数、Slack 机器人 webhook、或自建服务的回调端点);
  3. 点击保存。新建的 Webhook 默认类型为taskActivity、默认开启"完成"事件——也就是说,保存即生效,你每完成一个习惯任务,机器人就会收到一条推送。

💡 不想用网页界面?也可以直接调 API:向POST /api/v3/user/webhook发送请求体即可创建,接口参数与示例完整定义在 website/server/controllers/api-v3/webhook.js:

{ "url": "https://你的回调地址.com/notify", "label": "习惯提醒机器人", "type": "taskActivity", "options": { "scored": true, "created": true } }

步骤二:挑选事件类型并配置触发选项

创建时或之后通过编辑都能修改typeoptionsid不可改,PUT /user/webhook/:id更新接口见 website/server/controllers/api-v3/webhook.js)。几个实用配置思路:

  • 习惯打卡播报taskActivity只开scored,只推送"完成任务",最省流量;
  • 升级庆祝userActivity打开leveledUppetHatched,角色升级、宠物孵化时让机器人大喊一声;
  • 团队任务管家questActivity打开questStartedquestInvited,配合 Habitica 挑战页面 的群组玩法,自动提醒队友开荒;
  • 指定群组监听groupChatReceived必须在options.groupId里填目标群组的 UUID,否则保存会报错(校验逻辑见 website/server/models/webhook.js)。

步骤三:写一个接收端,完成习惯提醒机器人

Habitica 发送请求的细节都集中在 website/server/libs/webhook.js 中,了解这些能让你写出更稳的接收端:

  • 请求方式:HTTP POST + JSON 请求体,超时 30 秒,失败自动重试 3 次;
  • 每条推送都带webhookType字段和user._id,方便你区分事件来源;
  • 自动熔断:某个 Webhook 连续失败达到 10 次会被自动停用,且 1 个月内的失败持续累计、超期自动清零(见 website/server/libs/webhook.js)。所以接收端一定要返回 2xx,否则机器人会被"保护性关机";
  • 生产环境下 URL 必须带 TLD 域名,http/https之外的协议会被拒绝。

以"习惯完成"事件为例,你的接收端拿到的载荷包含task(任务详情)、direction(加分/减分方向)、delta(本条经验加成)以及user.stats(用户属性),由 website/server/libs/webhook.js 组装,触发点在任务打分流程中(website/server/libs/tasks/index.js)。最简接收逻辑就是:判断webhookType→ 提取任务名 → 转发到你的通知渠道

常见问题速查

问题答案
Webhook 没收到消息?先检查地址是否 https 可达、是否返回了 2xx;再确认对应事件选项是否为true
Webhook 被自动停用了?连续失败 10 次触发;修复接收端后,把enabled重新置为true
想验证 Webhook 是否保存成功?GET /api/v3/user/webhook可拉取全部 Webhook 列表(测试用例见 test/api/v3/integration/webhook/GET-user-webhook.test.js)
能同时建多个 Webhook 吗?可以,它们按id(UUID)区分,互不干扰,各自独立熔断

小结

回顾这 3 步:① 在设置页添加 Webhook → ② 按场景选择事件类型与选项 → ③ 用任意接收端处理 JSON 推送。Habitica 的 Webhook 不需要你改动游戏本身,只需一个能收 POST 的地址,就能把"完成习惯"这件事实时同步到 Slack、微信或你的自建系统里——让坚持习惯这件事,从此有人(机器)见证。

【免费下载链接】habiticaA habit tracker app which treats your goals like a Role Playing Game.项目地址: https://gitcode.com/gh_mirrors/ha/habitica

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询