Evento recording.available¶
recording.available é enviado quando uma gravação de chamada fica pronta para download. A versão atual do contrato é 1.
Ele é independente de call.completed: uma chamada pode ser concluída antes de a gravação estar disponível. Não assuma que os dois eventos serão entregues juntos, nem em uma ordem específica.
Correlacione a gravação com a chamada
Use data.call.id para associar este evento ao evento call.completed da mesma chamada. Os dois usam o mesmo identificador público de chamada.
Envelope¶
| Campo | Tipo | Presença | Descrição |
|---|---|---|---|
event |
string | obrigatório | Sempre recording.available. |
eventId |
string | obrigatório | Identificador estável do evento lógico. Use-o para deduplicação de webhooks. |
version |
integer | obrigatório | Versão do contrato: 1. |
occurredAt |
string | obrigatório | Data/hora em que a gravação ficou disponível, em ISO 8601 UTC. |
id |
integer | obrigatório | Identificador numérico da empresa na Moonu. |
data |
object | obrigatório | Contêiner dos dados do evento. |
data.call |
object | obrigatório | Referência pública da chamada associada. |
data.call.id |
string | obrigatório | Identificador público da chamada. É igual a call.completed.data.call.id para a mesma chamada. |
data.recording |
object | obrigatório | Informações para baixar a gravação. |
data.recording.url |
string | obrigatório | URL temporária para download da gravação. |
data.recording.expiresAt |
string | obrigatório | Data/hora de expiração desta URL, em ISO 8601 UTC. |
data.recording.contentType |
string | obrigatório | Tipo MIME do arquivo disponível; atualmente audio/mpeg. |
URL temporária da gravação¶
data.recording.url dá acesso temporário ao download da gravação. A gravação permanece armazenada de forma privada e sua aplicação não precisa de credenciais AWS para usar essa URL.
A URL atualmente vale por 4 horas a partir de sua geração. Consulte sempre data.recording.expiresAt, pois ele informa o prazo daquela URL específica.
Não trate a URL como permanente
Baixe ou processe a gravação antes de expiresAt. Não persista a URL como um link permanente. A retenção da gravação é uma política separada da validade da URL.
Retentativas e idempotência¶
Como nos demais webhooks Moonu, uma mesma entrega pode ser repetida. Use eventId para deduplicar o evento.
Em uma nova tentativa de recording.available, a Moonu pode gerar uma nova data.recording.url e um novo data.recording.expiresAt para que o download continue disponível. O eventId, occurredAt e data.call.id continuam representando o mesmo evento lógico.
Não use a URL como identificador de evento ou de gravação.
Consulte Entrega e autenticação para validar a assinatura e tratar retentativas.
Exemplo¶
Exemplo ilustrativo; a URL abaixo não é uma URL de produção:
{
"event": "recording.available",
"eventId": "evt_8b9c4f2d-1a65-4ef5-9b5e-1dd120d6c45b",
"version": 1,
"occurredAt": "2026-08-28T15:31:59Z",
"id": 1031676,
"data": {
"call": {
"id": "1787331761.0"
},
"recording": {
"url": "https://example.com/recordings/temporary-download-url",
"expiresAt": "2026-08-28T19:31:59Z",
"contentType": "audio/mpeg"
}
}
}