Skip to content

Commit 616cab3

Browse files
authored
Merge pull request #312 from microsoft/users/mbarbour/updateChannelAccountSpec
Update Channel Account definition to clarify roles and add required f…
2 parents 7ea8ba8 + 175de4f commit 616cab3

File tree

1 file changed

+33
-4
lines changed

1 file changed

+33
-4
lines changed

specs/activity/protocol-activity.md

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -508,7 +508,7 @@ Conversation update activities are identified by a `type` value of `conversation
508508

509509
`A4101`: Each `channelAccount` (identified by `id` field) SHOULD appear at most once within the `membersAdded` and `membersRemoved` fields. An ID SHOULD NOT appear in both fields. An ID SHOULD NOT be duplicated within either field.
510510

511-
`A4102`: Channels SHOULD NOT use conversation update activities to indicate changes to a channel account's fields (e.g., `name`) if the channel account was not added to or removed from the conversation.
511+
`A4102`: Channels SHOULD NOT use conversation update activities to indicate changes to a [Channel account's](#channel-account) fields (e.g., `name`) if the [Channel account](#channel-account) was not added to or removed from the conversation.
512512

513513
`A4103`: Channels SHOULD NOT send the `topicName` or `historyDisclosed` fields if the activity is not signaling a change in value for either field.
514514

@@ -1196,12 +1196,14 @@ A `call` action represents a telephone number that may be called. Call uses the
11961196

11971197
### Channel account
11981198

1199-
Channel accounts represent identities within a channel. The channel account includes an ID that can be used to identify and contact the account within that channel. Sometimes these IDs exist within a single namespace (e.g. Skype IDs); sometimes, they are federated across many servers (e.g. email addresses). In addition to the ID, channel accounts include display names and Azure Active Directory (AAD) object IDs.
1199+
Channel accounts represent identities within a channel. The channel account includes an ID that can be used to identify and contact the account within that channel. Sometimes these IDs exist within a single namespace sometimes, they are federated across many servers (e.g. email addresses). In addition to the ID, channel accounts include display names and Azure Active Directory (AAD) object IDs.
12001200

12011201
#### Channel account ID
12021202

12031203
The `id` field is the identifier and address within the channel. The value of the `id` field is a string. An example `id` within a channel that uses email addresses is "name@example.com"
12041204

1205+
In the case where role is of type `agenticUser` or `agenticInstance` this id will be the UPN of the Agentic User.
1206+
12051207
`A7510`: Channels SHOULD use the same values and conventions for account IDs regardless of their position within the schema (`from.id`, `recipient.id`, `membersAdded`, etc.). This allows Agents and clients to use ordinal string comparisons to know when e.g. they are described in the `membersAdded` field of a `conversationUpdate` activity.
12061208

12071209
#### Channel account name
@@ -1212,11 +1214,35 @@ The `name` field is an optional, friendly name within the channel. The value of
12121214

12131215
The `aadObjectId` field is an optional ID corresponding to the account's object ID within Azure Active Directory (AAD). The value of the `aadObjectId` field is a string.
12141216

1217+
#### Channel account Agentic App ID
1218+
1219+
The `agenticAppId` field is an optional ID corresponding to the account's Agentic Instance Client\App ID within Entra ID. The value of the `agenticAppId` field is a string representation of a GUID.
1220+
1221+
This field is REQUIRED if the role is set to `agenticuser` or `agenticinstance`.
1222+
1223+
#### Channel account Agentic User ID
1224+
1225+
The `agenticUserId` field is an optional ID corresponding to the account's Agentic object ID within Entra ID. The value of the `agenticUserId` field is a string representation of a GUID.
1226+
1227+
This field is REQUIRED if the role is set to `agenticuser` or `agenticinstance`.
1228+
12151229
#### Channel account role
12161230

1217-
The `role` field indicates whether entity behind the account is a user or Agent. This field is intended for use in the [Transcript format](../transcript/transcript.md) [[15](#references)] to distinguish between activities sent by users and activities sent by Agents. The value of the `role` field is a string.
1231+
The `role` field indicates the treatment of the Channel Account. The value of the `role` field is a string.
1232+
1233+
Known roles are:
1234+
1235+
Role | Description
1236+
:-----|:-------------
1237+
**agent** | indicates that this channel account is describing the agent identity in the channel. Legacy agents may see this as `bot`
1238+
**agenticInstance** | indicates that this channel account is describing an Agentic Instance in the channel.
1239+
**agenticUser** | indicates that this channel account is describing an Agentic User in this channel.
1240+
**connectoruser** | indicates that this channel account is describing a connector user from Microsoft Copilot Studio
1241+
**user** | indicates that this channel account is describing a end user account.
1242+
1243+
1244+
This field is intended for use in the [Transcript format](../transcript/transcript.md) [[15](#references)] to distinguish between activities sent by users and activities sent by Agents.
12181245

1219-
`A7511`: Senders SHOULD NOT include this field. Receivers SHOULD ignore this field.
12201246

12211247
### Conversation account
12221248

@@ -1568,6 +1594,9 @@ The `error` field contains the reason the original [command activity](#command-a
15681594

15691595
# Appendix I - Changes
15701596

1597+
# 2025-09-30 - mattb-msft
1598+
* Updated Channel Account definition to reflect current rules and usages.
1599+
15711600
# 2025-05-21 - guhiriya@microsoft.com
15721601
* Added `streaminfo` entity for streaming text via `typing` and `message` activities
15731602
* Defined `streamType`, `streamSequence`, and optional `streamResult`

0 commit comments

Comments
 (0)