Skip to content

Activity Protocol Schema v5 Complete Example Set #482

@gurubhg

Description

@gurubhg

Activity Protocol v5 — Complete Example Set (§19)

Parent issue: #472 — Activity Protocol Schema v5 Proposal
Section: §19 Complete Example Set

This sub-issue contains all 28 examples demonstrating v5 activity types, streaming, session lifecycle, cross-protocol interop, and entity usage.


19.1 Text message

{
  "v": "5",
  "type": "message",
  "id": "msg-001",
  "timestamp": "2026-04-01T10:00:00Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "user-123", "name": "Alice", "role": "user" },
  "to": [{ "id": "agent-456", "name": "Agent", "role": "agent" }],
  "payload": { "contentType": "text/markdown", "content": "Hello, world!" }
}

19.2 Reply (text)

{
  "v": "5",
  "type": "message",
  "id": "msg-002",
  "timestamp": "2026-04-01T10:00:02Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "agent-456", "name": "Agent", "role": "agent" },
  "to": [{ "id": "user-123", "name": "Alice", "role": "user" }],
  "relatesTo": { "inReplyTo": { "activityId": "msg-001" } },
  "payload": { "contentType": "text/plain", "content": "Hi Alice — how can I help?" }
}

19.3 Tool command

{
  "v": "5",
  "type": "command",
  "id": "cmd-001",
  "timestamp": "2026-04-01T10:20:00Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "agent-456", "name": "Agent", "role": "agent" },
  "to": [{ "id": "tool.weather", "name": "WeatherTool", "role": "tool" }],
  "name": "weather.getForecast",
  "payload": { "contentType": "application/json", "content": { "location": "London" } }
}

19.4 Tool result — success

{
  "v": "5",
  "type": "commandResult",
  "id": "cmdres-001",
  "timestamp": "2026-04-01T10:20:01Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "tool.weather", "name": "WeatherTool", "role": "tool" },
  "to": [{ "id": "agent-456", "name": "Agent", "role": "agent" }],
  "name": "weather.getForecast",
  "relatesTo": { "inReplyTo": { "activityId": "cmd-001" } },
  "payload": {
    "contentType": "application/json",
    "content": { "ok": true, "result": { "temperatureC": 15, "condition": "Cloudy" } }
  }
}

19.5 Tool result — error

{
  "v": "5",
  "type": "commandResult",
  "id": "cmdres-002",
  "timestamp": "2026-04-01T10:20:01Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "tool.weather", "name": "WeatherTool", "role": "tool" },
  "to": [{ "id": "agent-456", "name": "Agent", "role": "agent" }],
  "name": "weather.getForecast",
  "relatesTo": { "inReplyTo": { "activityId": "cmd-001" } },
  "payload": {
    "contentType": "application/json",
    "content": {
      "ok": false,
      "error": { "code": "InvalidArgument", "httpStatus": 400, "message": "location is required" }
    }
  }
}

19.6 Streaming: Media.Start

{
  "v": "5",
  "type": "event",
  "id": "evt-001",
  "timestamp": "2026-04-01T10:10:00Z",
  "channelId": "voicechannel",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "user-123", "name": "Alice", "role": "user" },
  "to": [{ "id": "agent-456", "name": "Agent", "role": "agent" }],
  "name": "Media.Start",
  "relatesTo": { "stream": { "streamId": "stream-1", "seq": 1, "isFinal": false } },
  "payload": {
    "contentType": "application/vnd.microsoft.activity.media.start+json",
    "content": { "mediaType": "audio", "contentType": "audio/webm", "codec": "opus" }
  },
  "entities": [
    {
      "type": "streamInfo",
      "streamId": "stream-1",
      "streamType": "audio",
      "streamState": "Streaming",
      "streamSequence": 1
    }
  ]
}

19.7 Streaming: Media.Chunk

