Skip to content

v2.0.6

Choose a tag to compare

@singhk97 singhk97 released this 02 Apr 19:32
· 98 commits to main since this release
3fd94a2

New Features

CancellationToken Support

  • All async methods now accept optional CancellationToken parameters (fully backwards-compatible)

Targeted Messages (Preview) - ExperimentalTeamsTargeted

  • Send messages visible only to specific recipients: activity.WithRecipient(account, isTargeted: true)

Reactions (Preview) - ExperimentalTeamsReactions

  • New ReactionClient for bot-to-user reactions with expanded reaction types

Sign-in Failure Handling

  • New signin/failure invoke handling with actionable logging via app.OnSignInFailure()

Breaking Changes

  1. GetParticipantAsync - Now requires tenantId parameter
  2. MeetingParticipant - Model restructured (removed Id, Role, IsOrganizer, JoinTime; added Meeting, Conversation)
  3. App.Id - Now nullable
  4. Activity.Value - Refactored for proper type hierarchy access

Deprecations

  • Teams Controllers - Marked [Obsolete], migrate to Minimal APIs (see Deprecated.Controllers sample)
  • Handlers without CancellationToken - Marked [Obsolete], update handler signatures
  • MessageReactionActivity.AddReaction()/.RemoveReaction() - Marked [Obsolete], use ReactionClient instead

Fixes

  • Meeting activity deserialization for Teams PascalCase payloads
  • UserAgent version accuracy
  • GetParticipantAsync signature and data structure

Updates

  • Package: System.IdentityModel.Tokens.Jwt v8.16.0
  • Samples: Updated to Minimal APIs and Local environment
  • New Samples: Reactions, TargetedMessages, Deprecated.Controllers

Migration

Opt-in to preview features:

<PropertyGroup>
  <NoWarn>$(NoWarn);ExperimentalTeamsReactions;ExperimentalTeamsTargeted</NoWarn>
</PropertyGroup>

Controllers → Minimal APIs:

Before (Deprecated):

[TeamsController]
public class MainController : MessageController
{
    [OnMessage]
    public Task OnMessage() { ... }
}

After:

teams.OnMessage(async (context, cancellationToken) =>
{
    await context.Send("Hello!");
});

Add CancellationToken:

Before (Obsolete):

teams.OnMessage(async (context) => { ... });

After:

teams.OnMessage(async (context, cancellationToken) => { ... });

Targeted Messages:

Before:

activity.WithTargetedRecipient(userId);

After:

activity.WithRecipient(account, isTargeted: true);

Reactions:

Before:

messageReactionActivity.AddReaction(reaction);

After:

await context.Api.Conversations.Reactions.CreateAsync(
    conversationId,
    activityId,
    reaction
);

Appendix (PRs merged)


Full Changelog: v2.0.5...v2.0.6