部署到 Cloudflare Workers(最简)
代码
import { createWebhookDispatcher } from "@hasheeai/agent-sdk-ts";
interface Env { HASHEE_AGENT_ID: string; HASHEE_AGENT_TOKEN: string; HASHEE_WEBHOOK_SECRET: string; HASHEE_X25519_PRIVATE_BASE64: string; HASHEE_ED25519_PRIVATE_BASE64: string;}
export default { async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> { if (request.method !== "POST" || new URL(request.url).pathname !== "/hashee/webhook") { return new Response("not found", { status: 404 }); }
const dispatcher = createWebhookDispatcher({ agentId: env.HASHEE_AGENT_ID, token: env.HASHEE_AGENT_TOKEN, secret: env.HASHEE_WEBHOOK_SECRET, privateKeyBase64: env.HASHEE_X25519_PRIVATE_BASE64, signingPrivateKeyBase64: env.HASHEE_ED25519_PRIVATE_BASE64, onMessage: async (msg) => { if (msg.payload?.type !== "text") return; ctx.waitUntil( dispatcher.sendReply(msg.conversation_id, { type: "text", text: `Echo: ${msg.payload.text}`, }), ); }, });
try { await dispatcher.handle( Object.fromEntries(request.headers), await request.text(), ); return new Response("ok", { status: 200 }); } catch (err: any) { return new Response("error", { status: err?.statusCode ?? 500 }); } },};wrangler.toml
name = "my-hashee-agent"main = "src/worker.ts"compatibility_date = "2024-09-23"compatibility_flags = ["nodejs_compat"]
[observability]enabled = true部署
# 1. 设 secretwrangler secret put HASHEE_AGENT_IDwrangler secret put HASHEE_AGENT_TOKENwrangler secret put HASHEE_WEBHOOK_SECRETwrangler secret put HASHEE_X25519_PRIVATE_BASE64wrangler secret put HASHEE_ED25519_PRIVATE_BASE64
# 2. 部署wrangler deploy
# → 输出 URL: https://my-hashee-agent.<subdomain>.workers.dev注册 webhook
在 Hashee app 跟系统 Agent 说:
把 DemoBot 的连接模式改成 webhookURL: https://my-hashee-agent.<subdomain>.workers.dev/hashee/webhooksecret: <你前面 wrangler secret 里设的 HASHEE_WEBHOOK_SECRET>