Ir para o conteúdo

Exemplos de call.completed

Os exemplos abaixo seguem o serializer V1 e os cenários cobertos pelos fixtures de contrato atuais do Billing Consolidator. eventId, datas, nomes e números são ilustrativos. Campos condicionais aparecem somente nos cenários em que existem.

1. Inbound direto para Ramal

{"event":"call.completed","eventId":"evt_001","version":1,"occurredAt":"2026-08-22T10:00:17.000Z","id":1031676,"data":{"call":{"id":"call-001","direction":"inbound","type":"inbound.did","status":"answered","humanAnswered":true,"from":{"number":"+5511995203171","city":"São Paulo"},"inboundNumber":"+551122335002","timing":{"startedAt":"2026-08-22T10:00:00.000Z","answeredAt":"2026-08-22T10:00:05.500Z","endedAt":"2026-08-22T10:00:17.000Z","durationSeconds":17,"talkTimeSeconds":12,"timeToHumanAnswerSeconds":5,"humanTalkTimeSeconds":12},"answeredBy":{"extension":"100","name":"Maria da Silva"},"routing":{"initialDestination":{"type":"extension","number":"100","name":"Maria da Silva"},"ivrs":[],"huntGroup":null,"transfers":[],"voicemail":null},"department":{"name":"Departamento Geral"},"price":{"amount":0,"currency":"BRL"},"recording":{"status":"none"}}}}

2. URA Menu → Fila → Ramal

{"event":"call.completed","eventId":"evt_002","version":1,"occurredAt":"2026-08-22T10:00:20.000Z","id":1031676,"data":{"call":{"id":"call-002","direction":"inbound","type":"inbound.did","status":"answered","humanAnswered":true,"from":{"number":"+5511995203171","city":"São Paulo"},"inboundNumber":"+551122335002","timing":{"startedAt":"2026-08-22T10:00:00.000Z","answeredAt":"2026-08-22T10:00:05.500Z","endedAt":"2026-08-22T10:00:20.000Z","durationSeconds":20,"talkTimeSeconds":10,"timeToHumanAnswerSeconds":5,"humanTalkTimeSeconds":10},"answeredBy":{"extension":"100","name":"Maria da Silva"},"routing":{"initialDestination":{"type":"ivr","number":"510","name":"URA Comercial","ivrType":"menu"},"steps":[{"sequence":1,"type":"ivr","number":"510","name":"URA Comercial","action":"entered","events":[{"type":"selection","value":"1","destination":{"type":"queue","number":"700","name":"Fila Comercial"}}]},{"sequence":2,"type":"queue","number":"700","name":"Fila Comercial","action":"entered"},{"sequence":3,"type":"endpoint","number":"100","name":"Maria da Silva","action":"answered"}],"transfers":[],"voicemail":null},"department":{"name":"Departamento Geral"},"price":{"amount":0,"currency":"BRL"},"recording":{"status":"none"}}}}

3. URA Menu → entradas inválidas → seleção válida

{"event":"call.completed","eventId":"evt_003","version":1,"occurredAt":"2026-08-22T10:00:20.000Z","id":1031676,"data":{"call":{"id":"call-003","direction":"inbound","type":"inbound.did","status":"answered","humanAnswered":true,"from":{"number":"+5511995203171","city":"São Paulo"},"inboundNumber":"+551122335002","timing":{"startedAt":"2026-08-22T10:00:00.000Z","answeredAt":"2026-08-22T10:00:05.500Z","endedAt":"2026-08-22T10:00:20.000Z","durationSeconds":20,"talkTimeSeconds":10,"timeToHumanAnswerSeconds":5,"humanTalkTimeSeconds":10},"answeredBy":{"extension":"100","name":"Maria da Silva"},"routing":{"initialDestination":{"type":"ivr","number":"510","name":"URA Comercial","ivrType":"menu"},"steps":[{"sequence":1,"type":"ivr","number":"510","name":"URA Comercial","action":"entered","events":[{"type":"invalid_input","value":"3"},{"type":"retry","reason":"invalid_input"},{"type":"invalid_input","value":"4"},{"type":"retry","reason":"invalid_input"},{"type":"selection","value":"1","destination":{"type":"extension","number":"100","name":"Maria da Silva"}}]},{"sequence":2,"type":"endpoint","number":"100","name":"Maria da Silva","action":"answered"}],"transfers":[],"voicemail":null},"department":{"name":"Departamento Geral"},"price":{"amount":0,"currency":"BRL"},"recording":{"status":"none"}}}}

4. URA Menu → nenhuma entrada → fallback

