Overview
This skill detects and classifies the type of conversation occurring in ServiceNow engagement channels (Virtual Agent, chat, email, portal) to enable intelligent routing and handling:
- Inquiry: Information-seeking questions about services, policies, or status
- Request: Actionable service requests or catalog orders
- Complaint: Expressions of dissatisfaction requiring service recovery
- Feedback: Constructive input about services, processes, or experiences
- Escalation: Urgent issues requiring immediate attention or management involvement
- Troubleshooting: Technical problem-solving requiring diagnostic steps
- Follow-up: Continuation of a previous conversation or existing ticket
When to use: When building Virtual Agent topic routing, when enriching interaction records with classification metadata, when automating conversation handoff decisions, or when analyzing conversation patterns for service improvement.
Prerequisites
- Roles:
admin,sn_customerservice_manager,itil, orvirtual_agent_admin - Plugins:
com.glide.cs.chatbot(Virtual Agent),com.glide.interaction(Agent Workspace Interaction) - Access: Read access to
sys_cs_conversation,sys_cs_message,interactiontables - Knowledge: Virtual Agent topic design, conversation flow concepts, sentiment analysis basics
- Related Skills:
csm/sentiment-analysisfor sentiment scoring,csm/chat-recommendationfor response suggestions
Procedure
Step 1: Retrieve Conversation Messages
Fetch the conversation history for classification.
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: sys_cs_message
query: conversation=<conversation_sys_id>^ORDERBYsys_created_on
fields: sys_id,body,direction,sys_created_on,typed_by,message_type
limit: 50
REST Approach:
GET /api/now/table/sys_cs_message
?sysparm_query=conversation=<conversation_sys_id>^ORDERBYsys_created_on
&sysparm_fields=sys_id,body,direction,sys_created_on,typed_by,message_type
&sysparm_limit=50
For interaction-based conversations:
Tool: SN-Query-Table
Parameters:
table_name: interaction
query: sys_id=<interaction_sys_id>
fields: sys_id,short_description,type,channel,state,opened_for,assigned_to,opened_at,work_notes
limit: 1
Step 2: Analyze Initial User Message
The first user message is the strongest signal for conversation type. Extract:
Intent Signals:
| Signal Type | Examples | Classification |
|---|---|---|
| Question words | "How do I...", "What is...", "Where can I..." | Inquiry |
| Action verbs | "I need...", "Please set up...", "Can you create..." | Request |
| Negative sentiment | "This is unacceptable...", "I'm frustrated..." | Complaint |
| Suggestion language | "It would be nice if...", "Have you considered..." | Feedback |
| Urgency markers | "URGENT", "This is critical", "Need help NOW" | Escalation |
| Problem description | "It's not working", "I'm getting an error..." | Troubleshooting |
| Reference to prior | "Following up on INC...", "As discussed..." | Follow-up |
Step 3: Apply Classification Rules
Score the conversation against each type using a weighted analysis:
=== CONVERSATION CLASSIFICATION ===
Conversation ID: CS0045678
Channel: Virtual Agent (Service Portal)
User: Jane Smith (Engineering)
Initial Message: "I've been waiting 5 days for my laptop and no one
has contacted me. This is the third time I've had to follow up.
I need this resolved today or I need to speak with a manager."
Classification Scores:
| Type | Score | Signals Detected |
|-----------------|-------|------------------|
| Complaint | 85% | Negative sentiment, dissatisfaction, wait time mention |
| Escalation | 75% | "speak with a manager", urgency ("today") |
| Follow-up | 60% | "third time", reference to prior interaction |
| Request | 30% | "need this resolved" (implicit service need) |
| Inquiry | 10% | No information-seeking language |
| Feedback | 5% | No constructive suggestion |
| Troubleshooting | 5% | No technical problem described |
PRIMARY: Complaint (85%)
SECONDARY: Escalation (75%)
COMPOSITE: Complaint with Escalation Request
URGENCY: High
SENTIMENT: Negative (frustrated)
PRIORITY ACTION: Route to human agent with escalation flag
Step 4: Detect Multi-Intent Conversations
Some conversations contain multiple intents. Identify all:
MCP Approach:
Tool: SN-Query-Table
Parameters:
query: 123TEXTQUERY321=laptop delivery delay complaint escalation
table_name: sys_cb_topic
limit: 10
Analyze message-by-message for intent shifts:
Message 1: "I need to reset my password" -> Request
Message 2: "Also, the VPN has been slow all week" -> Troubleshooting
Message 3: "And when will the new laptops be available?" -> Inquiry
Classification: Multi-intent conversation
Primary: Request (password reset - most actionable)
Secondary: Troubleshooting (VPN performance)
Tertiary: Inquiry (laptop availability)
Step 5: Map Classification to Routing Rules
Determine the appropriate handling workflow based on classification.
Routing Matrix:
| Classification | Channel | Priority | Route To |
|---|---|---|---|
| Inquiry | Virtual Agent | Low | Knowledge search -> FAQ topic |
| Request | Virtual Agent | Medium | Catalog item topic -> Fulfillment |
| Complaint | Live Agent | High | CSM queue -> Service Recovery |
| Feedback | Async | Low | Feedback collection -> Survey |
| Escalation | Live Agent | Critical | Manager queue -> Priority handling |
| Troubleshooting | Virtual Agent | Medium | Diagnostic topic -> IT Support |
| Follow-up | Live Agent | Medium | Original assignee -> Context resume |
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: sys_cb_topic
query: nameLIKEcomplaint^active=true
fields: sys_id,name,description,queue,priority,active
limit: 5
Step 6: Enrich the Interaction Record
Update the interaction or conversation record with classification metadata.
MCP Approach:
Tool: SN-Update-Record
Parameters:
table_name: interaction
sys_id: <interaction_sys_id>
data:
u_conversation_type: "complaint"
u_secondary_type: "escalation"
u_urgency: "high"
u_sentiment: "negative"
u_classification_confidence: "85"
u_routing_recommendation: "csm_escalation_queue"
REST Approach:
PATCH /api/now/table/interaction/<interaction_sys_id>
Body: {
"u_conversation_type": "complaint",
"u_secondary_type": "escalation",
"u_urgency": "high",
"u_sentiment": "negative"
}
Step 7: Create Downstream Records Based on Type
Automatically create appropriate records based on classification.
For Complaints -- Create CSM Case:
MCP Approach:
Tool: SN-Create-Record
Parameters:
table_name: sn_customerservice_case
data:
short_description: "Complaint: Laptop delivery delay - 3rd follow-up"
description: "<conversation summary>"
priority: 2
contact: "<user_sys_id>"
category: "complaint"
u_complaint_type: "service_delivery"
u_source_conversation: "<conversation_sys_id>"
For Requests -- Create Catalog Request:
Tool: SN-Create-Record
Parameters:
table_name: sc_request
data:
requested_for: "<user_sys_id>"
short_description: "Password reset request via chat"
description: "<conversation context>"
u_source_conversation: "<conversation_sys_id>"
Step 8: Handle Escalation Routing
When an escalation is detected, trigger immediate routing.
MCP Approach:
Tool: SN-Update-Record
Parameters:
table_name: interaction
sys_id: <interaction_sys_id>
data:
state: "transferred_to_agent"
assignment_group: "<escalation_queue_sys_id>"
u_escalation_reason: "Customer requested manager involvement"
u_escalation_priority: "high"
work_notes: "AI Classification: Complaint with escalation request. Customer has followed up 3 times regarding laptop delivery delay. Sentiment: Negative/Frustrated. Routing to escalation queue."
Step 9: Track Classification Accuracy
Monitor and validate classification decisions over time.
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: interaction
query: u_conversation_typeISNOTEMPTY^sys_created_on>javascript:gs.daysAgo(30)
fields: u_conversation_type,u_classification_confidence,state,u_agent_override_type
limit: 500
Calculate accuracy metrics:
=== CLASSIFICATION ACCURACY (Last 30 Days) ===
| Type | Classified | Agent Override | Accuracy |
|-----------------|-----------|---------------|----------|
| Inquiry | 245 | 12 | 95.1% |
| Request | 189 | 8 | 95.8% |
| Complaint | 67 | 5 | 92.5% |
| Troubleshooting | 156 | 11 | 92.9% |
| Escalation | 34 | 3 | 91.2% |
| Feedback | 28 | 4 | 85.7% |
| Follow-up | 42 | 6 | 85.7% |
Overall Accuracy: 93.4%
Most Common Misclassification: Feedback classified as Inquiry
Step 10: Refine Classification Rules
Use override data to improve classification accuracy.
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: interaction
query: u_agent_override_typeISNOTEMPTY^u_conversation_type!=u_agent_override_type
fields: u_conversation_type,u_agent_override_type,short_description
limit: 50
Analyze misclassifications to identify patterns and update routing rules.
Tool Usage
| Tool | Purpose | When to Use |
|---|---|---|
| SN-Query-Table | Fetch conversations, messages, topics, metrics | Primary data retrieval |
| SN-Get-Record | Retrieve specific interaction details | Single conversation analysis |
| SN-Create-Record | Create downstream records (cases, incidents) | Acting on classification |
| SN-Update-Record | Enrich interaction with classification metadata | Recording classification results |
| SN-Natural-Language-Search | Find matching topics or similar conversations | Topic routing and pattern matching |
Best Practices
- Classify on first message -- do not wait for multiple exchanges to make an initial classification
- Support reclassification -- conversations can shift type mid-stream; update classification dynamically
- Use confidence thresholds -- below 70% confidence, route to human agent for classification
- Combine intent and sentiment -- a request with negative sentiment may actually be a complaint
- Handle multi-intent gracefully -- address the most urgent intent first, then secondary intents
- Preserve conversation context -- pass full classification metadata to receiving agent or workflow
- Track agent overrides -- use override data as training signal for improving classification rules
- Consider channel context -- phone calls have different patterns than chat or email
- Detect language and tone shifts -- escalation often manifests as a shift from neutral to negative
- Respect privacy -- do not log or classify sensitive personal information in metadata fields
Troubleshooting
| Issue | Cause | Resolution |
|---|---|---|
| Messages not retrieved | Wrong conversation table or ID format | Check sys_cs_conversation vs interaction table |
| Classification always "Inquiry" | Default fallback too aggressive | Lower inquiry threshold, add more signal patterns |
| Escalation not detected | Urgency language not in signal list | Add domain-specific urgency phrases to detection rules |
| Multi-intent not handled | Only first intent extracted | Implement per-message analysis with intent accumulation |
| Routing to wrong queue | Topic mapping outdated | Update sys_cb_topic routing configuration |
| Low confidence scores | Ambiguous or very short messages | Request clarification from user before classifying |
Examples
Example 1: Virtual Agent Inquiry Classification
Input: User message: "What are the company holidays for 2026?"
Classification: Inquiry (95% confidence). Route to Knowledge search topic. Suggested KB article: "2026 Company Holiday Calendar."
Example 2: Complaint with Escalation Detection
Input: User message: "I submitted a request two weeks ago and nothing has happened. This is completely unacceptable. I need to talk to someone who can actually help."
Classification: Complaint (88%) + Escalation (80%). Route to live agent in escalation queue. Flag as high priority. Auto-search for existing open requests by this user.
Example 3: Multi-Intent Chat Session
Input: User sends 3 messages: password reset request, question about VPN policy, and feedback about the portal design.
Classification: Multi-intent detected. Primary: Request (password reset, actionable). Secondary: Inquiry (VPN policy). Tertiary: Feedback (portal). Route password reset to IT topic, queue VPN question for knowledge search, log feedback for UX team review.
Related Skills
csm/sentiment-analysis- Deep sentiment analysis for conversationscsm/chat-recommendation- Suggested responses for agentshrsd/chat-reply-recommendation- HR-specific chat response suggestionsgenai/playbook-recommendations- Match conversation to handling playbooksitsm/incident-triage- Incident classification and routing