{
  "v": "5",
  "type": "event",
  "id": "evt-002",
  "timestamp": "2026-04-01T10:10:01Z",
  "channelId": "voicechannel",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "user-123", "name": "Alice", "role": "user" },
  "to": [{ "id": "agent-456", "name": "Agent", "role": "agent" }],
  "name": "Media.Chunk",
  "relatesTo": { "stream": { "streamId": "stream-1", "seq": 2, "isFinal": false } },
  "payload": { "contentType": "audio/webm", "contentUrl": "data:audio/webm;base64,..." },
  "entities": [
    {
      "type": "streamInfo",
      "streamId": "stream-1",
      "streamType": "audio",
      "streamState": "Streaming",
      "streamSequence": 2
    }
  ]
}

19.8 Streaming: Media.End

{
  "v": "5",
  "type": "event",
  "id": "evt-003",
  "timestamp": "2026-04-01T10:10:05Z",
  "channelId": "voicechannel",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "user-123", "name": "Alice", "role": "user" },
  "to": [{ "id": "agent-456", "name": "Agent", "role": "agent" }],
  "name": "Media.End",
  "relatesTo": { "stream": { "streamId": "stream-1", "seq": 3, "isFinal": true } },
  "payload": { "contentType": "application/vnd.microsoft.activity.media.end+json", "content": {} },
  "entities": [
    {
      "type": "streamInfo",
      "streamId": "stream-1",
      "streamType": "audio",
      "streamState": "Final",
      "streamSequence": 3
    }
  ]
}

19.9 Multi-part message (text + image)

{
  "v": "5",
  "type": "message",
  "id": "msg-multi-001",
  "timestamp": "2026-04-01T11:00:00Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "agent-456", "name": "Agent", "role": "agent" },
  "to": [{ "id": "user-123", "name": "Alice", "role": "user" }],
  "payload": {
    "contentType": "multipart/mixed",
    "content": "Here's the weather forecast with a chart:",
    "items": [
      {
        "kind": "text",
        "contentType": "text/markdown",
        "content": "**London forecast:** 15°C, Cloudy with a chance of rain in the afternoon."
      },
      {
        "kind": "image",
        "contentType": "image/png",
        "contentUrl": "https://example.com/charts/london-forecast.png",
        "name": "london-forecast.png",
        "thumbnailUrl": "https://example.com/charts/london-forecast-thumb.png"
      }
    ]
  }
}

19.10 Image message

{
  "v": "5",
  "type": "message",
  "id": "img-001",
  "timestamp": "2026-04-01T10:02:00Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "user-123", "name": "Alice", "role": "user" },
  "to": [{ "id": "agent-456", "name": "Agent", "role": "agent" }],
  "payload": {
    "contentType": "image/png",
    "contentUrl": "https://example.com/images/photo.png",
    "name": "photo.png"
  }
}

19.11 Voice message (non-streaming)

{
  "v": "5",
  "type": "message",
  "id": "voice-001",
  "timestamp": "2026-04-01T10:03:00Z",
  "channelId": "voicechannel",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "user-123", "name": "Alice", "role": "user" },
  "to": [{ "id": "agent-456", "name": "Agent", "role": "agent" }],
  "payload": {
    "contentType": "application/vnd.microsoft.activity.voice+json",
    "content": {
      "contentType": "audio/webm",
      "contentUrl": "https://example.com/audio/utterance.webm",
      "transcription": "Book a flight to Paris",
      "locale": "en-US"
    }
  }
}

19.12 Adaptive Card message

{
  "v": "5",
  "type": "message",
  "id": "card-001",
  "timestamp": "2026-04-01T10:06:00Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "agent-456", "name": "Agent", "role": "agent" },
  "to": [{ "id": "user-123", "name": "Alice", "role": "user" }],
  "payload": {
    "contentType": "application/vnd.microsoft.card.adaptive",
    "content": {
      "type": "AdaptiveCard",
      "version": "1.5",
      "body": [
        { "type": "TextBlock", "text": "Hello from v5", "wrap": true }
      ]
    }
  }
}

19.13 Message update

{
  "v": "5",
  "type": "message",
  "id": "msg-003",
  "timestamp": "2026-04-01T10:45:00Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "user-123", "name": "Alice", "role": "user" },
  "to": [{ "id": "agent-456", "name": "Agent", "role": "agent" }],
  "relatesTo": { "replaces": { "activityId": "msg-001" } },
  "payload": { "contentType": "text/markdown", "content": "Hello, world! (edited)" }
}

