Jak to funguje? (Technicky)
Vytvoření záznamu v CallRequest
Pro hovory přes Call Stormm je potřeba nejprve vytvořit záznam CallRequest a poté zavolat na telefonní číslo, které je u záznamu uvedeno jako dialNumber.
POST https://call.stormm.localhost/api/call-requests
Ukázka response.
{
"fromNumber": "+420777666555",
"toNumber": "+420777666555",
"dialNumber": "+420777666555",
"callbackInboundUrl": "string",
"id": "01875ac5-cc12-7b9e-9910-aee9dcd2d85d",
"createdAt": "2023-09-12T14:40:35.674Z",
"updatedAt": "2023-09-12T14:40:35.674Z",
"createdBy": {
"blame": "string",
"id": "string",
"sub": "string",
"name": "string"
},
"updatedBy": {
"blame": "string",
"id": "string",
"sub": "string",
"name": "string"
}
}
Více informací co vše lze nastavit je v dokumentaci ZDE
Zpracování webhooku z Twilia pro Active Numbers (Outbound)
Jakmile se vytočí telefonní číslo dialNumber ze záznamu CallRequest tak Twilio provolá webhook, který je nastavený pro příchozí hovory na toto číslo.
POST https://call.stormm.localhost/webhook/twilio-active-number-call-callback
Ukázka Twiml, který se vrací Twiliu, kde se předají pokyny co se má s hovorem dít.
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Dial record="record-from-answer-dual" callerId="+420604543268" action="https://call.stormm.digital.cz/webhook/twilio-hangup">
<Number byoc="xxxx" statusCallback="https://call.stormm.digital.cz/webhook/twilio-call-status-callback" statusCallbackEvent="initiated ringing answered completed" statusCallbackMethod="POST">+420733188808</Number>
</Dial>
</Response>
Webhook pomocí volaného čísla najde CallRequest a sestaví Twiml, které řekne Twiliu, se kterým telefonním číslem se má propojit. Hledá se fromNumber.
Zároveň Call Stormm vytvoří záznam o hovoru CallRecord (outbound), kam postupně aktualizuje informace o hovoru.
Zpracování stavu hovoru pomocí callback webhooku z Twilia
Twilio vrací informaci o stavu hovoru Call Stormmu informace pomocí následujícího webhooku.
POST https://call.stormm.localhost/webhook/twilio-call-status-callback
Jednotlivé eventy se zpracují a informace uloží k záznamu CallRecord.
Zároveň se vytváří události, které mohou být poslány jako webhooky do externích aplikací, pokud jsou takové webhooky nastaveny.
Zpracování webhooku z Twilia pro SIP (Inbound)
Pokud neproběhne spojení fromNumber -> toNumber, protože toNumber bylo nedostupné, nebo hovor nezvedalo, ale poté se rozhodně, že zavolá zpět, tak se z Twilia provolá webhook.
POST https://call.stormm.localhost/webhook/twilio-sip-call-callback
Ukázka Twiml, který se vrací Twiliu, kde se předají pokyny co se má s hovorem dít.
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Dial record="record-from-answer-dual" callerId="+420604543268" action="https://call.stormm.digital.cz/webhook/twilio-hangup">
<Number byoc="xxxx" statusCallback="https://call.stormm.digital.cz/webhook/twilio-call-status-callback" statusCallbackEvent="initiated ringing answered completed" statusCallbackMethod="POST">+420733188808</Number>
</Dial>
</Response>
Webhook pomocí volaného čísla najde CallRequest a sestaví Twiml, které řekne Twiliu, se kterým telefonním číslem se má propojit. Hledá se toNumber.
Zároveň Call Stormm vytvoří záznam o hovoru CallRecord (outbound), kam postupně aktualizuje informace o hovoru.
Co se stane, když zavolám na číslo a nebude vytvořen záznam CallRequest?
Hovor se ukončí.
Co přináší Call Stormm oproti přímému zavolání?
Volající nezná přímo telefonní číslo, na které volá. Hovory jsou nahrávány. Získáváme informace o průběhu hovorů.