{"event":"call.completed","eventId":"evt_004","version":1,"occurredAt":"2026-08-22T10:00:12.000Z","id":1031676,"data":{"call":{"id":"call-004","direction":"inbound","type":"inbound.did","status":"answered","humanAnswered":false,"from":{"number":"+5511995203171","city":"São Paulo"},"inboundNumber":"+551122335002","timing":{"startedAt":"2026-08-22T10:00:00.000Z","endedAt":"2026-08-22T10:00:12.000Z","durationSeconds":12,"talkTimeSeconds":0},"answeredBy":null,"routing":{"initialDestination":{"type":"ivr","number":"510","name":"URA Comercial","ivrType":"menu"},"steps":[{"sequence":1,"type":"ivr","number":"510","name":"URA Comercial","action":"entered","events":[{"type":"no_input"},{"type":"retry","reason":"no_input"},{"type":"redirect","reason":"fallback","trigger":"no_input","destination":{"type":"queue","number":"710","name":"Financeiro"}}]},{"sequence":2,"type":"queue","number":"710","name":"Financeiro","action":"entered"}],"transfers":[],"voicemail":null},"department":null,"price":null,"recording":{"status":"none"}}}}

5. URA fora de horário → playback → COMPLETED

{"event":"call.completed","eventId":"evt_005","version":1,"occurredAt":"2026-08-22T10:00:09.000Z","id":1031676,"data":{"call":{"id":"call-005","direction":"inbound","type":"inbound.did","status":"completed","humanAnswered":false,"from":{"number":"+5511995203171","city":"São Paulo"},"inboundNumber":"+551122335002","timing":{"startedAt":"2026-08-22T10:00:00.000Z","endedAt":"2026-08-22T10:00:09.000Z","durationSeconds":9,"talkTimeSeconds":0},"answeredBy":null,"routing":{"initialDestination":{"type":"ivr","number":"510","name":"URA Comercial","ivrType":"menu"},"ivrs":[{"number":"510","name":"URA Comercial","type":"menu","startedAt":"2026-08-22T10:00:01.000Z","durationSeconds":9,"outOfService":"weekday","outcome":{"action":"playback"},"selections":[]}],"huntGroup":null,"transfers":[],"voicemail":null},"department":{"name":"Departamento Geral"},"price":{"amount":0,"currency":"BRL"},"recording":{"status":"none"}}}}

6. URA fora de horário → redirecionamento

{"event":"call.completed","eventId":"evt_006","version":1,"occurredAt":"2026-08-22T10:00:12.000Z","id":1031676,"data":{"call":{"id":"call-006","direction":"inbound","type":"inbound.did","status":"answered","humanAnswered":false,"from":{"number":"+5511995203171","city":"São Paulo"},"inboundNumber":"+551122335002","timing":{"startedAt":"2026-08-22T10:00:00.000Z","endedAt":"2026-08-22T10:00:12.000Z","durationSeconds":12,"talkTimeSeconds":0},"answeredBy":null,"routing":{"initialDestination":{"type":"ivr","number":"510","name":"URA Comercial","ivrType":"menu"},"ivrs":[{"number":"510","name":"URA Comercial","type":"menu","startedAt":"2026-08-22T10:00:01.000Z","durationSeconds":12,"outOfService":"holiday","outcome":{"action":"overflow","destination":"Grupo Comercial - 500"},"selections":[]}],"huntGroup":{"number":"500","name":"Grupo Comercial"},"transfers":[],"voicemail":null},"department":{"name":"Departamento Geral"},"price":{"amount":0,"currency":"BRL"},"recording":{"status":"none"}}}}

7. URA Ramal (direct_dial) → Fila → Ramal

{"event":"call.completed","eventId":"evt_007","version":1,"occurredAt":"2026-08-22T10:00:25.000Z","id":1031676,"data":{"call":{"id":"call-007","direction":"inbound","type":"inbound.did","status":"answered","humanAnswered":true,"from":{"number":"+5511995203171","city":"São Paulo"},"inboundNumber":"+551122335002","timing":{"startedAt":"2026-08-22T10:00:00.000Z","answeredAt":"2026-08-22T10:00:05.500Z","endedAt":"2026-08-22T10:00:25.000Z","durationSeconds":25,"talkTimeSeconds":15,"timeToHumanAnswerSeconds":5,"humanTalkTimeSeconds":15},"answeredBy":{"extension":"100","name":"Lucas M."},"routing":{"initialDestination":{"type":"ivr","number":"402","name":"URA Ramal Principal","ivrType":"direct_dial"},"steps":[{"sequence":1,"type":"ivr","number":"402","name":"URA Ramal Principal","action":"entered","ivrType":"direct_dial","events":[{"type":"selection","value":"710","destination":{"type":"queue","number":"710","name":"Financeiro"}}]},{"sequence":2,"type":"queue","number":"710","name":"Financeiro","action":"entered"},{"sequence":3,"type":"endpoint","number":"100","name":"Lucas M.","action":"answered"}],"transfers":[],"voicemail":null},"department":{"name":"Departamento Geral"},"price":{"amount":0,"currency":"BRL"},"recording":{"status":"none"}}}}

