Pular para o conteúdo
Conversas

Passar a conversa para humano

v1.0.0
POSThttps://api.staging.growthaisystem.com/api/v1/conversations/{id}/handoff
  • ExigeAuthorization: Bearer gos_…— Chave de API (gos_…)· escoposconversations.write

O mesmo handoff da IA da plataforma: (1) PAUSA a IA nesta conversa — a da plataforma para de responder e ai.paused vira true, que é o sinal para o seu agente ficar quieto; (2) atribui a conversa a uma pessoa (quem já atende → dono do negócio aberto → dono do contato → dono da conta) e a avisa no sino, com o motivo e as últimas falas do contato; (3) etiqueta o contato com handoff-humano e handoff-<reasonType>.

Conversa já pausada por uma pessoa do time (ai.paused: true com pausedReason que não é de handoff, como humano_assumiu): a pausa fica como está, com a razão e o prazo da pessoa, e o POST …/resume seguinte responde 409 paused_by_human. A atribuição, o aviso, as etiquetas e a nota seguem como acima; o retry só é reconhecido pela Idempotency-Key.

assigneeUserId (id de GET /users) escolhe quem assume — membro ativo do workspace, senão 422 invalid_assignee e nada muda. note grava uma nota interna no contato, que aparece na linha do tempo e no chat da conversa (não vai ao contato).

A pausa do handoff só termina quando alguém do time clica Devolver ao agente na conversa (com a IA da plataforma ligada em modo de pausa por minutos, ela vence sozinha no prazo configurado; na conversa de um funcionário digital da Fábrica, nunca: lá o handoff segura até o Devolver — handoff_externo sem prazo, ou a pausa da pessoa sem prazo, se alguém do time já tinha respondido).

Idempotente: chamar de novo com a conversa já passada para humano (pausada por handoff) e o mesmo responsável não avisa de novo, não grava outra nota e responde notified: false. Mande Idempotency-Key: o retry com a mesma chave devolve a mesma noteId e idempotency_replay: true.

Parâmetros de caminho

Entram no próprio endereço, no lugar das chaves.

  • idstringobrigatório
    • tamanho 1–80

Corpo da requisição

application/jsonobrigatório

V1ConversationHandoffInputInput

  • reasonstringopcional
    • tamanho 1–500
  • reasonTypestringopcional
    • padrão "pedido_explicito"
    • um de"pedido_explicito""fora_de_escopo""cliente_irritado""negociacao""agenda"
  • assigneeUserIdstringopcional
    • tamanho 1–80
  • notestringopcional
    • tamanho 1–2000

Respostas

10 respostas documentadas — o código, o que ele significa nesta rota e a forma do corpo.

200Deu certoapplication/json

Conversa passada para humano: conversation.ai.paused: true, o responsável (assignedTo) e se ele foi avisado (notified).

V1ConversationHandoffResultado

    • idstring
    • channelstring
    • connectionIdstring | null
    • contactIdstring | null
      • idstring
      • namestring
      • phonestring | null
      • emailstring | null
    • contactDisplaystring | null
    • contactPhonestring | null
    • assignedUserIdstring | null
    • humanAssignedboolean
    • assignedAtstring | null
    • lastMessageAtstring | null
    • lastMessageDirectionstring | null
      • um de"inbound""outbound"
    • lastMessageActorstring | null
      • um de"user""contact""ia""automation""system""api""unknown"
    • archivedboolean
      • pausedboolean
      • pausedUntilstring | null
      • pausedReasonstring | null
      • appliesboolean
      • openboolean
      • expiresAtstring | null
    • createdAtstring
    • updatedAtstring
    • userIdstring
    • namestring | null
  • notifiedboolean
  • noteIdstring | null
  • idempotency_replaytruepode faltar
    • sempre true