Skip to main content
  1. 文档/

API 参考

协议概述
#

PocketHook 通过 HTTPS 使用简单的基于 JSON 的协议与您的服务器通信。应用发送 POST 请求并期望 JSON 响应。

认证
#

PocketHook 将配置的认证令牌作为 Bearer 令牌发送:

Authorization: Bearer your-secret-token
Content-Type: application/json

请求
#

标准格式
#

[{
  "sessionId": "550e8400-e29b-41d4-a716-446655440000",
  "action": "sendMessage",
  "chatInput": "user message"
}]
字段类型说明
sessionIdstring (UUID v4)唯一会话标识符
actionstring始终为 "sendMessage"
chatInputstring用户消息(最多 10,000 个字符)

OpenClaw 格式
#

启用 OpenClaw 模式后,PocketHook 使用 OpenAI Chat Completions 格式:

{
  "model": "agent-id",
  "messages": [
    { "role": "user", "content": "user message" }
  ]
}

附带设置为配置的代理 ID 的 x-openclaw-agent-id 头部。

响应
#

单一响应
#

{
  "msg": "Display message",
  "shortcut": "ShortcutName",
  "data": { "key": "value" },
  "url": "https://example.com"
}

多动作响应
#

返回数组以顺序执行:

[
  { "msg": "Starting...", "shortcut": "FirstAction" },
  { "msg": "Processing...", "shortcut": "SecondAction", "data": { "input": "from-first" } },
  { "msg": "Done!", "url": "https://results.example.com" }
]

PocketHook 按顺序执行快捷指令,等待每个完成后再运行下一个。

响应字段
#

字段类型必需说明
msgstring聊天中显示的文本。支持 Markdown、HTML、图片和按钮语法
shortcutstring要执行的 iOS 快捷指令名称。
dataobject | array作为输入传递给快捷指令的 JSON 数据。
urlstring与消息关联的 URL。

OpenClaw 响应
#

在 OpenClaw 模式下,PocketHook 从响应内容中解析内联标记:

Here's your result! [SHORTCUT:ProcessData] [DATA:{"key":"value"}] [URL:https://example.com]

内容渲染
#

msg 字段支持多种内容类型:

纯文本
#

{ "msg": "Simple text message" }

Markdown
#

{ "msg": "**Bold**, *italic*, `code`, and [links](https://example.com)" }

HTML
#

必须以 <div 开头才能被识别为 HTML:

{ "msg": "<div><h2>Title</h2><p>Rich <strong>HTML</strong> content</p></div>" }

图片
#

{ "msg": "https://example.com/image.png" }

.png.jpg.jpeg.gif.webp 结尾的任何 URL 将渲染为图片。

按钮
#

在消息下方渲染的交互式按钮。格式: Button: Title | actionType: actionValue

三种操作类型:

  • sendMessage: text — 将文本作为新消息发送到服务器
  • openURL: https://... — 在浏览器中打开 URL
  • triggerShortcut: ShortcutName — 运行 iOS 快捷指令
{ "msg": "Which one do you prefer?\nButton: Option A | sendMessage: I choose option A\nButton: Option B | sendMessage: I choose option B" }

混合操作:

{ "msg": "Here are the results:\nButton: View details | openURL: https://example.com/item\nButton: Add to cart | triggerShortcut: addToCart" }

按钮行从显示的文本中隐藏 — 只有交互式按钮显示在消息下方。

健康检查
#

PocketHook 支持可选的健康检查端点:

  • 方法:GET
  • 预期响应:纯文本 truefalse
  • URL:在设置中单独配置

后台轮询
#

启用后,PocketHook 会定期向轮询 URL 发送 GET 请求:

  • 如果响应为 true,PocketHook 会将配置的获取消息发送到主服务器
  • 轮询间隔:5、15、30、60 或 120 分钟
  • 需要通知权限才能进行后台提醒

Agent Server: 使用 https://your-host/jobs 作为轮询 URL。当有已完成的后台任务结果等待交付时返回 true

SDK
#

使用 pockethook-sdk npm 包通过 TypeScript 构建响应:

import { text, shortcut, responses, toResponse, parseRequest } from "pockethook-sdk";

// 解析和验证传入请求
const { sessionId, chatInput } = parseRequest(requestBody);

// 构建响应
toResponse(text("Hello!"));
toResponse(shortcut("Running...", "MyShortcut", { key: "value" }));
toResponse(responses([
  { msg: "Step 1", shortcut: "First" },
  { msg: "Step 2", shortcut: "Second" }
]));

参见入门服务器获取最小工作示例,或代理服务器获取带有工具调用和后台任务的完整 AI 代理。