feat: add OpenClaw message-tool payload adapter / 新增 OpenClaw message-tool payload adapter

This commit is contained in:
Alice (OpenClaw)
2026-05-14 08:56:11 +08:00
parent bd6d19d95b
commit 3981364d9b
2 changed files with 58 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
import { buildTelegramReplyEndPayload } from "../telegram/outbound-payload.js"
export type OpenClawTelegramMessageToolPayload = {
action: "send"
channel: "telegram"
target: string
message: string
presentation: {
blocks: Array<
| { type: "text"; text: string }
| {
type: "buttons"
buttons: Array<{
label: string
value: string
}>
}
>
}
}
export function buildOpenClawTelegramMessageToolPayload(target: string, text: string): OpenClawTelegramMessageToolPayload {
const payload = buildTelegramReplyEndPayload(text)
return {
action: "send",
channel: "telegram",
target,
message: payload.text,
presentation: {
blocks: [
{ type: "text", text: payload.text },
{
type: "buttons",
buttons: payload.buttons[0].map((button) => ({
label: button.text,
value: button.callback_data,
})),
},
],
},
}
}

View File

@@ -0,0 +1,16 @@
import test from "node:test"
import assert from "node:assert/strict"
import { buildOpenClawTelegramMessageToolPayload } from "../src/adapters/openclaw-message-tool.ts"
test("buildOpenClawTelegramMessageToolPayload creates Telegram send payload with text and button presentation", () => {
const payload = buildOpenClawTelegramMessageToolPayload("864811879", "hello")
assert.equal(payload.action, "send")
assert.equal(payload.channel, "telegram")
assert.equal(payload.target, "864811879")
assert.equal(payload.message, "hello")
assert.equal(payload.presentation.blocks[0].type, "text")
assert.equal(payload.presentation.blocks[1].type, "buttons")
assert.equal(payload.presentation.blocks[1].buttons[0].value, "rec:continue")
assert.equal(payload.presentation.blocks[1].buttons[1].value, "rec:stop")
})