[Improve] Surface Teams conversation readiness and fall back to web-only setup when Teams posting fails - #48
Merged
brunobergher merged 1 commit intoJul 9, 2026
Conversation
Author
|
No code issues found. See task |
brunobergher
marked this pull request as ready for review
July 9, 2026 18:22
brunobergher
requested review from
brunobergher,
daniel-lxs and
mrubens
as code owners
July 9, 2026 18:22
mrubens
pushed a commit
that referenced
this pull request
Jul 9, 2026
Resolves conflicts by porting develop's changes onto the new data-model contract: - setup-new onboarding kickoff adopts develop's web-only Teams fallback (#48) with the new enqueue contract (user initiator, setup_onboarding workflow, provider stamp) instead of attributionOverride - Telegram routing-confirmation launch helper (#22) ported to the new contract, keeping launchClass: 'human' for keepalive policy - snapshot refresh keeps the automation initiator; dropped the re-merged forged-owner fallback - setup redirect guard keeps the provider-agnostic completion check - drizzle baseline regenerated to fold develop's 0001 (nullable environments.created_by_user_id + declarative_source) into the single 0000 baseline - develop-added tests updated to the new enqueue/factory shapes
mrubens
deleted the
feature/teams-onboarding-fallback-parity-07xrp2iqin7tm
branch
July 12, 2026 04:19
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.
What changed
Teams-only deployments now get reliable, honest onboarding fallback behavior (precedence stays Slack > Telegram > Teams):
teams.integrationStatusreportsprimaryConversationReadyandprimaryConversationType, sourced fromfindTeamsPrimaryConversation()(which now also returns the installation's conversation type), so the UI can tell "bot credentials configured" apart from "Roomote can actually post to Teams"./setupTeams connect step show a nudge when the bot is configured but no Teams conversation has been captured yet: install/open the Roomote app in Teams and send the bot one message.setupNewState.chatHandoff*fields null — instead of failing the setup command or making Teams appear connected. Successful Teams kickoffs still persistchatHandoffProvider: "teams",chatHandoffChannelId,chatHandoffThreadId, andchatHandoffServiceUrland enqueue theStandardTaskwith Teams communication metadata, unchanged.teams-integration.md,slack-onboarding.md,agent-entry-surfaces.md) marks Teams onboarding as fallback-only and documents the readiness field.The Teams onboarding message set stays narrow (kickoff, one starter-suggestions intro, delayed follow-up); no Slack-only onboarding campaigns were added to Teams.
New tests cover the
teams.integrationStatuscommand (configured with/without a conversation, unconfigured), the setup-new Teams kickoff fallback (success, missing credentials, post failure, missing message id — including the diagnostic warnings), and the new nudges in both UI surfaces. Existing Teams suggestion tests are unchanged and passing. No DB migration and no webhook payload changes.Why this change was made
Teams onboarding depends on a primary conversation captured from a verified inbound Teams activity, but nothing surfaced that requirement: a half-configured Teams deployment either looked connected or made the setup kickoff throw. This gives admins a visible readiness signal with a concrete next step and keeps
/setuponboarding working (web-only) when Teams can't receive the kickoff.Impact
Admins on Teams-only deployments can see why proactive Teams output isn't arriving and how to fix it with one message, and setup onboarding no longer errors when Teams credentials are missing or a kickoff post fails — it degrades to the web-only task with an accurate diagnostic instead.
Screenshots
The equivalent
/setupconnect-step nudge could not be captured in this dev deployment (it is configured for Slack, so the Teams connect step is not reachable); that state is covered by the newStepCommunicationConnectcomponent tests.