Skip to main content
Metadata
FieldValue
Canonical URIhttps://docs.aion.to/a2a/extensions/aion/distribution/messaging/1.0.0
Issueraion
Version1.0.0
ActivationThis page refines the Distribution extension. It does not introduce separate activation.
Related ExtensionsDistribution, Event

Overview

This page defines messaging-specific event types and payload schemas layered on top of the Distribution extension. The base Distribution page continues to define shared distribution metadata, request flow, and transport responsibilities. This page is narrower: it defines the payload families used when a distribution receives an inbound messaging event or returns a messaging-oriented response. The design goal is to keep provider-specific messaging integrations fluent while still normalizing their transport into stable A2A data parts. Key aliases used below:
  • MessagingURI: https://docs.aion.to/a2a/extensions/aion/distribution/messaging/1.0.0
  • EventURI: https://docs.aion.to/a2a/extensions/aion/event/1.0.0
Messages that use payloads from this page SHOULD include MessagingURI in message.extensions.

Events

All event types defined on this page are inbound to A2A request processing. The distribution is responsible for attaching the Event extension metadata; external callers should not construct these messages directly.

Message

FieldValue
Typeto.aion.distribution.message.1.0.0
Required payloadsMessageEventPayload, SourceSystemEventPayload
Metadataparams.message.metadata[EventURI].type = "to.aion.distribution.message.1.0.0"
DetailsMessage-like user input such as a DM, mention, thread reply, or channel message.

Reaction

FieldValue
Typeto.aion.distribution.reaction.1.0.0
Required payloadsReactionEventPayload, SourceSystemEventPayload
Metadataparams.message.metadata[EventURI].type = "to.aion.distribution.reaction.1.0.0"
DetailsReaction or emoji-style activity applied to an existing message.

Command

FieldValue
Typeto.aion.distribution.command.1.0.0
Required payloadsCommandEventPayload, SourceSystemEventPayload
Metadataparams.message.metadata[EventURI].type = "to.aion.distribution.command.1.0.0"
DetailsCommand-style invocation sent through a messaging provider.

Payloads

This section defines both inbound event payloads and outbound data parts.

Event Payloads

Event payload schema placement: params.message.parts[i].metadata[EventURI].schema Event payload data placement: params.message.parts[i].data

MessageEventPayload

Schema URI: https://docs.aion.to/a2a/extensions/aion/distribution/messaging/1.0.0#MessageEventPayload This payload is the normalized representation of an inbound message context. It is used when the source event behaves like a message even if the provider has a more complex native model.
FieldTypeRequiredDescription
userIdStringrequiredSender identifier on the source network.
contextIdStringrequiredSource-network conversation, room, or thread id.
parentContextIdStringoptionalParent context id when nested threads are used.
messageIdStringrequiredSource-network message id.
trajectoryStringrequiredRouting context for the message.
Trajectory values:
TrajectoryDefinition
direct-messageThe agent received a direct message.
replyA user replied to an existing agent message.
timelineA user mentioned the agent in a feed or timeline context.
conversationThe message arrived in a shared room or channel context.
Example A2A data part:
{
  "data": {
    "userId": "U06ABC123",
    "contextId": "C06ROOM123",
    "parentContextId": "1728162100.991118",
    "messageId": "1728162300.551219",
    "trajectory": "reply"
  },
  "mediaType": "application/json",
  "metadata": {
    "https://docs.aion.to/a2a/extensions/aion/event/1.0.0": {
      "schema": "https://docs.aion.to/a2a/extensions/aion/distribution/messaging/1.0.0#MessageEventPayload"
    }
  }
}

ReactionEventPayload

Schema URI: https://docs.aion.to/a2a/extensions/aion/distribution/messaging/1.0.0#ReactionEventPayload This payload represents a reaction-style activity. It is intentionally separate from a plain text message payload because reactions may use provider-specific identifiers, custom emoji, or add/remove semantics that do not fit cleanly into a text part.
FieldTypeRequiredDescription
userIdStringrequiredActor who added or removed the reaction.
contextIdStringrequiredSource-network conversation, room, or thread id.
parentContextIdStringoptionalParent context id when nested threads are used.
messageIdStringrequiredTarget message id on the source network.
reactionKeyStringrequiredProvider-stable reaction identifier.
displayValueStringoptionalHuman-readable emoji or provider label when available.
actionStringrequiredReaction transition, such as added or removed.
isCustomBooleanoptionalWhether the reaction is provider-specific rather than a standard emoji.
Example A2A data part:
{
  "data": {
    "userId": "U06ABC123",
    "contextId": "C06ROOM123",
    "parentContextId": "1728162100.991118",
    "messageId": "1728162300.551219",
    "reactionKey": "party-parrot",
    "displayValue": ":party_parrot:",
    "action": "added",
    "isCustom": true
  },
  "mediaType": "application/json",
  "metadata": {
    "https://docs.aion.to/a2a/extensions/aion/event/1.0.0": {
      "schema": "https://docs.aion.to/a2a/extensions/aion/distribution/messaging/1.0.0#ReactionEventPayload"
    }
  }
}

