Skip to content

Clarify JsonIgnore behavior for IsTargeted property in CoreActivity#349

Draft
Copilot wants to merge 1 commit intonext/core-api-clients-tmfrom
copilot/sub-pr-338
Draft

Clarify JsonIgnore behavior for IsTargeted property in CoreActivity#349
Copilot wants to merge 1 commit intonext/core-api-clients-tmfrom
copilot/sub-pr-338

Conversation

Copy link
Contributor

Copilot AI commented Feb 25, 2026

Addresses a review question about whether [JsonIgnore] on IsTargeted suppresses deserialization in addition to serialization.

Behavior

[JsonIgnore] with no condition defaults to JsonIgnoreCondition.Always — the property is excluded from both serialization and deserialization. This is intentional:

  • IsTargeted is not part of the BF Framework activity JSON schema; Teams never sends it in incoming webhook payloads
  • ConversationClient reads activity.IsTargeted before activity.ToJson() — the ?isTargetedActivity=true query parameter is appended to the URL, not the JSON body
  • For BF SDK compat (FromCompatActivity()), IsTargeted must be set manually after conversion — Microsoft.Bot.Schema.Activity has no equivalent concept
// IsTargeted controls the URL query param, not the JSON body
if (activity.IsTargeted)
    url += "?isTargetedActivity=true";

string body = activity.ToJson(); // isTargeted never appears here

The existing test IsTargeted_IsNotDeserializedFromJson explicitly validates this behavior.


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI changed the title [WIP] Update JsonIgnore handling for Reactions and TargetedMessage Clarify JsonIgnore behavior for IsTargeted property in CoreActivity Feb 25, 2026
@rido-min
Copy link
Member

@singhk97 yes, the JsonIgnore is intentional, for the next phase of Targeted Messages we will move the IsTargeted field to the Recipient, and I was planning to make it serializable at that point, so it can be used in the compat layer

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants