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

# Cuerpo de la solicitud Webhook de timeout (flujo alterno)

> Este endpoint debe ser implementado en TU servidor (por ejemplo: https://tudominio.com/webhooks/on-timeout). Treble llamará a este webhook cuando ocurra un timeout en la conversación (el usuario no responde dentro del tiempo establecido). Debes configurar la URL de este webhook en el panel de administración de Treble.

También puedes configurar el webhook de respuesta para el camino que salga de un nodo en el caso de timeout, tambien conocido como flujo alterno.

<img src="https://mintcdn.com/trebleai/og8nLWcDGdX1vO72/images/timeout-api-1.png?fit=max&auto=format&n=og8nLWcDGdX1vO72&q=85&s=8a81002020572ba265f9449e40d92576" alt="Configurar webhook de nodo de timeout" width="2338" height="1348" data-path="images/timeout-api-1.png" />

Si lo haces, el cuerpo de la solicitud HTTP que se envía al endpoint configurado en Treble agregará el siguiente campo en el cuerpo de la solicitud:

```json theme={null}
{
    "timeout_at": "2021-10-07 08:53:22.572123"
}
```

La respuesta también puede tener nuevas variables para la sesión que se pueden actualizar o crear para su uso posterior en la sesión. Es decir puedes, añadirlas en la respuesta del webhook como parte de las `user_session_keys`.


## OpenAPI

````yaml open-api-files/treble-api-es.json POST /webhooks/on-timeout
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-timeout:
    post:
      tags:
        - Webhooks
      summary: Webhook - Cuando ocurre un timeout en la conversación
      description: >-
        Este endpoint debe ser implementado en TU servidor (por ejemplo:
        https://tudominio.com/webhooks/on-timeout). Treble llamará a este
        webhook cuando ocurra un timeout en la conversación (el usuario no
        responde dentro del tiempo establecido). Debes configurar la URL de este
        webhook en el panel de administración de Treble.
      requestBody:
        description: Información del evento de timeout
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TimeoutEvent'
            example:
              country_code: '+57'
              cellphone: '3161234567'
              session_id: abcsderfwer3252432423-1324325235
              conversation_id: 1234
              question:
                type: open
                text: Hello world
              timeout_at: '2021-10-07 08:53:22.572123'
              user_session_keys:
                - key: age
                  value: '18'
                  type: null
                - key: user_id
                  value: '12345'
                  type: null
      responses:
        '200':
          description: Respuesta para actualizar o agregar información a la sesión
          content:
            application/json:
              schema:
                type: object
                description: >-
                  Objeto JSON con la nueva información que será reemplazada o
                  agregada a la sesión para uso futuro. El servicio debe
                  responder en menos de 10 segundos.
      servers:
        - url: https://tudominio.com
          description: Tu servidor donde debes implementar este webhook
components:
  schemas:
    TimeoutEvent:
      type: object
      required:
        - country_code
        - cellphone
        - session_id
        - conversation_id
        - question
        - timeout_at
        - user_session_keys
      description: >-
        Evento que se dispara cuando ocurre un timeout en la conversación (el
        usuario no responde dentro del tiempo establecido)
      properties:
        country_code:
          type: string
          description: Código de país del usuario
        cellphone:
          type: string
          description: Número de teléfono del usuario sin el código de país
        session_id:
          type: string
          description: ID de la sesión del usuario
        conversation_id:
          type: integer
          description: ID de la conversación
        question:
          $ref: '#/components/schemas/Question'
          description: Pregunta que no recibió respuesta a tiempo
        timeout_at:
          type: string
          format: date-time
          description: Fecha y hora en que ocurrió el timeout
        user_session_keys:
          type: array
          description: >-
            Claves de sesión del usuario recopiladas durante la conversación o
            proporcionadas durante el despliegue
          items:
            $ref: '#/components/schemas/ExtendedUserSessionKey'
    Question:
      type: object
      required:
        - type
        - text
      properties:
        type:
          type: string
          description: Tipo de pregunta
          example: open
        text:
          type: string
          description: Texto de la pregunta
    ExtendedUserSessionKey:
      type: object
      required:
        - key
        - value
      properties:
        key:
          type: string
          description: Nombre de la variable
        value:
          type: string
          description: Valor de la variable
        type:
          type: string
          nullable: true
          description: >-
            Tipo de la variable. Puede ser null o un tipo específico como
            'location'.

````