> ## Documentation Index
> Fetch the complete documentation index at: https://help.treble.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Referência do webhook de atribuição

> Este endpoint deve ser implementado no SEU servidor (por exemplo: https://seudominio.com/webhooks/on-agent-assignation). O Treble o chamará quando uma conversa chegar a um bloco de **Métodos de transferência** configurado com o destino **API**, para que o seu sistema decida qual agente deve receber o chat.

A URL é configurada no próprio bloco, dentro do editor de conversas. Se você ativar a autenticação por Token / API Key, o Treble incluirá o seu token no header `Authorization` com o formato `Bearer SEU_TOKEN`.

Você deve responder em menos de 10 segundos. Se o seu servidor não responder a tempo, devolver um código diferente de 200, ou devolver um agente que não pode receber a conversa, o Treble aplicará o método de reserva configurado na plataforma principal.



## OpenAPI

````yaml open-api-files/treble-api-pt.json POST /webhooks/on-agent-assignation
openapi: 3.0.1
info:
  title: API do Treble Poll
  description: Documentação para o endpoint de implantação de polls no Treble
  version: 1.0.0
servers:
  - url: https://main.treble.ai
    description: Servidor principal do Treble
  - url: https://seudominio.com
    description: >-
      Servidor de exemplo para implementar os webhooks. Isso representa SEU
      servidor onde você deve implementar os endpoints que o Treble chamará.
security: []
tags:
  - name: Webhooks
    description: >-
      Endpoints que o Treble chamará no seu servidor. Estes não são endpoints
      reais que você possa chamar, mas uma representação dos webhooks que o
      Treble invocará no seu sistema.
paths:
  /webhooks/on-agent-assignation:
    post:
      tags:
        - Webhooks
      summary: Webhook - Decidir qual agente recebe a conversa
      description: >-
        Este endpoint deve ser implementado no SEU servidor (por exemplo:
        https://seudominio.com/webhooks/on-agent-assignation). O Treble o
        chamará quando uma conversa chegar a um bloco de **Métodos de
        transferência** configurado com o destino **API**, para que o seu
        sistema decida qual agente deve receber o chat.


        A URL é configurada no próprio bloco, dentro do editor de conversas. Se
        você ativar a autenticação por Token / API Key, o Treble incluirá o seu
        token no header `Authorization` com o formato `Bearer SEU_TOKEN`.


        Você deve responder em menos de 10 segundos. Se o seu servidor não
        responder a tempo, devolver um código diferente de 200, ou devolver um
        agente que não pode receber a conversa, o Treble aplicará o método de
        reserva configurado na plataforma principal.
      parameters:
        - name: Authorization
          in: header
          required: false
          description: >-
            Apenas se você configurou autenticação por Token / API Key no bloco.
            O Treble envia o token com o formato `Bearer SEU_TOKEN`.
          schema:
            type: string
          example: Bearer SEU_TOKEN
      requestBody:
        description: Contexto do contato e da conversa que o Treble envia ao seu endpoint
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentAssignationRequest'
            example:
              company_id: 1234
              survey_user_id: 567890
              contact:
                treble_id: '5215512345678'
                name: Andrea Soto
                country_code: '52'
                cellphone: '5512345678'
                business_scope_id: '1029384756'
                username: null
              crm_type: salesforce
              crm_objects:
                - entity: Contact
                  id: 0035f00000ABCDEqAO
                - entity: Account
                  id: 0015f00000FGHIJqAO
              channel:
                phone_number_id: '1234567890'
              metadata:
                poll_id: 4321
                node_id: a1b2c3
                tag: Comercial
                language: es
      responses:
        '200':
          description: >-
            Agente ao qual o Treble deve atribuir a conversa. Devolva
            `agent_email` (recomendado) ou `agent_id`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentAssignationResponse'
              example:
                agent_email: andrea.soto@suaempresa.com
      servers:
        - url: https://seudominio.com
          description: Seu servidor onde você deve implementar este webhook
components:
  schemas:
    AgentAssignationRequest:
      type: object
      description: >-
        Corpo que o Treble envia ao seu endpoint para que você decida qual
        agente recebe a conversa.
      properties:
        company_id:
          type: integer
          description: Identificador da sua empresa no Treble.
          example: 1234
        survey_user_id:
          type: integer
          description: Identificador da sessão do contato na conversa.
          example: 567890
        contact:
          $ref: '#/components/schemas/AgentAssignationContact'
        crm_type:
          type: string
          nullable: true
          description: >-
            CRM com o qual a sua conta está integrada, por exemplo `salesforce`
            ou `hubspot`. É `null` se a conta não tiver integração de CRM.
          example: salesforce
        crm_objects:
          type: array
          description: >-
            Registros do CRM associados ao contato. Um array vazio significa que
            o contato ainda não está associado a nenhum registro.
          items:
            $ref: '#/components/schemas/AgentAssignationCrmObject'
        channel:
          $ref: '#/components/schemas/AgentAssignationChannel'
        metadata:
          $ref: '#/components/schemas/AgentAssignationMetadata'
    AgentAssignationResponse:
      type: object
      description: >-
        Resposta que o seu servidor deve devolver indicando o agente que
        receberá a conversa. Use `agent_email` ou `agent_id`.
      properties:
        agent_email:
          type: string
          description: >-
            Email do agente tal como está registrado no Treble. É a opção
            recomendada porque não depende dos identificadores internos do
            Treble.
          example: andrea.soto@suaempresa.com
        agent_id:
          type: integer
          description: Identificador do agente no Treble.
          example: 4567
    AgentAssignationContact:
      type: object
      description: Informações do contato que está na conversa.
      properties:
        treble_id:
          type: string
          description: Identificador do contato no Treble.
          example: '5215512345678'
        name:
          type: string
          nullable: true
          description: Nome do contato.
          example: Andrea Soto
        country_code:
          type: string
          nullable: true
          description: >-
            Código do país. Pode ser `null` em contatos que só existem como
            usuário da Meta.
          example: '52'
        cellphone:
          type: string
          nullable: true
          description: >-
            Número de celular sem o código do país. Pode ser `null` em contatos
            que só existem como usuário da Meta.
          example: '5512345678'
        business_scope_id:
          type: string
          nullable: true
          description: Identificador do contato dentro do escopo do seu negócio na Meta.
          example: '1029384756'
        username:
          type: string
          nullable: true
          description: Usuário da Meta do contato, quando aplicável.
          example: null
    AgentAssignationCrmObject:
      type: object
      description: Registro do CRM associado ao contato.
      properties:
        entity:
          type: string
          description: Tipo de objeto no CRM, por exemplo `Contact`, `Account` ou `Lead`.
          example: Contact
        id:
          type: string
          description: Identificador do registro no seu CRM.
          example: 0035f00000ABCDEqAO
    AgentAssignationChannel:
      type: object
      description: Canal pelo qual a conversa entrou.
      properties:
        phone_number_id:
          type: string
          description: Identificador da linha de WhatsApp que recebeu a conversa.
          example: '1234567890'
    AgentAssignationMetadata:
      type: object
      description: Contexto do fluxo e do bloco que originou a chamada.
      properties:
        poll_id:
          type: integer
          description: Identificador da conversa (fluxo) do Treble.
          example: 4321
        node_id:
          type: string
          description: >-
            Identificador do bloco de Métodos de transferência que originou a
            chamada.
          example: a1b2c3
        tag:
          type: string
          nullable: true
          description: Equipe (tag) selecionada no bloco.
          example: Comercial
        language:
          type: string
          nullable: true
          description: Idioma da conversa.
          example: es

````