19.14 Message delete

{
  "v": "5",
  "type": "event",
  "id": "del-001",
  "timestamp": "2026-04-01T10:46:00Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "user-123", "name": "Alice", "role": "user" },
  "name": "message.delete",
  "relatesTo": { "tombstones": { "activityId": "msg-001" } }
}

19.15 Conversation update

{
  "v": "5",
  "type": "event",
  "id": "evt-conv-002",
  "timestamp": "2026-04-01T10:50:00Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "channel", "role": "channel" },
  "name": "conversation.update",
  "payload": {
    "contentType": "application/vnd.microsoft.activity.conversation.update+json",
    "content": {
      "membersAdded": [{ "id": "agent-789", "name": "HelperAgent", "role": "agent" }],
      "membersRemoved": []
    }
  }
}

19.16 Typing event

{
  "v": "5",
  "type": "event",
  "id": "evt-typing-001",
  "timestamp": "2026-04-01T10:01:00Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "user-123", "name": "Alice", "role": "user" },
  "name": "typing"
}

19.17 Message reaction

{
  "v": "5",
  "type": "event",
  "id": "evt-react-002",
  "timestamp": "2026-04-01T10:55:00Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "user-123", "name": "Alice", "role": "user" },
  "name": "message.reaction",
  "relatesTo": { "reactsTo": { "activityId": "msg-002" } },
  "payload": {
    "contentType": "application/vnd.microsoft.activity.reaction+json",
    "content": {
      "reactionsAdded": [{ "type": "+1" }],
      "reactionsRemoved": []
    }
  }
}

19.18 Context sharing (entities)

{
  "v": "5",
  "type": "message",
  "id": "ctx-001",
  "timestamp": "2026-04-01T10:30:00Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "user-123", "name": "Alice", "role": "user" },
  "to": [{ "id": "agent-456", "name": "Agent", "role": "agent" }],
  "payload": { "contentType": "text/plain", "content": "Can you explain what I'm seeing on screen?" },
  "entities": [
    {
      "type": "context",
      "screenContext": {
        "surroundingText": "def hello(): print('Hello')",
        "images": ["iVBORw0KGgoAAAANSUhEUgAAAAUA...", "https://example.com/screenshot.png"]
      }
    }
  ]
}

19.19 Delegation + delivery hints (entities)

{
  "v": "5",
  "type": "command",
  "id": "cmd-002",
  "timestamp": "2026-04-01T10:40:00Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "child-agent", "name": "ChildAgent", "role": "agent" },
  "to": [{ "id": "tool.calendar", "name": "CalendarTool", "role": "tool" }],
  "name": "calendar.createEvent",
  "payload": { "contentType": "application/json", "content": { "title": "Sync", "startUtc": "2026-04-02T16:00:00Z" } },
  "entities": [
    {
      "type": "security",
      "actor": { "id": "user-123", "role": "user" },
      "caller": { "id": "parent-agent", "role": "agent", "appId": "..." },
      "delegationChain": [
        { "id": "parent-agent", "proof": { "type": "jwt", "token": "..." } },
        { "id": "child-agent", "proof": { "type": "jwt", "token": "..." } }
      ],
      "scopes": ["tool.calendar.write.limited"],
      "attenuations": [{ "by": "child-agent", "removedScopes": ["tool.calendar.write.full"] }]
    },
    {
      "type": "delivery",
      "durable": true,
      "ttlMs": 600000,
      "idempotencyKey": "user-123:conv-abc:calendar.createEvent:42"
    }
  ]
}

19.20 Capability negotiation (first activity in conversation)

