Forum Discussion

ParamZ's avatar
ParamZ
Copper Contributor
Nov 26, 2025

App Validation Issue - Bot must send a proactive welcome message in personal scope

I'm working on a bot application for MS Teams using the Python SDK and encountered a challenge with app validation and the proactive welcome message requirement.

What Happened:

  1. Initially, our bot handled the welcome message through on_installation_update, but app validation failed with the error: "Bot must send a proactive welcome message in personal scope."
  2. To satisfy validation, we added on_members_added_activity to send the welcome message for personal scope, which resolved the validation error.
  3. However, this created a new problem: on_members_added_activity is being triggered when we call the Graph API to query chats or users: 

    {graph_url}/me/chats $filter=chatType eq 'oneOnOne' and installedApps/any(a:a/teamsApp/id eq '{teams_app_id}')

    {graph_url}/users/{user_id}/chats $filter=chatType eq 'oneOnOne' and installedApps/any(a:a/teamsApp/id eq '{teams_app_id}')
  4. According to a Stack Overflow discussion (https://stackoverflow.com/questions/57496329/proactive-messaging-bot-in-teams-without-mentioning-the-bot-beforehand), this appears to be a known issue: calling this API triggers a conversation update event even though there were no actual updates, resulting in duplicate events and duplicate welcome messages.

Questions:

  • What is the official/recommended way to handle known issue: calling this API triggers a conversation update event?
  • Whats the recommended way to read personal chat history of a user?
  • Should we be using a different approach for this app validation requirement?

Any guidance or pointers to official documentation would be greatly appreciated!

2 Replies

  • Hello @ParamZ - Could you please confirm if the information above was helpful, or do you still need any additional details?

  • Hello @ParamZ - Thanks for bringing this issue to our attention. 

    1.Graph API queries may generate unexpected conversationUpdate events.
    Recommended Solution: Use event deduplication based on activity ID and conversation ID to avoid sending duplicate welcome messages.

     

    2.Reading Chat History – Suggested Method:

    Best Practice: Save conversation references when the bot is installed, rather than polling the Graph API.
    Alternative: Opt for webhooks or change notifications instead of using /me/chats queries.

     

    3.App Validation – Proper Procedure:

    Primary Method: Utilize on_installation_update for sending welcome messages to meet validation requirements.
    Fallback: Apply on_members_added_activity with deduplication as needed for special cases.

     

    References:

    Design and control conversation flow - Bot Service | Microsoft Learn

    Teams Store Validation Guidelines - Teams | Microsoft Learn

    Please let us know if you have any further query here.

Resources