# knowledge.suggested

> El evento knowledge.suggested (Noa propuso guardar una respuesta como documento) de ByDomu: cuándo se emite, cómo suscribirse, sus campos y el payload que llega por webhook.


Noa propuso guardar una respuesta como documento

Objeto · knowledge Al instante

## Cuándo se emite

Noa propone guardar como documento lo que respondió una persona después de que ella pasó la conversación (o el asesor lo pidió desde el buzón). Aún no es un documento: knowledge trae la propuesta sin datos del cliente.

Al instante, cuando pasa en ByDomu: desde la app, la API, Noa, una automatización o una integración. `actor.kind` dice quién fue: USER, NOA, SYSTEM, API, AUTOMATION o INTEGRATION.

## Suscríbete con

- `knowledge.suggested` Solo este evento
- `knowledge.*` Todos los de Conocimiento de Noa
- `*` Todo el catálogo

## Campos que trae

rutas para filtrar y plantillas

`knowledge.id` Identificador de la propuesta

`knowledge.source` Origen (paso a persona o buzón)

`knowledge.title` Título propuesto

`knowledge.question` Pregunta del cliente

`knowledge.collection` Colección sugerida

`knowledge.similarCount` Preguntas parecidas

`knowledge.topicLabel` Tema

`knowledge.conversationId` Conversación

`knowledge.agentId` Asesor que respondió

Hasta 5 intentos (0 s, 5 s, 30 s, 2 min y 10 min) ante error de red, 429 o 5xx. Responde 2xx en menos de 10 s.

Payload:

```
{
  "event": "knowledge.suggested",
  "id": "5f3a0c1e-7d2b-4f7e-9a51-0b6c1d2e3f40",
  "type": "knowledge.suggested",
  "timestamp": "2026-09-22T14:30:00.000Z",
  "organizationId": "clx1org001",
  "actor": {
    "kind": "NOA",
    "userId": null
  },
  "data": {
    "knowledge": {
      "id": "clx1kpr001",
      "source": "HANDOFF",
      "title": "Horario de atención los sábados",
      "content": "Los sábados atendemos de 9:00 a. m. a 1:00 p. m. en la oficina y por WhatsApp. Los domingos y festivos no hay atención; los mensajes se responden el lunes.",
      "question": "¿Atienden los sábados? Mi número es [teléfono]",
      "collection": "Horarios",
      "webVisible": false,
      "similarCount": 4,
      "topicLabel": "Horario de fin de semana",
      "conversationId": "clx1cnv001",
      "agentId": "clx1usr001",
      "createdAt": "2026-09-22T14:30:00.000Z"
    }
  }
}
```

Encabezados:

```
X-Domu-Event: knowledge.suggested
X-Domu-Signature: t=1790610130,v1=9c1e…
User-Agent: Domu-Webhooks/2
```

Verificar firma:

```
import { createHmac, timingSafeEqual } from "node:crypto";

// header = X-Domu-Signature: t=<timestamp>,v1=<hmac>
function verifyWebhook(rawBody, header, secret, toleranceSec = 300) {
  const parts = Object.fromEntries(header.split(",").map((p) => p.split("=")));
  const timestamp = Number(parts.t);
  if (!timestamp || !parts.v1) return false;
  if (Math.abs(Date.now() / 1000 - timestamp) > toleranceSec) return false;
  const expected = createHmac("sha256", secret)
    .update(`${timestamp}.${rawBody}`)
    .digest("hex");
  const a = Buffer.from(expected);
  const b = Buffer.from(parts.v1);
  return a.length === b.length && timingSafeEqual(a, b);
}
```

**Pídelo con tus datos de prueba** GET /v1/webhooks/sample/knowledge.suggested

[Probar](https://developers.bydomu.com/referencia/get-webhook-sample?probar=1&type=knowledge.suggested)
