Protokollöversikt#
PocketHook kommunicerar med din server med ett enkelt JSON-baserat protokoll över HTTPS. Appen skickar POST-förfrågningar och förväntar sig JSON-svar.
Autentisering#
PocketHook skickar den konfigurerade autentiseringstoken som en Bearer-token:
Authorization: Bearer your-secret-token
Content-Type: application/json
Förfrågan#
Standardformat#
[{
"sessionId": "550e8400-e29b-41d4-a716-446655440000",
"action": "sendMessage",
"chatInput": "user message"
}]
| Fält | Typ | Beskrivning |
|---|---|---|
sessionId | string (UUID v4) | Unik sessionsidentifierare |
action | string | Alltid "sendMessage" |
chatInput | string | Användarens meddelande (max 10 000 tecken) |
OpenClaw-format#
När OpenClaw-läget är aktiverat använder PocketHook OpenAI Chat Completions-formatet:
{
"model": "agent-id",
"messages": [
{ "role": "user", "content": "user message" }
]
}
Med headern x-openclaw-agent-id inställd på det konfigurerade agent-ID:t.
Svar#
Enskilt svar#
{
"msg": "Display message",
"shortcut": "ShortcutName",
"data": { "key": "value" },
"url": "https://example.com"
}
Flerhandlingssvar#
Returnera en array för sekventiell körning:
[
{ "msg": "Starting...", "shortcut": "FirstAction" },
{ "msg": "Processing...", "shortcut": "SecondAction", "data": { "input": "from-first" } },
{ "msg": "Done!", "url": "https://results.example.com" }
]
PocketHook kör genvägar i ordning och väntar på att varje genväg slutförs innan nästa körs.
Svarsfält#
| Fält | Typ | Obligatoriskt | Beskrivning |
|---|---|---|---|
msg | string | Ja | Text som visas i chatten. Stöder Markdown, HTML, bilder och knappsyntax. |
shortcut | string | Nej | Namn på en iOS-genväg att köra. |
data | object | array | Nej | JSON-data som skickas som indata till genvägen. |
url | string | Nej | URL att koppla till meddelandet. |
OpenClaw-svar#
I OpenClaw-läge analyserar PocketHook inbäddade markörer från svarsinnehållet:
Here's your result! [SHORTCUT:ProcessData] [DATA:{"key":"value"}] [URL:https://example.com]
Innehållsrendering#
Fältet msg stöder flera innehållstyper:
Vanlig text#
{ "msg": "Simple text message" }
Markdown#
{ "msg": "**Bold**, *italic*, `code`, and [links](https://example.com)" }
HTML#
Måste börja med <div för att detekteras som HTML:
{ "msg": "<div><h2>Title</h2><p>Rich <strong>HTML</strong> content</p></div>" }
Bilder#
{ "msg": "https://example.com/image.png" }
Alla URL:er som slutar med .png, .jpg, .jpeg, .gif eller .webp renderas som bilder.
Knappar#
Interaktiva knappar renderade under meddelandet. Format: Button: Title | actionType: actionValue
Tre åtgärdstyper:
sendMessage: text— skickar texten som ett nytt meddelande till servernopenURL: https://...— öppnar URL:en i webbläsarentriggerShortcut: ShortcutName— kör en iOS-genväg
{ "msg": "Which one do you prefer?\nButton: Option A | sendMessage: I choose option A\nButton: Option B | sendMessage: I choose option B" }
Blandade åtgärder:
{ "msg": "Here are the results:\nButton: View details | openURL: https://example.com/item\nButton: Add to cart | triggerShortcut: addToCart" }
Knapprader döljs från den visade texten — bara de interaktiva knapparna visas under meddelandet.
Health Check#
PocketHook stöder en valfri health check-slutpunkt:
- Metod: GET
- Förväntat svar: Vanlig text
trueellerfalse - URL: Konfigureras separat i Inställningar
Bakgrundsavfrågning#
När aktiverad skickar PocketHook periodiskt en GET-förfrågan till avfrågnings-URL:en:
- Om svaret är
trueskickar PocketHook det konfigurerade hämtningsmeddelandet till huvudservern - Avfrågningsintervall: 5, 15, 30, 60 eller 120 minuter
- Kräver notifieringstillstånd för bakgrundsvarningar
Agent Server: Använd https://your-host/jobs som avfrågnings-URL. Returnerar true när det finns slutförda bakgrundsuppgiftsresultat som väntar på leverans.
SDK#
Använd npm-paketet pockethook-sdk för att bygga svar med TypeScript:
import { text, shortcut, responses, toResponse, parseRequest } from "pockethook-sdk";
// Analysera och validera inkommande förfrågan
const { sessionId, chatInput } = parseRequest(requestBody);
// Bygga svar
toResponse(text("Hello!"));
toResponse(shortcut("Running...", "MyShortcut", { key: "value" }));
toResponse(responses([
{ msg: "Step 1", shortcut: "First" },
{ msg: "Step 2", shortcut: "Second" }
]));
Se startservern för ett minimalt fungerande exempel, eller agentservern för en komplett AI-agent med verktygsanrop och bakgrundsuppgifter.