All docs

Human support

Voice: While talking with an agent, if the user wants someone online right now, they tap Human support; support colleagues already assigned to that agent claim the ticket on the wo

Source docs/en/site/mech-human-cs.md

Voice: While talking with an agent, if the user wants someone online right now, they tap Human support; support colleagues already assigned to that agent claim the ticket on the workbench and continue in the same conversation (embed) or via contacts (main site). This is a live channel, with queue position and wait estimate.

When they do not need a person immediately, guide them to tickets (async comments); see 工单.md. In user copy, do not call live help a “ticket”.

Implementation mapping: user_agent_cs_config, user_agent_cs_staff, cs_tickets (live conversation), cs_ticket_messages; routes /api/v1/user-agents/{id}/human-support, /api/v1/workspaces/{id}/cs-tickets, /api/v1/embed/cs-tickets; Web page /customer-service (CustomerServiceWorkbenchPage · Live support section).


1. Split from other capabilities

CapabilityWho startsWho handlesUI
Help assistant / work assistantUserModel auto-replyMessages, action assistant
Live human supportUser (wants someone now)Local seats or an authorized support groupHuman support; workbench Live support
Tickets (async)User (not urgent)The same support people laterSubmit a ticket; workbench Tickets; see 工单.md
Contacts (IM)AnyonePeople chatting with peopleMessages sidebar IM; after a main-site live claim, embedded contacts
Service noticesSystemRead-only reachMessages pinned “Service notices”

Human support does not treat workspace admins as support by default; an admin without a seat may open the workbench from the feature menu for config and oversight; day-to-day claims are done by seat colleagues or an authorized support group.


2. Configure per agent

Each agent that can serve others (including the workspace help assistant placeholder __builtin_assistant__) can be configured separately:

SettingNote
Turn on human supportWhen off, the user’s conversation does not show “Human support” or “Submit a ticket”
Support seatsLocal members, multi-select. You may leave local people unchecked and authorize a support group instead (see §9)
Seat presenceEach seat switches themselves: on duty / on break / off duty. Only on duty counts as live human available; when nobody is on duty the customer side does not offer live human support and is guided to Submit a ticket. Each time they enter “on duty”, a start time is recorded; leaving “on duty” (break or off) records an end. Tapping on duty under the group workbench writes into each customer workspace in that group’s current service scope
Waiting-ticket soundSeveral built-in options; configured per agent. Support colleagues hear it when the console polls a live new waiting ticket for that agent (ticket notices may be quieter than live; v1 may reuse seat notice and mark it as a ticket)

Who can configure

AgentConfigured by
User-created agentThat agent’s creator, or a workspace admin
Help assistantWorkspace admins only (Workspace collaboration → Support queue → Local support)

Config entry:

  • My agents → Manage → Human support (self-created agents)
  • Workspace collaboration → Support queue (help assistant, admins; in-page Local support section)

3. User-side flow (live)

  1. The user is talking with an agent that has human support on (Messages, action assistant, or website embed).
  2. The shortcut bar shows Human support and Submit a ticket. If no seat is on duty, there is no live entry, and they are asked to Submit a ticket instead.
  3. Tap “Human support” (someone must be on duty): the model may first draft the request from the last few rounds; the user confirms then submits.
  4. The system creates a live support conversation (bound to user_agent_id), enters a queue (people ahead and estimated wait), and notifies seats.
  5. After a seat claims, they talk in the same conversation; the user can end this support (in queue = cancel queue; talking = end the conversation).
  6. After it ends, the record stays visible in the current agent conversation; the user may give a five-star rating (≤3 stars may include a reason, for seat performance and knowledge improvement).
  7. If they do not want to wait, “Don’t wait, submit a ticket instead” turns it into an async ticket.

Under the same visitor/user, same workspace, same agent, if a live conversation is already in progress, submitting again says there is already an in-progress request.

Main-site users can also see their live requests in Workspace collaboration → Support queue; they can withdraw while waiting.


4. Support-side flow (workbench · live)

Path: top-bar Support (shown only for support seats or support-group members) or feature menu → Support workbench.

Same workbench page, one top-bar row: left title “Support workbench”; right: scope combobox (group members only), presence, refresh.

Left nav (same family as the Skills center):

SectionContent
Live supportWaiting / assigned to me / in progress / closed
TicketsAsync ticket queue (see 工单.md)
Duty periodsOn-duty start/end records (admins see everyone in this workspace; group workbench sees the person’s records in the service scope)

The right is the current section’s detail and conversation. After a main-site claim, contacts in the page; embed inbound uses the live message thread. Actions: Claim, Mark closed.

