Clarify JsonIgnore behavior for IsTargeted property in CoreActivity#349
Draft
Clarify JsonIgnore behavior for IsTargeted property in CoreActivity#349
Conversation
Introduced a structured API facade (`TeamsBotApplication.Api`) for Teams operations, grouping functionality into Conversations, Users, Teams, Meetings, and Batch sub-APIs. Added new classes for each sub-API, with extensive XML documentation. Updated `TeamsBotApplication` to expose the new facade. Added integration tests for the API hierarchy and error handling. Cleaned up `.csproj` by removing unused RunSettings property. This refactor improves discoverability, organization, and developer experience for Teams API usage.
Added detailed tables to README.md mapping TeamsApi facade methods to their underlying REST endpoints. Documentation covers Conversations, Users (Token), Teams, Meetings, and Batch operations, including HTTP methods, endpoint paths, and relevant base URLs. Added notes on service URL usage and path parameter encoding.
Introduces ReactionsApi for programmatic message reactions in Teams bots, with AddAsync and DeleteAsync methods. ConversationClient now supports AddReactionAsync and DeleteReactionAsync. Expanded ReactionTypes with more documented types. Demonstrated usage in Program.cs by adding a "cake" reaction to "hello" messages.
Introduces IsTargeted property to CoreActivity for private messages, updates ConversationClient to append isTargetedActivity query string for send/update/delete, and extends CoreActivityBuilder for targeted recipient support. Adds a "tm" command to send private messages to all members. Updates and adds tests for IsTargeted logic and ensures it is not serialized. Also updates .gitignore for .claude/.
Removed checks for Recipient Id and Name in several tests in CoreActivityBuilderTests.cs and CoreActivityTests.cs to streamline test coverage. Other test logic remains unchanged.
EchoBot now sends a "Hello TM !" message using TeamsBotApplication's ConversationClient after echoing the user's input. The TeamsActivity is built with correct conversation, recipient, sender, and service URL details. Minor formatting adjustment made in Program.cs with no logic changes.
Copilot
AI
changed the title
[WIP] Update JsonIgnore handling for Reactions and TargetedMessage
Clarify JsonIgnore behavior for IsTargeted property in CoreActivity
Feb 25, 2026
Member
|
@singhk97 yes, the JsonIgnore is intentional, for the next phase of Targeted Messages we will move the |
Base automatically changed from
next/core-api-clients-tm
to
next/core-api-clients
March 4, 2026 05:20
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Addresses a review question about whether
[JsonIgnore]onIsTargetedsuppresses deserialization in addition to serialization.Behavior
[JsonIgnore]with no condition defaults toJsonIgnoreCondition.Always— the property is excluded from both serialization and deserialization. This is intentional:IsTargetedis not part of the BF Framework activity JSON schema; Teams never sends it in incoming webhook payloadsConversationClientreadsactivity.IsTargetedbeforeactivity.ToJson()— the?isTargetedActivity=truequery parameter is appended to the URL, not the JSON bodyFromCompatActivity()),IsTargetedmust be set manually after conversion —Microsoft.Bot.Schema.Activityhas no equivalent conceptThe existing test
IsTargeted_IsNotDeserializedFromJsonexplicitly 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.