How to send pro active message to the user only in the teams chat channel always

Nandha Kumar (Harman Connected ServicesCorporatio) 100 Reputation points Microsoft External Staff
2026-01-20T15:28:45.3933333+00:00

We want to send proactive notification messages to users in Microsoft Teams. Users can interact with our bot service through three different channels:

Microsoft Teams chat

Copilot window (inside Microsoft Teams)

M365 Copilot

Each channel generates a unique conversation ID, which is stored in a JSON file in the storage account whenever the user interacts with the bot. Notifications are sent to the user in the channel associated with the conversation ID in that JSON file.

Currently:

If the user’s last query came from Teams chat, Copilot window, or M365 Copilot, the corresponding channel’s conversation ID is saved in the JSON file.

Notifications are sent to that channel.

However, M365 Copilot does not support proactive notifications. Only Teams chat and the Copilot window support them.

Questions:

  1. When the last query is from M365 Copilot, the JSON file contains the M365 Copilot conversation ID. Sending a proactive message in this case fails.
  2. Is there a way to always send proactive messages to Teams chat only, regardless of whether the last query was made from M365 Copilot or the Copilot window in Teams?
Azure AI Bot Service
Azure AI Bot Service
An Azure service that provides an integrated environment for bot development.
0 comments No comments
{count} votes

Answer accepted by question author
  1. Sina Salam 27,786 Reputation points Volunteer Moderator
    2026-01-22T13:10:23.19+00:00

    Hello Nandha Kumar (Harman Connected ServicesCorporatio),

    Welcome to the Microsoft Q&A and thank you for posting your questions here.

    I understand that you need how you can send proactive message to the user only in the Teams chat channel always.

    There is Sending a proactive message to a single user in Microsoft Teams is only possible using a bot that already has a valid conversation context with that user. That rule is non‑negotiable and enforced by the Teams service.

    Microsoft itself documents this requirement explicitly:

    “To send a proactive message to a user, the app that contains your bot must be installed for that user.” - Microsoft Learn, Send proactive messages in Teams https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/conversations/send-proactive-messages

    This is the “Only” way (Platform Reality) with two-way implantations or the One Pattern (With Two Implementations):

    A bot sends a proactive message using a previously established conversation reference for that user.

    The two valid ways to implement this pattern are the following:

    Implementation Option 1: Bot Framework SDK (Full Control). This is suitable if you want custom bots, advanced scenarios, SaaS products, enterprise automation.

    Requirements (All Mandatory):

    1. Bot installed in personal scope (or team scope that includes the user)
    2. Capture ConversationReference during install or first interaction
    3. Persist:
      • conversationId
      • serviceUrl
      • tenantId
      • aadObjectId
    4. Send message via continueConversationAsync

    Microsoft explicitly documents this flow:

    “There’s no active turnContext for proactive messages. You must create or reuse a conversation before sending the message.” https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/conversations/send-proactive-messages

    Implementation Option 2: Copilot Studio + Power Automate (No Code). If you prefer Low‑code / no‑code scenarios, business users, internal automation.

    Important Constraints (Often Missed)

    Microsoft clearly states:

    “Proactive messages can only be posted to a personal chat with the agent.” https://learn.microsoft.com/en-us/microsoft-copilot-studio/advanced-proactive-message

    This means:

    • Teams channel only
    • Power Automate required
    • Agent must be installed
    • Message delivered only to that single user

    You do not bypass the bot rules, Power Automate simply invokes them for you.

    I hope this is helpful! Do not hesitate to let me know if you have any other questions or clarifications.


    Please don't forget to close up the thread here by upvoting and accept it as an answer if it is helpful.

    0 comments No comments

Answer accepted by question author
  1. SRILAKSHMI C 13,585 Reputation points Microsoft External Staff Moderator
    2026-01-21T16:11:42.89+00:00

    Hello Nandha Kumar (Harman Connected ServicesCorporatio),

    Welcome to Microsoft Q&A and Thank you for reaching out.

    You’re encountering expected platform behavior based on how conversation references and proactive messaging work across different Microsoft Copilot and Teams channels. The key point is that proactive notifications are channel-specific, and M365 Copilot does not support proactive messaging.

    Below is the recommended and supported way to always send proactive messages only to Microsoft Teams chat, regardless of where the user last interacted.

    How proactive messaging works across channels

    Each channel (Teams chat, Copilot window in Teams, M365 Copilot) generates its own conversation ID

    A proactive message must use a conversation reference from a channel that supports proactive messaging

    Channel support:

      • Microsoft Teams chat — Supported
      • Copilot window inside Teams — Supported
      • M365 Copilot — Not supported

    If a proactive message is attempted using an M365 Copilot conversation reference, it will fail by design.

    Why your current approach fails

    Currently, you store only the last interaction’s conversation ID in your JSON file. If the user’s last interaction was from M365 Copilot, that conversation ID is saved but proactive messaging is not supported there, so sending notifications fails.

    This behavior is expected and cannot be changed.

    Recommended solution

    Always store conversation references per channel

    Instead of overwriting with the latest interaction, store them separately, for example:

    • Teams chat conversation reference
    • Teams Copilot window conversation reference
    • M365 Copilot conversation reference

    Always send proactive messages using Teams chat only

    When sending a proactive notification:

    Explicitly select the Teams chat conversation reference

    Ignore M365 Copilot conversation references for proactive sends

    Do not rely on “last interaction wins” logic

    This guarantees that proactive messages are always delivered to Teams chat, which is the most stable and supported channel.

    Prerequisite

    A proactive message can be sent only if the user has interacted with the bot in Teams chat at least once.

    If the user has:

    Interacted only via M365 Copilot

    Never opened a Teams chat with the bot

    Then:

    A proactive message cannot be sent yet

    This is a platform restriction, not a configuration issue

    You must wait until the user opens or installs the bot in Teams chat to establish a valid conversation reference.

    Additional implementation

    Ensure the bot is properly installed in the Teams chat scope

    Ensure the bot has permission to send messages proactively

    Handle unsupported channels gracefully (log and skip proactive sends)

    Do not attempt to “convert” an M365 Copilot conversation into a Teams chat conversation this is not supported.

    Please refer this

    I Hope this helps. Do let me know if you have any further queries.

    Thank you!

    0 comments No comments

0 additional answers

Sort by: Most helpful

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.