If you belong to a support group, the right combobox can switch between Local support and Group workbench (default local). The group workbench lists only that group’s selected and authorized customer queues, not every workspace on the site. When claiming another customer’s ticket on the group workbench, do not switch the top-bar current workspace.


5. Top-bar entry rules

User identityIndependent top-bar Support buttonFeature menu Support workbench
Support seatShown; badge when there are waiting ticketsNot shown twice
Support-group memberShown (even if the current workspace is not a local seat)Not shown twice
Workspace admin (not a seat, not a group member)Not shownShown
Ordinary memberNot shownNot shown

Seat check: GET /api/v1/me/cs-staff-status{ is_staff, is_group_member, presence, … }. Presence switch: PUT /api/v1/me/cs-staff-presence{ presence, scope: current|group } (default current; live behavior unchanged).


6. Live conversation states

StateUser seesSupport sees
waiting (in queue)Queue position; can cancel / switch to a ticketCan claim
assigned (talking)Can see the handler; can endAssigned support can reply and close
resolved (ended)Record stays; can rateRead-only
closed (left the queue)Read-only

ended_by: staff | customer | cancel.


7. API summary (implementation)

MethodPathNote
GET/PUT/api/v1/user-agents/{id}/human-supportConfig
GET/api/v1/user-agents/{id}/human-support/status{ enabled, live_available, tickets_available }
GET/api/v1/me/cs-staff-statusLocal seat / group member + presence
PUT/api/v1/me/cs-staff-presence`{ presence, scope: current\group }`
GET/api/v1/me/cs-group/deskGroup workbench live queue (authorized customers in scope only)
GET/api/v1/me/cs-group/desk/casesGroup workbench ticket queue
GET/api/v1/me/cs-group/duty-sessionsGroup workbench duty periods
GET/POST/PATCH/api/v1/workspaces/{id}/cs-groupThis team’s support group (create / rename)
PUT/api/v1/workspaces/{id}/cs-group/membersThis team’s members
PUT/api/v1/workspaces/{id}/cs-group/scopeService scope
POST/api/v1/workspaces/{id}/cs-group/grantsThis team applies to serve a customer
GET/POST/api/v1/workspaces/{id}/cs-group-grantsCustomer workspace lists grants / invites by group ID
POST…/cs-group-grants/{grantId}/approve etc.Approve, reject, revoke
GET/api/v1/cs-groups/{groupId}/previewPreview by group ID (before invite)
GET/api/v1/me/cs-staff-duty-sessionsOwn on-duty period list
GET/api/v1/workspaces/{id}/cs-staff-duty-sessionsAdmin: all support duty periods (optional user_id filter)
POST/GET/api/v1/workspaces/{id}/cs-ticketsSubmit / live queue (includes queue-position fields; cannot submit live when nobody is on duty)
POST.../cs-tickets/{id}/claimClaim
POST.../cs-tickets/{id}/resolveSeat close
POST.../cs-tickets/{id}/cancelCancel queue (waiting)
POST.../cs-tickets/{id}/endCustomer end (waiting/assigned)
POST.../cs-tickets/{id}/ratingRate after end
POST/embed/cs-tickets etc.Embed create, active, for-session, messages, cancel/end/rating, convert-to-case

Notices: new live conversation → seats; claim/close → requesting user (embed may skip in-site notices).


8. Tables (illustrative)

  • user_agent_cs_config / user_agent_cs_staff
  • cs_groups / cs_group_members / cs_group_workspace_grants / cs_group_workspace_scope
  • cs_tickets: live conversation; includes queue-position computed fields (response), ended_by, rating columns
  • cs_ticket_messages: embed live messages

Help assistant ID: __builtin_assistant__.


9. Support groups (cross-customer workbench)

When one group of support people serves several customer workspaces, use a support group, instead of adding up every workspace where someone was once a seat.

Cross-workspace claim requires all of:

  1. You are a member of a support group (this team’s workspace admin adds people; members must belong to this team)
  2. The group includes that customer workspace in service scope
  3. That customer workspace’s admin has authorized this group

Missing any one: you cannot see that workspace’s queue or claim. Authorization only grants support rights; members need not become customer-workspace members, and they do not see customer knowledge or collaboration content.

Config:

  • This team: Workspace collaboration → Support queue → Our groups (create, members, apply to serve, put in scope)
  • Customer: Workspace collaboration → Support queue → Authorize outside groups (approve applications, invite by group ID, revoke)

The workbench still defaults to Local support; group members can switch to Group workbench on the top-bar right. Claiming another customer’s ticket does not switch the top-bar current workspace.


10. Related documents