{
  "v": "5",
  "type": "message",
  "id": "msg-hello-001",
  "timestamp": "2026-04-01T09:59:00Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "agent-456", "name": "Agent", "role": "agent" },
  "to": [{ "id": "user-123", "name": "Alice", "role": "user" }],
  "payload": { "contentType": "text/plain", "content": "Welcome! How can I help you today?" },
  "entities": [
    {
      "type": "capabilities",
      "supportedContentTypes": ["text/plain", "text/markdown", "application/vnd.microsoft.card.adaptive", "image/png", "audio/webm"],
      "supportedStreamTypes": ["audio", "text"],
      "supportedCommands": ["weather.getForecast", "calendar.createEvent"],
      "supportedEventNames": ["Media.*", "typing", "conversation.update"],
      "protocolVersions": ["5", "3.4"],
      "extensions": {}
    }
  ]
}

19.21 Session lifecycle (voice call)

Session Init

{
  "v": "5",
  "type": "command",
  "id": "cmd-sess-001",
  "timestamp": "2026-04-01T12:00:00Z",
  "channelId": "voicechannel",
  "conversation": { "id": "conv-voice-001" },
  "from": { "id": "user-123", "role": "user" },
  "to": [{ "id": "agent-456", "role": "agent" }],
  "name": "session.init",
  "payload": {
    "contentType": "application/vnd.microsoft.activity.session.init+json",
    "content": { "sessionId": "sess_456" }
  }
}

Session Init Result

{
  "v": "5",
  "type": "commandResult",
  "id": "cmdres-sess-001",
  "timestamp": "2026-04-01T12:00:01Z",
  "channelId": "voicechannel",
  "conversation": { "id": "conv-voice-001" },
  "from": { "id": "agent-456", "role": "agent" },
  "to": [{ "id": "user-123", "role": "user" }],
  "name": "session.init",
  "relatesTo": { "inReplyTo": { "activityId": "cmd-sess-001" } },
  "payload": {
    "contentType": "application/json",
    "content": { "ok": true, "result": { "sessionId": "sess_456", "capabilities": ["audio", "text"] } }
  }
}

Session Update (Barge-In)

{
  "v": "5",
  "type": "command",
  "id": "cmd-sess-002",
  "timestamp": "2026-04-01T12:01:00Z",
  "channelId": "voicechannel",
  "conversation": { "id": "conv-voice-001" },
  "from": { "id": "user-123", "role": "user" },
  "to": [{ "id": "agent-456", "role": "agent" }],
  "name": "session.update",
  "payload": {
    "contentType": "application/vnd.microsoft.activity.session.update+json",
    "content": { "signal": "bargeIn", "origin": "user" }
  }
}

Session End

{
  "v": "5",
  "type": "command",
  "id": "cmd-sess-003",
  "timestamp": "2026-04-01T12:05:00Z",
  "channelId": "voicechannel",
  "conversation": { "id": "conv-voice-001" },
  "from": { "id": "agent-456", "role": "agent" },
  "to": [{ "id": "user-123", "role": "user" }],
  "name": "session.end",
  "payload": {
    "contentType": "application/vnd.microsoft.activity.session.end+json",
    "content": { "reason": "completed" }
  }
}

19.22 Trace activity

{
  "v": "5",
  "type": "trace",
  "id": "trace-001",
  "timestamp": "2026-04-01T12:05:00Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "agent-456", "name": "Agent", "role": "agent" },
  "name": "agent.debug.reasoning",
  "relatesTo": {
    "inReplyTo": { "activityId": "msg-001" },
    "trace": { "traceId": "abc123def456", "spanId": "span-001" }
  },
  "payload": {
    "contentType": "application/json",
    "content": {
      "step": "intent_classification",
      "result": "greeting",
      "confidence": 0.97,
      "durationMs": 42
    }
  }
}

19.23 End of conversation

{
  "v": "5",
  "type": "event",
  "id": "evt-end-001",
  "timestamp": "2026-04-01T13:00:00Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "agent-456", "name": "Agent", "role": "agent" },
  "name": "conversation.end",
  "payload": {
    "contentType": "application/json",
    "content": { "code": "completedSuccessfully" }
  }
}

19.24 MCP-compatible tool call (cross-protocol example)

This example shows how an MCP tool call maps to a v5 command, demonstrating the complementary relationship described in §5.2:

