Files
reply-end-controls/core/callback-contract.md

38 lines
875 B
Markdown

# 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:continue`
- `rec: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:
```json
{
"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.