8. URA Ramal → entrada inválida → retry

{"event":"call.completed","eventId":"evt_008","version":1,"occurredAt":"2026-08-22T10:00:15.000Z","id":1031676,"data":{"call":{"id":"call-008","direction":"inbound","type":"inbound.did","status":"no_answer","humanAnswered":false,"from":{"number":"+5511995203171","city":"São Paulo"},"inboundNumber":"+551122335002","timing":{"startedAt":"2026-08-22T10:00:00.000Z","endedAt":"2026-08-22T10:00:15.000Z","durationSeconds":15,"talkTimeSeconds":0},"answeredBy":null,"routing":{"initialDestination":{"type":"ivr","number":"402","name":"URA Ramal Principal","ivrType":"direct_dial"},"steps":[{"sequence":1,"type":"ivr","number":"402","name":"URA Ramal Principal","action":"entered","ivrType":"direct_dial","events":[{"type":"invalid_input","value":"0"},{"type":"retry","reason":"invalid_input"}]}],"transfers":[],"voicemail":null},"department":null,"price":null,"recording":{"status":"none"}}}}

9. Grupo de Atendimento

{"event":"call.completed","eventId":"evt_009","version":1,"occurredAt":"2026-08-22T10:00:20.000Z","id":1031676,"data":{"call":{"id":"call-009","direction":"inbound","type":"inbound.did","status":"answered","humanAnswered":true,"from":{"number":"+5511995203171","city":"São Paulo"},"inboundNumber":"+551122335002","timing":{"startedAt":"2026-08-22T10:00:00.000Z","answeredAt":"2026-08-22T10:00:05.500Z","endedAt":"2026-08-22T10:00:20.000Z","durationSeconds":20,"talkTimeSeconds":10,"timeToHumanAnswerSeconds":5,"humanTalkTimeSeconds":10},"answeredBy":{"extension":"100","name":"Maria da Silva"},"routing":{"initialDestination":{"type":"hunt_group","number":"500","name":"Grupo Comercial"},"ivrs":[],"huntGroup":{"number":"500","name":"Grupo Comercial"},"transfers":[],"voicemail":null},"department":{"name":"Departamento Geral"},"price":{"amount":0,"currency":"BRL"},"recording":{"status":"none"}}}}

10. Transferência atendida e transferência com falha

{"event":"call.completed","eventId":"evt_010","version":1,"occurredAt":"2026-08-22T10:00:30.000Z","id":1031676,"data":{"call":{"id":"call-010","direction":"internal","type":"internal","status":"answered","humanAnswered":true,"from":{"number":"100","name":"João da Silva","city":"São Paulo"},"timing":{"startedAt":"2026-08-22T10:00:00.000Z","answeredAt":"2026-08-22T10:00:03.000Z","endedAt":"2026-08-22T10:00:30.000Z","durationSeconds":30,"talkTimeSeconds":30,"timeToHumanAnswerSeconds":3,"humanTalkTimeSeconds":25},"answeredBy":{"extension":"101","name":"Maria da Silva"},"routing":{"initialDestination":{"type":"extension","number":"101","name":"Maria da Silva"},"ivrs":[],"huntGroup":null,"transfers":[{"sequence":1,"occurredAt":"2026-08-22T10:00:10.000Z","type":"blind","from":{"extension":"100","name":"João da Silva"},"to":{"extension":"101","name":"Maria da Silva"},"answeredBy":{"extension":"101","name":"Maria da Silva"},"sourceTalkTimeSeconds":10,"destinationTalkTimeSeconds":20,"status":"completed"}],"voicemail":null},"department":{"name":"Departamento Geral"},"price":{"amount":0,"currency":"BRL"},"recording":{"status":"none"}}}}

Uma transferência atendida com falha usa os mesmos campos e status: "failed", omitindo transfers[].answeredBy quando não houve atendimento do destino. Para o conjunto completo de fixtures testados, consulte o diretório tests/fixtures/webhooks/call-completed do Billing Consolidator.