Protokollan yleiskatsaus#
PocketHook kommunikoi palvelimesi kanssa käyttäen yksinkertaista JSON-pohjaista protokollaa HTTPS:n yli. Sovellus lähettää POST-pyyntöjä ja odottaa JSON-vastauksia.
Todennus#
PocketHook lähettää määritetyn todennustokenin Bearer-tokenina:
Authorization: Bearer your-secret-token
Content-Type: application/json
Pyyntö#
Vakiomuoto#
[{
"sessionId": "550e8400-e29b-41d4-a716-446655440000",
"action": "sendMessage",
"chatInput": "user message"
}]
| Kenttä | Tyyppi | Kuvaus |
|---|---|---|
sessionId | string (UUID v4) | Yksilöllinen istuntotunniste |
action | string | Aina "sendMessage" |
chatInput | string | Käyttäjän viesti (enintään 10 000 merkkiä) |
OpenClaw-muoto#
Kun OpenClaw-tila on käytössä, PocketHook käyttää OpenAI Chat Completions -muotoa:
{
"model": "agent-id",
"messages": [
{ "role": "user", "content": "user message" }
]
}
Otsikolla x-openclaw-agent-id asetettuna määritettyyn agenttitunnukseen.
Vastaus#
Yksittäinen vastaus#
{
"msg": "Display message",
"shortcut": "ShortcutName",
"data": { "key": "value" },
"url": "https://example.com"
}
Monitoimintovastaus#
Palauta taulukko peräkkäistä suoritusta varten:
[
{ "msg": "Starting...", "shortcut": "FirstAction" },
{ "msg": "Processing...", "shortcut": "SecondAction", "data": { "input": "from-first" } },
{ "msg": "Done!", "url": "https://results.example.com" }
]
PocketHook suorittaa pikakuvakkeet järjestyksessä, odottaen kunkin valmistumista ennen seuraavan suorittamista.
Vastauksen kentät#
| Kenttä | Tyyppi | Pakollinen | Kuvaus |
|---|---|---|---|
msg | string | Kyllä | Chatissa näytettävä teksti. Tukee Markdownia, HTML:ää, kuvia ja painikesyntaksia. |
shortcut | string | Ei | Suoritettavan iOS-pikakuvakkeen nimi. |
data | object | array | Ei | JSON-data, joka välitetään pikakuvakkeen syötteenä. |
url | string | Ei | Viestiin liitettävä URL. |
OpenClaw-vastaus#
OpenClaw-tilassa PocketHook jäsentää sisäiset merkinnät vastauksen sisällöstä:
Here's your result! [SHORTCUT:ProcessData] [DATA:{"key":"value"}] [URL:https://example.com]
Sisällön renderöinti#
msg-kenttä tukee useita sisältötyyppejä:
Tavallinen teksti#
{ "msg": "Simple text message" }
Markdown#
{ "msg": "**Bold**, *italic*, `code`, and [links](https://example.com)" }
HTML#
Täytyy alkaa <div-merkinnällä, jotta se tunnistetaan HTML:ksi:
{ "msg": "<div><h2>Title</h2><p>Rich <strong>HTML</strong> content</p></div>" }
Kuvat#
{ "msg": "https://example.com/image.png" }
Mikä tahansa URL, joka päättyy .png, .jpg, .jpeg, .gif tai .webp, renderöidään kuvana.
Painikkeet#
Interaktiiviset painikkeet renderöidään viestin alapuolelle. Muoto: Button: Title | actionType: actionValue
Kolme toimintotyyppiä:
sendMessage: text— lähettää tekstin uutena viestinä palvelimelleopenURL: https://...— avaa URL:n selaimessatriggerShortcut: ShortcutName— suorittaa iOS-pikakuvakkeen
{ "msg": "Which one do you prefer?\nButton: Option A | sendMessage: I choose option A\nButton: Option B | sendMessage: I choose option B" }
Sekatoiminnot:
{ "msg": "Here are the results:\nButton: View details | openURL: https://example.com/item\nButton: Add to cart | triggerShortcut: addToCart" }
Painikerivit piilotetaan näytetystä tekstistä — vain interaktiiviset painikkeet näkyvät viestin alapuolella.
Health Check#
PocketHook tukee valinnaista health check -päätepistettä:
- Metodi: GET
- Odotettu vastaus: Tavallinen teksti
truetaifalse - URL: Määritetään erikseen Asetuksissa
Taustakysely#
Kun käytössä, PocketHook lähettää ajoittain GET-pyynnön kyselyosoitteeseen:
- Jos vastaus on
true, PocketHook lähettää määritetyn hakuviestin pääpalvelimelle - Kyselyvälit: 5, 15, 30, 60 tai 120 minuuttia
- Vaatii ilmoitusluvan taustahälytyksille
Agent Server: Käytä https://your-host/jobs kyselyosoitteena. Palauttaa true, kun valmistuneita taustatyötehtävien tuloksia on toimitettavana.
SDK#
Käytä pockethook-sdk npm-pakettia vastausten rakentamiseen TypeScriptillä:
import { text, shortcut, responses, toResponse, parseRequest } from "pockethook-sdk";
// Jäsennä ja vahvista saapuva pyyntö
const { sessionId, chatInput } = parseRequest(requestBody);
// Rakenna vastaukset
toResponse(text("Hello!"));
toResponse(shortcut("Running...", "MyShortcut", { key: "value" }));
toResponse(responses([
{ msg: "Step 1", shortcut: "First" },
{ msg: "Step 2", shortcut: "Second" }
]));
Katso aloituspalvelin minimaalisesta toimivasta esimerkistä, tai agenttipalvelin täydellisestä AI-agentista työkalukutsuilla ja taustatyötehtävillä.