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

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: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:

{
  "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.