IT Helpdesk Template
The IT Helpdesk template provides a complete IT support ticketing system that helps users report problems, track ticket status, and get help with common technical issues.
Topic: IT Support & Ticket Management
This template is perfect for:
- Internal IT support desks
- Technical support teams
- MSP (Managed Service Provider) helpdesks
- Customer technical support
- Self-service IT portals
The Code
ADD TOOL "create-ticket"
ADD TOOL "check-ticket-status"
ADD TOOL "my-tickets"
ADD TOOL "update-ticket"
ADD TOOL "close-ticket"
USE KB "helpdesk.gbkb"
SET CONTEXT "it helpdesk" AS "You are an IT helpdesk assistant. Help users create support tickets, check ticket status, and troubleshoot common issues. Gather necessary information before creating tickets: issue description, urgency level, and affected systems."
CLEAR SUGGESTIONS
ADD SUGGESTION "new" AS "Report a problem"
ADD SUGGESTION "status" AS "Check ticket status"
ADD SUGGESTION "password" AS "Reset my password"
ADD SUGGESTION "vpn" AS "VPN issues"
ADD SUGGESTION "email" AS "Email not working"
ADD SUGGESTION "mytickets" AS "View my tickets"
BEGIN TALK
**IT Helpdesk Support**
I can help you with:
• Create a new support ticket
• Check ticket status
• Password resets
• Network and VPN problems
• Email issues
• Hardware and software support
For urgent issues affecting multiple users, mention "urgent" or "critical".
What can I help you with?
END TALK
BEGIN SYSTEM PROMPT
You are an IT Helpdesk support assistant.
Priority levels:
- Critical: System down, security breach, multiple users affected
- High: Single user unable to work, deadline impact
- Medium: Issue with workaround available
- Low: Minor inconvenience, feature requests
Before creating a ticket, collect:
- Clear description of the issue
- When the issue started
- Error messages if any
- Steps already tried
Try to resolve simple issues using the knowledge base before creating tickets.
END SYSTEM PROMPT
Sample Dialogs
These conversations show how the IT Helpdesk template works in real-world scenarios.
Dialog 1: Creating a Support Ticket
🛠️
IT Helpdesk
online
Today
Dialog 2: Password Reset
🛠️
IT Helpdesk
online
Dialog 3: Check Ticket Status
🛠️
IT Helpdesk
online
Dialog 4: Critical System Issue
🛠️
IT Helpdesk
online
Keywords Used
| Keyword | Purpose |
|---|---|
ADD TOOL | Register ticket management tools |
USE KB | Load helpdesk knowledge base for troubleshooting |
SET CONTEXT | Define IT support assistant behavior |
ADD SUGGESTION | Create common issue shortcuts |
BEGIN TALK | Welcome message with options |
BEGIN SYSTEM PROMPT | Priority definitions and guidelines |
Template Structure
helpdesk.gbai/
├── helpdesk.gbdialog/
│ ├── start.bas # Main entry point
│ ├── create-ticket.bas # Ticket creation
│ ├── check-ticket-status.bas # Status lookup
│ ├── my-tickets.bas # User's tickets
│ ├── update-ticket.bas # Ticket updates
│ └── close-ticket.bas # Ticket resolution
├── helpdesk.gbdrive/
│ └── templates/ # Response templates
├── helpdesk.gbkb/
│ ├── common-issues.md # Troubleshooting guides
│ └── security-tips.md # Security best practices
└── helpdesk.gbot/
└── config.csv # Bot configuration
Create Ticket Tool: create-ticket.bas
PARAM description AS STRING LIKE "Computer won't start" DESCRIPTION "Issue description"
PARAM category AS STRING LIKE "hardware" DESCRIPTION "Category: hardware, software, network, email, access"
PARAM priority AS STRING LIKE "medium" DESCRIPTION "Priority: critical, high, medium, low" OPTIONAL
DESCRIPTION "Create a new IT support ticket"
' Get user information
user_email = FROM
user_name = USERNAME
' Auto-detect priority if not provided
IF NOT priority THEN
IF INSTR(LOWER(description), "urgent") > 0 OR INSTR(LOWER(description), "critical") > 0 THEN
priority = "critical"
ELSE IF INSTR(LOWER(description), "can't work") > 0 OR INSTR(LOWER(description), "blocked") > 0 THEN
priority = "high"
ELSE
priority = "medium"
END IF
END IF
' Generate ticket number
ticketNumber = "INC-" + FORMAT(NOW(), "YYYY") + "-" + FORMAT(RANDOM(1000, 9999))
' Set SLA based on priority
SELECT CASE priority
CASE "critical"
slaMinutes = 15
slaText = "15 minutes"
CASE "high"
slaMinutes = 120
slaText = "2 hours"
CASE "medium"
slaMinutes = 480
slaText = "8 hours"
CASE "low"
slaMinutes = 1440
slaText = "24 hours"
END SELECT
' Create ticket record
WITH ticket
id = ticketNumber
user_email = user_email
user_name = user_name
description = description
category = category
priority = priority
status = "open"
sla_due = DATEADD(NOW(), slaMinutes, "minutes")
created_at = NOW()
END WITH
SAVE "tickets.csv", ticket
' Send confirmation email
SEND MAIL user_email, "Ticket Created: " + ticketNumber,
"Your support ticket has been created.\n\n" +
"Ticket: " + ticketNumber + "\n" +
"Issue: " + description + "\n" +
"Priority: " + priority + "\n" +
"Response time: " + slaText
' Notify support team
IF priority = "critical" THEN
SEND MAIL "oncall@company.com", "🚨 CRITICAL: " + ticketNumber,
"Critical ticket requires immediate attention:\n" + description
END IF
TALK "✅ Ticket **" + ticketNumber + "** created!"
TALK "Priority: " + UPPER(priority)
TALK "Expected response: " + slaText
RETURN ticketNumber
My Tickets Tool: my-tickets.bas
PARAM status AS STRING LIKE "open" DESCRIPTION "Filter by status: open, closed, all" OPTIONAL
DESCRIPTION "View your support tickets"
user_email = FROM
IF NOT status OR status = "all" THEN
tickets = FIND "tickets.csv", "user_email = '" + user_email + "'"
ELSE
tickets = FIND "tickets.csv", "user_email = '" + user_email + "' AND status = '" + status + "'"
END IF
IF UBOUND(tickets) = 0 THEN
TALK "You have no " + IIF(status, status, "") + " tickets."
RETURN NULL
END IF
TALK "🎫 **Your Tickets:**"
TALK ""
FOR EACH ticket IN tickets
statusIcon = "🔵"
IF ticket.status = "open" THEN statusIcon = "🟡"
IF ticket.status = "in_progress" THEN statusIcon = "🔵"
IF ticket.status = "resolved" THEN statusIcon = "🟢"
IF ticket.status = "closed" THEN statusIcon = "⚪"
TALK "**" + ticket.id + "** " + statusIcon
TALK "📋 " + LEFT(ticket.description, 50) + "..."
TALK "📊 Status: " + ticket.status
TALK "📅 Created: " + FORMAT(ticket.created_at, "MMM DD, YYYY")
TALK ""
NEXT
RETURN tickets
Customization Ideas
Add Knowledge Base Self-Service
' Before creating a ticket, search KB for solutions
solutions = SEARCH KB description
IF UBOUND(solutions) > 0 THEN
TALK "I found some articles that might help:"
FOR EACH solution IN FIRST(solutions, 3)
TALK "• " + solution.title
NEXT
TALK ""
TALK "Did any of these solve your issue?"
HEAR resolved
IF LOWER(resolved) = "yes" THEN
TALK "Great! Let me know if you need anything else."
RETURN NULL
END IF
END IF
' Continue to ticket creation...
Add Asset Tracking
PARAM asset_tag AS STRING DESCRIPTION "Asset tag of affected equipment"
' Look up asset information
asset = FIND "assets.csv", "tag = '" + asset_tag + "'"
IF asset THEN
ticket.asset_tag = asset_tag
ticket.asset_type = asset.type
ticket.asset_model = asset.model
ticket.warranty_status = asset.warranty_expires > NOW()
IF asset.warranty_expires > NOW() THEN
TALK "ℹ️ This device is under warranty until " + FORMAT(asset.warranty_expires, "MMM DD, YYYY")
END IF
END IF
Add Escalation Rules
' Check if ticket needs escalation
IF ticket.priority = "critical" AND ticket.category = "security" THEN
' Escalate to security team
SEND MAIL "security@company.com", "🔴 Security Incident: " + ticketNumber, description
ticket.escalated_to = "security"
ticket.escalation_time = NOW()
END IF
IF ticket.priority = "critical" AND DATEDIFF(NOW(), ticket.created_at, "minutes") > 30 THEN
' Escalate if no response in 30 minutes
SEND MAIL "it-manager@company.com", "⚠️ SLA Breach Risk: " + ticketNumber,
"Critical ticket approaching SLA breach"
END IF
Add Satisfaction Survey
' When closing ticket
IF action = "close" THEN
ticket.status = "closed"
ticket.closed_at = NOW()
ticket.resolution = resolution
UPDATE "tickets.csv", ticket
TALK "Your ticket has been resolved!"
TALK ""
TALK "How would you rate your support experience?"
ADD SUGGESTION "5" AS "⭐⭐⭐⭐⭐ Excellent"
ADD SUGGESTION "4" AS "⭐⭐⭐⭐ Good"
ADD SUGGESTION "3" AS "⭐⭐⭐ Average"
ADD SUGGESTION "2" AS "⭐⭐ Poor"
ADD SUGGESTION "1" AS "⭐ Very Poor"
HEAR rating
WITH feedback
ticket_id = ticketNumber
rating = rating
timestamp = NOW()
END WITH
SAVE "satisfaction.csv", feedback
TALK "Thank you for your feedback!"
END IF
Priority Matrix
| Priority | Response Time | Resolution Time | Examples |
|---|---|---|---|
| Critical | 15 minutes | 4 hours | System outage, security breach, multiple users down |
| High | 2 hours | 8 hours | Single user unable to work, deadline impact |
| Medium | 8 hours | 24 hours | Issue with workaround available |
| Low | 24 hours | 72 hours | Feature requests, minor inconveniences |
Related Templates
- hr/employees.bas - Employee management integration
- announcements.bas - IT announcements
- backup.bas - Backup and recovery