{
  "v": "5",
  "type": "command",
  "id": "cmd-mcp-001",
  "timestamp": "2026-04-01T14:00:00Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "agent-456", "name": "Agent", "role": "agent" },
  "to": [{ "id": "mcp-server.filesystem", "name": "FileSystemServer", "role": "tool" }],
  "name": "readFile",
  "payload": {
    "contentType": "application/json",
    "content": { "path": "/home/user/document.txt" }
  }
}

19.25 A2A-compatible task delegation (cross-protocol example)

This example shows how an A2A task message maps to a v5 command with delegation, demonstrating the complementary relationship described in §5.3:

{
  "v": "5",
  "type": "command",
  "id": "cmd-a2a-001",
  "timestamp": "2026-04-01T15:00:00Z",
  "channelId": "a2a-gateway",
  "conversation": { "id": "task-onboarding-001" },
  "from": { "id": "hr-agent", "name": "HRAgent", "role": "agent" },
  "to": [{ "id": "payroll-agent", "name": "PayrollAgent", "role": "agent" }],
  "name": "payroll.createOnboarding",
  "payload": {
    "contentType": "application/json",
    "content": {
      "employeeId": "emp-789",
      "startDate": "2026-05-01",
      "department": "Engineering"
    }
  },
  "entities": [
    {
      "type": "security",
      "actor": { "id": "hr-manager-001", "role": "user" },
      "caller": { "id": "hr-agent", "role": "agent", "appId": "hr-app-id" },
      "delegationChain": [
        { "id": "hr-agent", "proof": { "type": "jwt", "token": "..." } }
      ],
      "scopes": ["payroll.onboarding.create"]
    }
  ]
}

19.26 Suggested actions

{
  "v": "5",
  "type": "message",
  "id": "msg-suggest-001",
  "timestamp": "2026-04-01T11:10:00Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "agent-456", "name": "Agent", "role": "agent" },
  "to": [{ "id": "user-123", "name": "Alice", "role": "user" }],
  "payload": {
    "contentType": "multipart/mixed",
    "content": "Would you like to continue?",
    "items": [
      {
        "kind": "text",
        "contentType": "text/plain",
        "content": "Would you like to continue?"
      },
      {
        "kind": "json",
        "contentType": "application/vnd.microsoft.activity.suggestedActions+json",
        "content": {
          "actions": [
            { "type": "imBack", "title": "Yes", "value": "yes" },
            { "type": "imBack", "title": "No", "value": "no" }
          ]
        }
      }
    ]
  }
}

19.27 Locale entity usage

{
  "v": "5",
  "type": "message",
  "id": "msg-locale-001",
  "timestamp": "2026-04-01T16:00:00Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "user-123", "name": "Alice", "role": "user" },
  "to": [{ "id": "agent-456", "name": "Agent", "role": "agent" }],
  "payload": { "contentType": "text/plain", "content": "Quel temps fait-il à Paris?" },
  "entities": [
    { "type": "locale", "language": "fr-FR", "timezone": "Europe/Paris" }
  ]
}

19.28 Causation chain (tool call triggering follow-up to user)

This example demonstrates relatesTo.causedBy (V50149). The agent receives a tool result and sends a follow-up message to the user. The message is caused by the tool result but is not a reply to it:

{
  "v": "5",
  "type": "message",
  "id": "msg-followup-001",
  "timestamp": "2026-04-01T10:20:05Z",
  "channelId": "webchat",
  "conversation": { "id": "conv-abc" },
  "from": { "id": "agent-456", "name": "Agent", "role": "agent" },
  "to": [{ "id": "user-123", "name": "Alice", "role": "user" }],
  "relatesTo": {
    "inReplyTo": { "activityId": "msg-001" },
    "causedBy": { "activityId": "cmdres-001" }
  },
  "payload": {
    "contentType": "text/markdown",
    "content": "The weather in London is **15°C and Cloudy**. Would you like more details?"
  }
}

Metadata

Metadata

Assignees

Labels

DiscussionA great topic for discussion and collaborationSpecsThis is related to Activity Protocol Specification

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions