875 B
875 B
Callback Contract
Goal
Define a stable callback payload contract between channel-specific button handlers and the reusable reply-end-controls core.
Telegram V1 callback values
rec:continuerec:stop
Optional message-scoped extension
If V1 needs tighter message binding later, extend to:
rec:continue:<messageId>rec:stop:<messageId>
Normalized internal event
Suggested normalized structure after channel parsing:
{
"choice": "continue | stop",
"conversationId": "string",
"sessionKey": "string | null",
"sourceMessageId": "string",
"sourceCallbackId": "string",
"channel": "telegram",
"timestamp": "ISO timestamp"
}
Why normalize
The Telegram parser should convert platform-specific callback payloads into one internal structure, so the reusable policy/state layer does not need to know Telegram details.