Skip to content

Proposal: Unify Tickets into Omnichannel Conversations (Conversational Support Architecture) #33

Description

@JOY

Summary & Proposal

Hi @bbbbbbbbbbbbba! Currently, AgentDesk maintains two parallel entities for handling customer inquiries:

  1. Conversations ( _conversation, _message): Real-time chat, AI Agent loop, web/WeCom/Telegram/Zalo/Email messaging.
  2. Tickets ( _ticket, _ticket_progress): Static issue records with title, description, manual status (pending, in_progress, done), and progress logs.

We propose unifying Tickets into Conversations to transition AgentDesk into a modern AI-First Omnichannel Customer Support Platform (similar to modern platforms like Intercom, Crisp, Front, and Zendesk Messaging).


Key Pain Points of the Split Architecture

  1. Fragmented Agent Experience:

    • Customer support representatives in the Workbench have to navigate between /workbench (Conversations) and /workbench/tickets (Tickets).
    • Chatting with a customer and logging internal resolution progress happens in separate screens.
  2. Context Disconnect:

    • When a ticket is created from a conversation, the ongoing chat context is frozen in time into a static ticket description. Follow-up customer replies in the chat do not naturally update the ticket state unless manually synchronized.
  3. Duplicated Metadata & Operational Overhead:

    • Assignee, Team, Priority, Tags, Customer, and Status exist on both _conversation and _ticket.
    • Routing and assignment workflows have to be duplicated or synchronized across both models.

The Modern Omnichannel Solution

Instead of treating Tickets and Conversations as separate destinations, a Conversation IS the Ticket:

  1. Enriched Conversation Model:

    • Add ticket-grade capabilities directly to Conversation:
      • Issue Lifecycle: open (unassigned/pending) $\rightarrow$ �ctive (in-progress/agent serving) $\rightarrow$ waiting (waiting for customer) $\rightarrow$
        esolved / closed.
      • Priority & SLA Tracking: Urgency levels (low,
        ormal, high, urgent) and SLA timers on conversations.
      • Internal Notes & Progress: Special internal messages (sender_type = note) visible only to agents, directly in the chat timeline.
      • Unified Tagging & Custom Fields: Assign tags, categories, and custom attributes to conversations.
  2. Unified Workbench UX:

    • Single unified inbox for all channels (Web, Email, Telegram, Zalo, WeCom).
    • Sidebar panels provide full customer 360°, CRM integration, and issue metadata alongside the real-time conversation timeline.
  3. Seamless AI $\rightarrow$ Human Workflow:

    • AI Agent handles inquiries directly in the conversation.
    • When complex troubleshooting or human escalation is needed, the AI Agent simply changes the conversation status, sets priority/tags, or routes to an agent team—without needing to create an external static ticket record.

Migration & Backward Compatibility Path

  • Phase 1: Add internal notes (enums.IMMessageTypeNote) and conversation priority/SLA fields.
  • Phase 2: Add conversation quick filters (My Inbox, Unassigned, Priority, Closed, SLA Breached) to the Workbench.
  • Phase 3: Provide a simple database migration to link existing _ticket records into historical conversations and deprecate standalone ticket tables.

We would love to hear the maintainers' and community's thoughts on this architectural direction!

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions