Webex Space Message to Support Ticket
When a message in a designated Webex support space matches an escalation keyword (or a bot is mentioned), the flow creates a case in Dataverse, replies in the space with the ticket reference, and posts to a Teams support channel. Subsequent messages append to the open case. Turns a Webex space into a tracked support channel.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
This flow turns a designated Webex space into a tracked support queue. When a new message is posted in the monitored space, the flow fetches the full message (Webex omits message text from webhook payloads for privacy), validates it is a genuine support request, then logs a Dataverse case, posts an alert to a Teams support channel, and replies in the Webex space with an acknowledgement.
Why it matters: Help requests posted in a chat space scroll away and get lost. Capturing each one as a structured Dataverse record gives a trackable, reportable queue — and the in-space acknowledgement plus Teams alert close the loop so requesters and the support team both know a ticket exists.
Use Case
A team fields help requests in a shared Webex space. They want every request captured as a case, acknowledged automatically, and surfaced to the support team in Teams — without anyone manually copying messages into a ticketing tool.
Flow Architecture
When a message is posted in Webex
Webex MessagesCreated (webhook)Fires when any message is posted in a space the connection can see. Payload carries data/id (the message id) only — not the text.
Initialize variables
Initialize VariableMint a guid() correlation id; load the monitored support space id and bot email (loop guard) from env vars; set the initial status ('New') and source ('Webex').
Get Message Details
Webex GetMessageDetailsFetch the full message (text, personEmail, roomId, created) using the trigger's message id.
Check Support Space And Sender
Condition (If)Gate: message is in the monitored space AND not from the bot (loop guard) AND has non-empty text.
Create Support Ticket
Dataverse CreateRecordCreate a flowlibs_webexsupportticket row from the message (requester, text, space/message ids, status, source, correlation, timestamp).
Notify Support Team In Teams
Teams PostMessageToConversationPost an HTML card to the support channel with requester, message, the new ticket id, and correlation id.
Acknowledge In Webex
Webex SendMessageReply in the space (markdown) confirming the ticket was logged.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_WebexSupportSpaceId | String | REPLACE_WITH_WEBEX_SUPPORT_SPACE_ROOMID | The Webex room (space) id to monitor for support requests. |
| flowlibs_WebexBotEmail | String | support-bot@your-tenant.onmicrosoft.com | The connection/bot account email — excluded from ticket creation (loop guard). |
| flowlibs_TeamsGroupId | String | REPLACE_WITH_TEAMS_GROUP_ID | Teams team (AAD group) id for the support channel notification. |
| flowlibs_TeamsChannelId | String | REPLACE_WITH_TEAMS_CHANNEL_ID | Teams channel id that receives the new-ticket alert. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Webex | shared_webex | MessagesCreated GetMessageDetails SendMessage |
| Microsoft Dataverse | shared_commondataserviceforapps | CreateRecord |
| Microsoft Teams | shared_teams | PostMessageToConversation |
Note — All connections are referenced as solution connection references; the flow is portable between environments as long as a connection is mapped at import time.
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- Keyword gate
- The built flow logs every non-bot message in the space (a 'dedicated support space' pattern). To require an explicit trigger, add a flowlibs_EscalationKeyword env var and extend the condition with contains(toLower(body('Get_Message_Details')?['text']), toLower(varKeyword)).
- Create-or-append
- To thread follow-ups into one open case, add a Dataverse ListRecords (filter flowlibs_webexspaceid eq '{roomId}' and flowlibs_status ne 'Closed') before the create; if a row exists, UpdateRecord instead of CreateRecord.
- AI summary
- Insert an Azure OpenAI ChatCompletions call after Get Message Details to summarize the request and store it in flowlibs_description.
- Routing
- Keyword- or sender-route to different Teams channels by parameterizing flowlibs_TeamsChannelId via a Switch.
- Resolve in space
- Add a second flow that closes the case when a designated reply (e.g. /resolve) is posted.
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01Trigger message id
The Webex message id from the webhook payload.
EXPR.02Support gate (condition)
In the monitored space, not from the bot, non-empty text.
EXPR.03Ticket name
Primary name of the case.
EXPR.04Correlation id
Trace id stamped on the case and notifications.
EXPR.05Webex acknowledgement (markdown)
In-space acknowledgement reply.
Customize & download
Generate a ready-to-import copy of this solution with your environment-variable values baked in — available on Base, Pro, or Team.
Upgrade to customize
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.