Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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

Dialog 2: Password Reset

Dialog 3: Check Ticket Status

Dialog 4: Critical System Issue

Keywords Used

KeywordPurpose
ADD TOOLRegister ticket management tools
USE KBLoad helpdesk knowledge base for troubleshooting
SET CONTEXTDefine IT support assistant behavior
ADD SUGGESTIONCreate common issue shortcuts
BEGIN TALKWelcome message with options
BEGIN SYSTEM PROMPTPriority 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

PriorityResponse TimeResolution TimeExamples
Critical15 minutes4 hoursSystem outage, security breach, multiple users down
High2 hours8 hoursSingle user unable to work, deadline impact
Medium8 hours24 hoursIssue with workaround available
Low24 hours72 hoursFeature requests, minor inconveniences