CommandEventPayload

Schema URI: https://docs.aion.to/a2a/extensions/aion/distribution/messaging/1.0.0#CommandEventPayload This payload represents a command-style invocation from a messaging platform. It is intended for slash commands, app commands, or similar provider-native command entry points.
FieldTypeRequiredDescription
userIdStringrequiredActor who invoked the command.
contextIdStringrequiredRoom, channel, thread, or DM context where the command ran.
parentContextIdStringoptionalParent context id when nested threads are used.
commandStringrequiredProvider-visible command token such as /deploy.
argumentsStringoptionalRaw argument string supplied after the command token.
invocationIdStringoptionalProvider-native command invocation id when available.
Example A2A data part:
{
  "data": {
    "userId": "U06ABC123",
    "contextId": "C06ROOM123",
    "parentContextId": "1728162100.991118",
    "command": "/deploy",
    "arguments": "service=api env=staging",
    "invocationId": "cmd-981723"
  },
  "mediaType": "application/json",
  "metadata": {
    "https://docs.aion.to/a2a/extensions/aion/event/1.0.0": {
      "schema": "https://docs.aion.to/a2a/extensions/aion/distribution/messaging/1.0.0#CommandEventPayload"
    }
  }
}

SourceSystemEventPayload

Schema URI: https://docs.aion.to/a2a/extensions/aion/distribution/messaging/1.0.0#SourceSystemEventPayload This payload preserves the original provider event so downstream logic can inspect provider-specific fields when the normalized payload is not sufficient.
FieldTypeRequiredDescription
providerStringrequiredSource provider name, such as slack or telegram.
eventObjectrequiredVerbatim event payload from the source system.
Example A2A data part:
{
  "data": {
    "provider": "slack",
    "event": {
      "type": "reaction_added",
      "user": "U06ABC123",
      "reaction": "party-parrot",
      "item": {
        "type": "message",
        "channel": "C06ROOM123",
        "ts": "1728162300.551219"
      }
    }
  },
  "mediaType": "application/json",
  "metadata": {
    "https://docs.aion.to/a2a/extensions/aion/event/1.0.0": {
      "schema": "https://docs.aion.to/a2a/extensions/aion/distribution/messaging/1.0.0#SourceSystemEventPayload"
    }
  }
}

Outbound Payloads

Outbound payloads may appear either in a direct response to a distribution event or in any other agent-authored request sent directly to a distribution. Typical outbound payload schema placement: message.parts[i].metadata[MessagingURI].schema Typical outbound payload data placement: message.parts[i].data Streaming delta markers may instead be attached to top-level artifactUpdate.metadata.

StreamDeltaPayload

Schema URI: https://docs.aion.to/a2a/extensions/aion/distribution/messaging/1.0.0#StreamDeltaPayload This payload represents incremental outbound text produced while a message is still being streamed. It is intended for live provider updates such as partial Slack or Telegram replies. When Aion emits these deltas over streaming A2A transport, the preferred representation is a TaskArtifactUpdateEvent. That is a better semantic fit than TaskStatusUpdateEvent, because the task status is not necessarily changing; only the outbound artifact is being appended. For this payload, the schema marker can be attached at the top-level metadata of the artifactUpdate object. The control plane can then interpret the artifact as a live text-response channel and append each text part to the provider-visible reply. The current SDK implementation uses the artifact id aion:stream-delta for this streaming channel. Example StreamResponse carrying a TaskArtifactUpdateEvent:
{
  "artifactUpdate": {
    "taskId": "task-42",
    "contextId": "ctx-42",
    "append": true,
    "lastChunk": false,
    "metadata": {
      "https://docs.aion.to/a2a/extensions/aion/distribution/messaging/1.0.0": {
        "schema": "https://docs.aion.to/a2a/extensions/aion/distribution/messaging/1.0.0#StreamDeltaPayload"
      }
    },
    "artifact": {
      "artifactId": "aion:stream-delta",
      "parts": [
        {
          "text": "The deployment has reached 80%"
        }
      ]
    }
  }
}

Notes

This page intentionally defines payload schemas, not provider-specific rendering contracts. A Slack, Telegram, Discord, or Teams adapter may map the same payload into different provider-native surfaces while preserving the same normalized A2A transport shape.