Some checks are pending
CodeQL / Analyze (csharp) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
dotnet-build-and-test / paths-filter (push) Waiting to run
dotnet-build-and-test / dotnet-build-and-test (Debug, windows-latest, net9.0) (push) Blocked by required conditions
dotnet-build-and-test / dotnet-build-and-test (Release, integration, true, ubuntu-latest, net10.0) (push) Blocked by required conditions
dotnet-build-and-test / dotnet-build-and-test (Release, integration, true, windows-latest, net472) (push) Blocked by required conditions
dotnet-build-and-test / dotnet-build-and-test (Release, ubuntu-latest, net8.0) (push) Blocked by required conditions
dotnet-build-and-test / dotnet-build-and-test-check (push) Blocked by required conditions
165 lines
5.2 KiB
YAML
165 lines
5.2 KiB
YAML
#
|
|
# This workflow demonstrates using multiple agents to provide automated
|
|
# troubleshooting steps to resolve common issues with escalation options.
|
|
#
|
|
# Example input:
|
|
# My PC keeps rebooting and I can't use it.
|
|
#
|
|
kind: Workflow
|
|
trigger:
|
|
|
|
kind: OnConversationStart
|
|
id: workflow_demo
|
|
actions:
|
|
|
|
# Interact with user until the issue has been resolved or
|
|
# a determination is made that a ticket is required.
|
|
- kind: InvokeAzureAgent
|
|
id: service_agent
|
|
conversationId: =System.ConversationId
|
|
agent:
|
|
name: SelfServiceAgent
|
|
input:
|
|
externalLoop:
|
|
when: |-
|
|
=Not(Local.ServiceParameters.IsResolved)
|
|
And
|
|
Not(Local.ServiceParameters.NeedsTicket)
|
|
output:
|
|
responseObject: Local.ServiceParameters
|
|
|
|
# All done if issue is resolved.
|
|
- kind: ConditionGroup
|
|
id: check_if_resolved
|
|
conditions:
|
|
|
|
- condition: =Local.ServiceParameters.IsResolved
|
|
id: test_if_resolved
|
|
actions:
|
|
- kind: GotoAction
|
|
id: end_when_resolved
|
|
actionId: all_done
|
|
|
|
# Create the ticket.
|
|
- kind: InvokeAzureAgent
|
|
id: ticket_agent
|
|
agent:
|
|
name: TicketingAgent
|
|
input:
|
|
arguments:
|
|
IssueDescription: =Local.ServiceParameters.IssueDescription
|
|
AttemptedResolutionSteps: =Local.ServiceParameters.AttemptedResolutionSteps
|
|
output:
|
|
responseObject: Local.TicketParameters
|
|
|
|
# Capture the attempted resolution steps.
|
|
- kind: SetVariable
|
|
id: capture_attempted_resolution
|
|
variable: Local.ResolutionSteps
|
|
value: =Local.ServiceParameters.AttemptedResolutionSteps
|
|
|
|
# Notify user of ticket identifier.
|
|
- kind: SendActivity
|
|
id: log_ticket
|
|
activity: "Created ticket #{Local.TicketParameters.TicketId}"
|
|
|
|
# Determine which team for which route the ticket.
|
|
- kind: InvokeAzureAgent
|
|
id: routing_agent
|
|
agent:
|
|
name: TicketRoutingAgent
|
|
input:
|
|
messages: =UserMessage(Local.ServiceParameters.IssueDescription)
|
|
output:
|
|
responseObject: Local.RoutingParameters
|
|
|
|
# Notify user of routing decision.
|
|
- kind: SendActivity
|
|
id: log_route
|
|
activity: Routing to {Local.RoutingParameters.TeamName}
|
|
|
|
- kind: ConditionGroup
|
|
id: check_routing
|
|
conditions:
|
|
|
|
- condition: =Local.RoutingParameters.TeamName = "Windows Support"
|
|
id: route_to_support
|
|
actions:
|
|
|
|
# Invoke the support agent to attempt to resolve the issue.
|
|
- kind: CreateConversation
|
|
id: conversation_support
|
|
conversationId: Local.SupportConversationId
|
|
|
|
- kind: InvokeAzureAgent
|
|
id: support_agent
|
|
conversationId: =Local.SupportConversationId
|
|
agent:
|
|
name: WindowsSupportAgent
|
|
input:
|
|
arguments:
|
|
IssueDescription: =Local.ServiceParameters.IssueDescription
|
|
AttemptedResolutionSteps: =Local.ServiceParameters.AttemptedResolutionSteps
|
|
externalLoop:
|
|
when: |-
|
|
=Not(Local.SupportParameters.IsResolved)
|
|
And
|
|
Not(Local.SupportParameters.NeedsEscalation)
|
|
output:
|
|
autoSend: true
|
|
responseObject: Local.SupportParameters
|
|
|
|
# Capture the attempted resolution steps.
|
|
- kind: SetVariable
|
|
id: capture_support_resolution
|
|
variable: Local.ResolutionSteps
|
|
value: =Local.SupportParameters.ResolutionSummary
|
|
|
|
# Check if the issue was resolved by support.
|
|
- kind: ConditionGroup
|
|
id: check_resolved
|
|
conditions:
|
|
|
|
# Resolve ticket
|
|
- condition: =Local.SupportParameters.IsResolved
|
|
id: handle_if_resolved
|
|
actions:
|
|
|
|
- kind: InvokeAzureAgent
|
|
id: resolution_agent
|
|
agent:
|
|
name: TicketResolutionAgent
|
|
input:
|
|
arguments:
|
|
TicketId: =Local.TicketParameters.TicketId
|
|
ResolutionSummary: =Local.SupportParameters.ResolutionSummary
|
|
|
|
- kind: GotoAction
|
|
id: end_when_solved
|
|
actionId: all_done
|
|
|
|
# Escalate the ticket by sending an email notification.
|
|
- kind: CreateConversation
|
|
id: conversation_escalate
|
|
conversationId: Local.EscalationConversationId
|
|
|
|
- kind: InvokeAzureAgent
|
|
id: escalate_agent
|
|
conversationId: =Local.EscalationConversationId
|
|
agent:
|
|
name: TicketEscalationAgent
|
|
input:
|
|
arguments:
|
|
TicketId: =Local.TicketParameters.TicketId
|
|
IssueDescription: =Local.ServiceParameters.IssueDescription
|
|
ResolutionSummary: =Local.ResolutionSteps
|
|
externalLoop:
|
|
when: =Not(Local.EscalationParameters.IsComplete)
|
|
output:
|
|
autoSend: true
|
|
responseObject: Local.EscalationParameters
|
|
|
|
# All done
|
|
- kind: EndWorkflow
|
|
id: all_done
|