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ů.