> ## 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.

# Referencia del webhook de asignación

> Este endpoint debe ser implementado en TU servidor (por ejemplo: https://tudominio.com/webhooks/on-agent-assignation). Treble lo llamará cuando una conversación llegue a un bloque de **Métodos de transferencia** configurado con el destino **API**, para que tu sistema decida qué agente debe recibir el chat.

La URL se configura en el propio bloque, dentro del editor de conversaciones. Si activas la autenticación por Token / API Key, Treble incluirá tu token en el header `Authorization` con el formato `Bearer TU_TOKEN`.

Debes responder en menos de 10 segundos. Si tu servidor no responde a tiempo, devuelve un código distinto de 200, o devuelve un agente que no puede recibir la conversación, Treble aplicará el método de respaldo configurado en la plataforma principal.



## OpenAPI

````yaml open-api-files/treble-api-es.json POST /webhooks/on-agent-assignation
openapi: 3.0.1
info:
  title: API de Treble Poll
  description: Documentación para el endpoint de despliegue de polls en Treble
  version: 1.0.0
servers:
  - url: https://main.treble.ai
    description: Servidor principal de Treble
  - url: https://tudominio.com
    description: >-
      Servidor de ejemplo para implementar los webhooks. Esto representa TU
      servidor donde debes implementar los endpoints que Treble llamará.
security: []
tags:
  - name: Webhooks
    description: >-
      Endpoints que Treble llamará en tu servidor. Estos no son endpoints reales
      que puedas llamar, sino una representación de los webhooks que Treble
      invocará en tu sistema.
paths:
  /webhooks/on-agent-assignation:
    post:
      tags:
        - Webhooks
      summary: Webhook - Decidir qué agente recibe la conversación
      description: >-
        Este endpoint debe ser implementado en TU servidor (por ejemplo:
        https://tudominio.com/webhooks/on-agent-assignation). Treble lo llamará
        cuando una conversación llegue a un bloque de **Métodos de
        transferencia** configurado con el destino **API**, para que tu sistema
        decida qué agente debe recibir el chat.


        La URL se configura en el propio bloque, dentro del editor de
        conversaciones. Si activas la autenticación por Token / API Key, Treble
        incluirá tu token en el header `Authorization` con el formato `Bearer
        TU_TOKEN`.


        Debes responder en menos de 10 segundos. Si tu servidor no responde a
        tiempo, devuelve un código distinto de 200, o devuelve un agente que no
        puede recibir la conversación, Treble aplicará el método de respaldo
        configurado en la plataforma principal.
      parameters:
        - name: Authorization
          in: header
          required: false
          description: >-
            Solo si configuraste autenticación por Token / API Key en el bloque.
            Treble envía el token con el formato `Bearer TU_TOKEN`.
          schema:
            type: string
          example: Bearer TU_TOKEN
      requestBody:
        description: >-
          Contexto del contacto y de la conversación que Treble envía a tu
          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 al que Treble debe asignar la conversación. Devuelve
            `agent_email` (recomendado) o `agent_id`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentAssignationResponse'
              example:
                agent_email: andrea.soto@tuempresa.com
      servers:
        - url: https://tudominio.com
          description: Tu servidor donde debes implementar este webhook
components:
  schemas:
    AgentAssignationRequest:
      type: object
      description: >-
        Cuerpo que Treble envía a tu endpoint para que decidas qué agente recibe
        la conversación.
      properties:
        company_id:
          type: integer
          description: Identificador de tu empresa en Treble.
          example: 1234
        survey_user_id:
          type: integer
          description: Identificador de la sesión del contacto en la conversación.
          example: 567890
        contact:
          $ref: '#/components/schemas/AgentAssignationContact'
        crm_type:
          type: string
          nullable: true
          description: >-
            CRM con el que tu cuenta está integrada, por ejemplo `salesforce` o
            `hubspot`. Es `null` si la cuenta no tiene integración de CRM.
          example: salesforce
        crm_objects:
          type: array
          description: >-
            Registros del CRM asociados al contacto. Un arreglo vacío significa
            que el contacto aún no está asociado a ningún registro.
          items:
            $ref: '#/components/schemas/AgentAssignationCrmObject'
        channel:
          $ref: '#/components/schemas/AgentAssignationChannel'
        metadata:
          $ref: '#/components/schemas/AgentAssignationMetadata'
    AgentAssignationResponse:
      type: object
      description: >-
        Respuesta que tu servidor debe devolver indicando el agente que recibirá
        la conversación. Usa `agent_email` o `agent_id`.
      properties:
        agent_email:
          type: string
          description: >-
            Email del agente, tal como está registrado en Treble. Es la opción
            recomendada porque no depende de los identificadores internos de
            Treble.
          example: andrea.soto@tuempresa.com
        agent_id:
          type: integer
          description: Identificador del agente en Treble.
          example: 4567
    AgentAssignationContact:
      type: object
      description: Información del contacto que está en la conversación.
      properties:
        treble_id:
          type: string
          description: Identificador del contacto en Treble.
          example: '5215512345678'
        name:
          type: string
          nullable: true
          description: Nombre del contacto.
          example: Andrea Soto
        country_code:
          type: string
          nullable: true
          description: >-
            Indicativo del país. Puede ser `null` en contactos que solo existen
            como usuario de Meta.
          example: '52'
        cellphone:
          type: string
          nullable: true
          description: >-
            Número de celular sin indicativo. Puede ser `null` en contactos que
            solo existen como usuario de Meta.
          example: '5512345678'
        business_scope_id:
          type: string
          nullable: true
          description: Identificador del contacto dentro del alcance de tu negocio en Meta.
          example: '1029384756'
        username:
          type: string
          nullable: true
          description: Usuario de Meta del contacto, cuando aplica.
          example: null
    AgentAssignationCrmObject:
      type: object
      description: Registro del CRM asociado al contacto.
      properties:
        entity:
          type: string
          description: Tipo de objeto en el CRM, por ejemplo `Contact`, `Account` o `Lead`.
          example: Contact
        id:
          type: string
          description: Identificador del registro en tu CRM.
          example: 0035f00000ABCDEqAO
    AgentAssignationChannel:
      type: object
      description: Canal por el que entró la conversación.
      properties:
        phone_number_id:
          type: string
          description: Identificador de la línea de WhatsApp que recibió la conversación.
          example: '1234567890'
    AgentAssignationMetadata:
      type: object
      description: Contexto del flujo y del bloque que originó la llamada.
      properties:
        poll_id:
          type: integer
          description: Identificador de la conversación (flujo) de Treble.
          example: 4321
        node_id:
          type: string
          description: >-
            Identificador del bloque de Métodos de transferencia que originó la
            llamada.
          example: a1b2c3
        tag:
          type: string
          nullable: true
          description: Equipo (tag) seleccionado en el bloque.
          example: Comercial
        language:
          type: string
          nullable: true
          description: Idioma de la conversación.
          example: es

````