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

# Enviar mensagem ao usuário final

> Envia mensagens de texto e multimídia ao usuário final a partir do provedor externo

<Warning>
  O cabeçalho `X-Jelou-Signature` é obrigatório.
</Warning>

## Descrição

Envia uma mensagem ao usuário final através do Jelou. O cliente executa este recurso para notificar o Jelou que deve entregar uma mensagem ao usuário final ativo na conversa.

O Jelou validará a assinatura da requisição, processará o conteúdo e o entregará ao usuário através do canal configurado (por exemplo, WhatsApp).

## Endpoint

```
POST https://chatbot.jelou.ai/v1/external-support/webhook
```

## Parâmetros do corpo

<ParamField body="field" type="string" required>
  Tipo de campo do evento. Valor fixo: `messages`.
</ParamField>

<ParamField body="object" type="string" required>
  Tipo de objeto do evento. Valor fixo: `message_event`.
</ParamField>

<ParamField body="event_type" type="string" required>
  Tipo de evento. Valor fixo: `incoming_message`.
</ParamField>

<ParamField body="project_id" type="string" required>
  Identificador do projeto Jelou ao qual a conversa pertence.
</ParamField>

<ParamField body="room_id" type="string" required>
  Identificador da sala de conversa ativa.
</ParamField>

<ParamField body="bot_id" type="string" required>
  Identificador do bot do Jelou associado à conversa.
</ParamField>

<ParamField body="user_id" type="string" required>
  Identificador do usuário final que receberá a mensagem.
</ParamField>

<ParamField body="value" type="object" required>
  Conteúdo da mensagem a ser entregue ao usuário final.

  * `id` — Identificador único da mensagem.
  * `type` — Tipo de mensagem: `text`, `image`, `video`, `audio`, `document`.
  * `content` — Objeto com o conteúdo conforme o tipo (veja a tabela de tipos ao final desta página).
</ParamField>

## Autenticação

Este recurso valida o cabeçalho `X-Jelou-Signature` usando HMAC-SHA256. Não utiliza Basic Auth.

## Exemplo de requisição

O exemplo a seguir envia uma mensagem de texto ao usuário final através do Jelou:

```bash cURL theme={null}
curl --request POST \
  --url https://chatbot.jelou.ai/v1/external-support/webhook \
  --header 'Content-Type: application/json' \
  --header 'X-Jelou-Signature: sha256=HMAC_SIGNATURE' \
  --data '{
    "field": "messages",
    "object": "message_event",
    "event_type": "incoming_message",
    "project_id": "PROJECT_ID",
    "room_id": "ROOM_ID",
    "bot_id": "BOT_ID",
    "user_id": "USER_ID",
    "value": {
      "id": "MESSAGE_ID",
      "type": "text",
      "content": {
        "body": "Olá usuário, como posso ajudá-lo?"
      }
    }
  }'
```

## Respostas

| Código | Status                | Descrição                                  |
| ------ | --------------------- | ------------------------------------------ |
| 200    | OK                    | Mensagem recebida e processada pelo Jelou. |
| 500    | Internal Server Error | Erro interno do servidor.                  |

## Tipos de mensagens suportados

| Tipo       | Campo `value.content`                              | Campos adicionais     |
| ---------- | -------------------------------------------------- | --------------------- |
| `text`     | `{ "body": "Texto da mensagem" }`                  | —                     |
| `image`    | `{ "url": "...", "mime_type": "image/jpeg" }`      | `caption` (opcional)  |
| `video`    | `{ "url": "...", "mime_type": "video/mp4" }`       | `caption` (opcional)  |
| `audio`    | `{ "url": "...", "mime_type": "audio/mpeg" }`      | —                     |
| `document` | `{ "url": "...", "mime_type": "application/pdf" }` | `filename` (opcional) |

<Note>
  As URLs de arquivos multimídia devem ser acessíveis via HTTPS.
</Note>
