Protocoloverzicht#
PocketHook communiceert met uw server via een eenvoudig JSON-gebaseerd protocol over HTTPS. De app stuurt POST-verzoeken en verwacht JSON-antwoorden.
Authenticatie#
PocketHook stuurt het geconfigureerde authenticatietoken als Bearer-token:
Authorization: Bearer your-secret-token
Content-Type: application/json
Verzoek#
Standaardformaat#
[{
"sessionId": "550e8400-e29b-41d4-a716-446655440000",
"action": "sendMessage",
"chatInput": "user message"
}]
| Veld | Type | Beschrijving |
|---|---|---|
sessionId | string (UUID v4) | Unieke sessie-identificatie |
action | string | Altijd "sendMessage" |
chatInput | string | Bericht van de gebruiker (max. 10.000 tekens) |
OpenClaw-formaat#
Wanneer de OpenClaw-modus is ingeschakeld, gebruikt PocketHook het OpenAI Chat Completions-formaat:
{
"model": "agent-id",
"messages": [
{ "role": "user", "content": "user message" }
]
}
Met de header x-openclaw-agent-id ingesteld op het geconfigureerde agent-ID.
Antwoord#
Enkel antwoord#
{
"msg": "Display message",
"shortcut": "ShortcutName",
"data": { "key": "value" },
"url": "https://example.com"
}
Multi-actie antwoord#
Retourneer een array voor sequentiële uitvoering:
[
{ "msg": "Starting...", "shortcut": "FirstAction" },
{ "msg": "Processing...", "shortcut": "SecondAction", "data": { "input": "from-first" } },
{ "msg": "Done!", "url": "https://results.example.com" }
]
PocketHook voert snelkoppelingen in volgorde uit en wacht tot elke snelkoppeling is voltooid voordat de volgende wordt gestart.
Antwoordvelden#
| Veld | Type | Vereist | Beschrijving |
|---|---|---|---|
msg | string | Ja | Tekst weergegeven in de chat. Ondersteunt Markdown, HTML, afbeeldingen en knopsyntaxis. |
shortcut | string | Nee | Naam van een uit te voeren iOS-snelkoppeling. |
data | object | array | Nee | JSON-gegevens doorgegeven als invoer aan de snelkoppeling. |
url | string | Nee | URL om aan het bericht te koppelen. |
OpenClaw-antwoord#
In OpenClaw-modus analyseert PocketHook inline-markeringen uit de antwoordinhoud:
Here's your result! [SHORTCUT:ProcessData] [DATA:{"key":"value"}] [URL:https://example.com]
Contentweergave#
Het msg-veld ondersteunt meerdere inhoudstypen:
Platte tekst#
{ "msg": "Simple text message" }
Markdown#
{ "msg": "**Bold**, *italic*, `code`, and [links](https://example.com)" }
HTML#
Moet beginnen met <div om als HTML te worden herkend:
{ "msg": "<div><h2>Title</h2><p>Rich <strong>HTML</strong> content</p></div>" }
Afbeeldingen#
{ "msg": "https://example.com/image.png" }
Elke URL die eindigt op .png, .jpg, .jpeg, .gif of .webp wordt weergegeven als afbeelding.
Knoppen#
Interactieve knoppen weergegeven onder het bericht. Formaat: Button: Title | actionType: actionValue
Drie actietypes:
sendMessage: text— stuurt de tekst als nieuw bericht naar de serveropenURL: https://...— opent de URL in de browsertriggerShortcut: ShortcutName— voert een iOS-snelkoppeling uit
{ "msg": "Which one do you prefer?\nButton: Option A | sendMessage: I choose option A\nButton: Option B | sendMessage: I choose option B" }
Gemengde acties:
{ "msg": "Here are the results:\nButton: View details | openURL: https://example.com/item\nButton: Add to cart | triggerShortcut: addToCart" }
Knopregels worden verborgen in de weergegeven tekst — alleen de interactieve knoppen verschijnen onder het bericht.
Health Check#
PocketHook ondersteunt een optioneel health check-eindpunt:
- Methode: GET
- Verwacht antwoord: Platte tekst
trueoffalse - URL: Apart geconfigureerd in Instellingen
Achtergrondpolling#
Wanneer ingeschakeld, stuurt PocketHook periodiek een GET-verzoek naar de polling-URL:
- Als het antwoord
trueis, stuurt PocketHook het geconfigureerde ophaalberich naar de hoofdserver - Pollingintervallen: 5, 15, 30, 60 of 120 minuten
- Vereist meldingstoestemming voor achtergrondwaarschuwingen
Agent Server: Gebruik https://your-host/jobs als polling-URL. Retourneert true wanneer er voltooide achtergrondtaakresultaten wachten op levering.
SDK#
Gebruik het npm-pakket pockethook-sdk om antwoorden te bouwen met TypeScript:
import { text, shortcut, responses, toResponse, parseRequest } from "pockethook-sdk";
// Inkomend verzoek analyseren en valideren
const { sessionId, chatInput } = parseRequest(requestBody);
// Antwoorden bouwen
toResponse(text("Hello!"));
toResponse(shortcut("Running...", "MyShortcut", { key: "value" }));
toResponse(responses([
{ msg: "Step 1", shortcut: "First" },
{ msg: "Step 2", shortcut: "Second" }
]));
Zie de starterserver voor een minimaal werkend voorbeeld, of de agentserver voor een volledige AI-agent met toolaanroepen en achtergrondtaken.