Hanki paikallisia, kansallisia ja kansainvälisiä numeroita suoraan verkosta.
🤖 Rakenna visuaalisesti

IVR toolkit

IVR-työkalupakki on CallFactoryn kehittäjälle suunnattuja toimintojen kirjasto mukautettujen puheluiden kulkujen rakentamiseen. Jokainen toiminto — Vastaa, Toista, Soita, Tallenna, Käynnistä-virtaus ja paljon muuta — antaa sinulle tarkkaa hallintaa siitä mitä tapahtuu puhelun aikana.

Käytä sitä puhelinvalikkojen rakentamiseen, soittajan syötteen keräämiseen, äänen streamaukseen tekoälypalveluihin, soittajien yhdistämiseen agentteihin ja jokaisen reunatapauksen käsittelyyn. Työkalupakki toimii samalla IVR-alustalla, joka antaa voimaa kaikkiin CallFactory-ominaisuuksiin.

  • Strukturoidut toiminnot selkeillä signatuurilla ja esimerkeillä
  • Stream ääntä tekoälyyn, puheesta tekstiin tai mukautettuihin päätepisteisiin
  • Rakenna täydellisiä puheluiden kulkuja ilman ylimääräistä laitteistoa
  • Täydellinen dokumentaatio ja kehittäjän tuki

IVR-työkalupakin edut

Tutustu kuinka IVR-työkalupakki auttaa kehitystiimejä rakentaa voimakkaita puheluiden kulkuja.

🧩

Täydellinen hallinta puhelulogiikkaan

Määritä tarkalleen mitä tapahtuu jokaisen puhelun vaiheessa. Toista prompteja, kerää syöttöä, reitä ehtojen perusteella, suorita striimi tekoälyyn ja käsittele virheet — kaikki ennustettavilla, hyvin dokumentoiduilla toiminnoilla.

⚙️

Rakennettu kehittäjille

Jokaisella toiminnolla on selkeä signatuuri, tyypitetyt palautusarvot, virheenkäsittely ja toimivat koodin esimerkit. Rakenna luottamuksella käyttämällä strukturoituja toimintoja, jotka sopivat luonnollisesti taustajärjestelmään.

🤖

AI-valmis äänen striimaus

Suorita live puheluiden ääni mihin tahansa WebSocket-päätepisteeseen — tekoälyassistenttiin, puheesta-tekstiin moottoriin tai omaan analytiikkapalveluun. Käynnistä-virtaus ja Lopeta-virtaus antavat sinulle täydellisen hallinnan milloin ja missä ääni virtaa.

🔧

Toimii todistetulla infrastruktuurilla

Työkalupakki toimii CallFactoryn omalla IVR-alustalla — samalla infrastruktuurilla, joka antaa voimaa kaikkiin puhelinominaisuuksiin. Ei ylimääräistä laitteistoa, ei kolmannen osapuolen riippuvuuksia. Toimii nykyisten CallFactory-numerojesi kanssa.

IVR Actions Toolkit

Napsauta toimintoa nähdäksesi sen kuvauksen, signatuurin ja esimerkit.

Vastaa saapuvaan puheluun. Täytyy kutsua ennen äänen toistoa tai syötteen keräämistä saapuvassa puhelussa.

Description

  • Merkitsee puhelun vastaanotettuna puhelinpuolella.
  • Vaaditaan ennen toimintojen kuten Play, PromptDigit, GatherDigits, Dial, Record, jne., käyttöä saapuvissa puheluissa.

Throws

  • InvalidOperationException - jos puhelu on jo vastattu.

Signature

void Answer();

Example

protected override async Task
HandleCallAsync(CancellationToken ct)
{
    // Always answer first on inbound calls
    Answer();

    await Play("welcome.wav", ct);
}

Toista äänitiedosto soittajalle tai lähtevään kanavaan.

Description

  • Toistaa äänitiedoston (esim. .wav) sijaitsevat palvelimen audiotiedostohakemistossa.
  • Voi kohdistaa saapuvaan soittajaan tai tiettyyn LähteväKanava.

Parameters

  • audioFile - Tiedoston nimi/polku suhteessa IVR audiotiedostohakemistoon.
  • channel - (valinnainen) Lähtevä kanava jolle ääni toistetaan.
  • ct - Peruutustoken; peruutetaan kun soittaja tai kanava katkeaa.

Returns

  • PlayResult.Success - Ääni toistettiin kokonaan.
  • PlayResult.Fail - Toisto epäonnistui (esim. virheellinen tiedosto).
  • PlayResult.Cancel - Toiminto peruutettu (esim. soittaja katkaisi).
  • PlayResult.Error - Odottamaton virhe toiston aikana.

Throws

  • OperationCanceledException - Jos ct peruutetaan toiston aikana.
  • Muut kuljetus/IO poikkeukset riippuen toteutuksesta.

Signatures

Task<PlayResult> Play(
    string audioFile,
    CancellationToken ct = default);

Task<PlayResult> Play(
    string audioFile,
    OutboundChannel channel,
    CancellationToken ct = default);

Example

protected override async Task HandleCallAsync(CancellationToken ct)
{
    Answer();
    var result = await Play("welcome.wav", ct);

    if (result != PlayResult.Success)
    {
        Logger.LogWarning("Failed to play welcome message (Result:
        {Result})", result); return;
    }

    await Play("next_prompt.wav", ct);
}

Toista ääni-prompt ja kerää yksittäinen DTMF-numero.

Description

  • Toistaa valikon promptin (esim. ‘Paina 1 myyntiin, 2 tukeen, 3 jätä viesti.’).
  • Odottaa yksittäistä DTMF-numeroa: 0-9, *, tai #.
  • Tarkoitettu päävalikon valinnoille.

Parameters

  • audioFile - Promptin toisto tiedosto.
  • timeoutSeconds - Kuinka kauan odotella numeroa (oletus 10).
  • ct - Peruutustoken; peruutetaan kun soittaja katkeaa.

Returns

  • MenuResult.Success Digit-asetuksella kun numero vastaanotetaan.
  • MenuResult.Timeout kun numeroa ei vastaanotettu timeoutSeconds sisällä.
  • MenuResult.Cancel kun toiminto peruutetaan.

Throws

  • OperationCanceledException - Jos ct peruutetaan (esim. soittaja katkaisi).

Signatures

Task<(MenuResult Result, char? Digit)> PromptDigit(
    string audioFile,
    int timeoutSeconds = 10,
    CancellationToken ct = default);

Example

protected override async Task HandleCallAsync(CancellationToken ct)
{
    Answer();
    await Play("welcome.wav", ct);

    var (menuResult, digit) = await PromptDigit(
        "main_menu.wav",
        timeoutSeconds: 10,
        ct);

    if (menuResult == MenuResult.Success && digit.HasValue)
    {
        switch (digit.Value)
        {
            case '1':
                await HandleSales(ct);
                break;
            case '2':
                await HandleSupport(ct);
                break;
            default:
                await Play("invalid_option.wav", ct);
                await Hangup(ct);
                break;
        }
    }
    else if (menuResult == MenuResult.Timeout)
    {
        await Play("no_input_goodbye.wav", ct);
        await Hangup(ct);
    }
    else
    {
        await Play("system_error.wav", ct);
        await Hangup(ct);
    }
}

Toista prompt ja kerää useita DTMF-numeroita (esim. tilinumero, PIN).

Description

  • Toistaa promptin, joka pyytää soittajaa syöttämään useita numeroita.
  • Lopettaa joko:
    • maxDigits saavutetaan
    • Lopetusnumero (esim. #) painetaan
    • Timeout umpeutuu

Parameters

  • audioFile – Prompt joita toistetaan (esim. “Syötä tilinumerosi ja paina #”).
  • maxDigits – Enimmäismäärä numeroita kerätä ennen pysäyttämistä.
  • terminationDigits – Näppäimien merkkijono, joka lopettaa keräämisen kun painetaan.
  • timeoutSeconds – Enimmäisaika odottaa syöttöä.
  • ct – Peruutustoken.

Returns

  • Tuple (GatherResult Result, string? Digits):
  • GatherResult.Success ja Digits asetettu kun syöte kerätään.
  • GatherResult.Timeout kun syöttöä ei vastaanotettu.
  • GatherResult.Cancel kun toiminto peruutetaan.
  • GatherResult.Error odottamattomassa virheessä.

Throws

  • OperationCanceledException - Jos ct peruutetaan (soittaja katkaisi).

Signatures

Task<(GatherResult Result, string? Digits)> GatherDigits(
    string audioFile,
    int maxDigits = 20,
    string terminationDigits = "#",
    int timeoutSeconds = 30,
    CancellationToken ct = default);

Example

protected override async Task
HandleCallAsync(CancellationToken ct)
{
    Answer();
    await Play("welcome.wav", ct);

    var (result, digits) = await GatherDigits(
        "enter_account.wav",
        maxDigits: 10,
        terminationDigits: "#",
        timeoutSeconds: 30,
        ct);

    if (result == GatherResult.Success && !string.IsNullOrEmpty(digits))
    {
        await ProcessAccountNumber(digits, ct);
    }
    else if (result == GatherResult.Timeout)
    {
        await Play("no_input_goodbye.wav", ct);
        await Hangup(ct);
    }
    else
    {
        await Play("system_error.wav", ct);
        await Hangup(ct);
    }
}

Soita yhteen tai useampaan lähtevään puhelinnumeroon ja palauta LähteväKanava kun vastattiin.

Description

  • Aloittaa lähtevän puhelun yksittäiseen kohteeseen tai useaan kohteiseen rinnakkain.
  • Useille kohteille ensimmäinen vastaa voittaa; muut peruutetaan.

Parameters

  • destination / destinations – Soitettavat puhelinnumerot.
  • callerId – Numero esitettäväksi soittajan tunnisteeksi.
  • ringTimeoutSeconds – Enimmäisaika soittaa ennen luovuttamista.
  • ct – Peruutustoken.

Returns

  • Yksittäinen kohde:
  • (DialerResult Result, OutboundChannel? Channel)
  • Useita kohteita:
  • (DialerResult Result, string? AnsweredDestination, OutboundChannel? Channel)
  • DialerResult voi olla: Init, Ringing, Answered, Busy, Rejected, NoAnswer, Failed, Cancel.

Throws

  • OperationCanceledException – Jos toiminto peruutetaan soitettaessa.

Signatures

Task<(DialerResult Result, OutboundChannel? Channel)> Dial(
    string destination,
    string callerId,
    int ringTimeoutSeconds = 60,
    CancellationToken ct = default);

Task<(DialerResult Result, string? AnsweredDestination,
OutboundChannel? Channel)> Dial(
    string[] destinations,
    string callerId,
    int ringTimeoutSeconds = 40,
    CancellationToken ct = default);

Esimerkki (yksittäinen kohde)

private async Task TransferToSupport(CancellationToken ct)
{
    var (dialResult, channel) = await Dial(
        destination: "18885554444",
        callerId: Context.Ani,
        ringTimeoutSeconds: 30,
        ct);

    if (dialResult == DialerResult.Answered && channel != null)
    {
        await Play("connecting_to_support.wav", ct);
        await Connect(channel, ct);
    }
    else
    {
        await Play("support_unavailable.wav", ct);
        await HandleVoicemail(ct);
    }
}

Esimerkki (useita kohteita)

private async Task TransferToSalesHuntGroup(CancellationToken ct)
{
    var salesTeam = new[]
    {
        "18885551111",
        "18885552222",
        "18885553333"
    };

    var (result, answeredNumber, channel) = await Dial(
        destinations: salesTeam,
        callerId: Context.Ani,
        ringTimeoutSeconds: 40,
        ct);

    if (result == DialerResult.Answered && channel != null)
    {
        Logger.LogInformation("Connected to sales agent {Number}", answeredNumber);
        await Connect(channel, ct);
    }
    else
    {
        await Play("sales_unavailable.wav", ct);
        await HandleVoicemail(ct);
    }
}

Yhdistä ääni kahden kanavan välillä.

Description

  • Saapuvalle virroille: yhdistää saapuvan soittajan lähtevään kanavaan.
  • Lähtevä-vain-skenaarioille: yhdistää kaksi lähtevää kanavaa yhdessä.
  • Estää kunnes toinen puoli katkeaa tai yhteys muuten lopetetaan.

Parameters

  • channel – Lähtevä kanava, johon saapuva puhelu yhdistetään.
  • primary, secondary – Kaksi lähtevää kanavaa yhdistettävät.
  • ct – Peruutustoken.

Returns

  • ConnectResult.Success – Yhteys päättyi normaalisti (puhelu lopetettiin).
  • ConnectResult.Error – Yhteyttä ei voitu muodostaa tai se epäonnistui.

Throws

  • OperationCanceledException – Jos ct peruutetaan kun yhdistetty.

Signatures

Task<ConnectResult> Connect(
    OutboundChannel channel,
    CancellationToken ct = default);

Task<ConnectResult> Connect(
    OutboundChannel primary,
    OutboundChannel secondary,
    CancellationToken ct = default);

Example

protected override async Task HandleCallAsync(CancellationToken ct)
{
    Answer();

    await Play("connecting_you_now.wav", ct);

    var (dialResult, channel) = await Dial(
        destination: "18885550000",
        callerId: Context.Ani,
        ringTimeoutSeconds: 30,
        ct);

    if (dialResult == DialerResult.Answered && channel != null)
    {
        var connectResult = await Connect(channel, ct);
        Logger.LogInformation("Connection ended with result: {Result}", connectResult);
    }
    else
    {
        await Play("agent_unavailable.wav", ct);
    }

    await Hangup(ct);
}

Tallenna ääni soittajalta tai lähtevältä kanavalta.

Description

  • Aloittaa tallennuksen joko saapuvasta soittajasta tai tietystä lähtevästä kanavasta.
  • Lopettaa kun:
    • timeLimitSeconds saavutetaan
    • Lopetusnumero painetaan (jos konfiguroitu)
    • Soittaja tai kanava katkeaa

Parameters

  • timeLimitSeconds – Enimmäistallennuspituus.
  • fileName – Valinnainen mukautettu tiedostonimi (auto-luotu kun null).
  • terminationDigits – DTMF-numerot, jotka pysäyttävät tallennuksen.
  • playBeep – Pitäisikö toistaa beep ennen tallennusta.
  • channel – Valinnainen lähtevä kanava.
  • ct – Peruutustoken.

Returns

  • Tuple (RecordResult Result, string? FilePath):
  • RecordResult.Success ja FilePath tallennettu.
  • RecordResult.Timeout, MaxDurationReached, TerminationDigit, Cancel, Error.

Throws

  • OperationCanceledException jos peruutetaan.

Signatures

Task<(RecordResult Result, string? FilePath)> Record(
    int timeLimitSeconds = 120,
    string? fileName = null,
    string? terminationDigits = null,
    bool playBeep = true,
    CancellationToken ct = default);

Task<(RecordResult Result, string? FilePath)> Record(
    OutboundChannel channel,
    int timeLimitSeconds = 120,
    string? fileName = null,
    string? terminationDigits = null,
    bool playBeep = true,
    CancellationToken ct = default);

Example

private async Task HandleVoicemail(CancellationToken ct)
{
    await Play("leave_message_after_beep.wav", ct);

    var (recordResult, filePath) = await Record(
        timeLimitSeconds: 180,
        fileName: null,
        terminationDigits: "#",
        playBeep: true,
        ct: ct);

    if (recordResult == RecordResult.Success && !string.IsNullOrEmpty(filePath))
    {
        Logger.LogInformation("Voicemail saved at {Path}", filePath);
        await Play("thank_you_message_received.wav", ct);
    }
    else
    {
        Logger.LogWarning("Recording failed: {Result}", recordResult);
        await Play("recording_failed.wav", ct);
    }

    await Hangup(ct);
}

Hylkää saapuva puhelu SIP-syykoodilla ja lopeta puhelu.

Description

  • Käytetään puhelujen seuloontaan, estoon ja toimistoaikojen ulkopuoliseen käyttäytymiseen.
  • Palauttaa SIP-virhekodin ylävirtaan siirtäjälle.

Parameters

  • reasonRejectReason.Busy, .TemporarilyUnavailable, .Declined.
  • ct – Peruutustoken.

Returns

  • RejectResult.Success – Puhelu hylätty.
  • RejectResult.AlreadyAnswered – Puhelu jo vastattu.
  • RejectResult.Error – Epäonnistui hylätä.

Throws

  • OperationCanceledException jos peruutetaan.

Signatures

Task<RejectResult> Reject(
    RejectReason reason = RejectReason.Busy,
    CancellationToken ct = default);

Example

protected override async Task HandleCallAsync(CancellationToken ct)
{
    if (IsBlockedNumber(Context.Ani))
    {
        await Reject(RejectReason.Declined, ct);
        return;
    }

    if (!IsWithinBusinessHours(DateTime.UtcNow))
    {
        await Reject(RejectReason.TemporarilyUnavailable, ct);
        return;
    }

    // Normal flow
    Answer();
    await Play("welcome.wav", ct);
}

Lopeta aktiivinen puhelu puhtaasti.

Description

  • Lopettaa puhelun IVR-puolelta.

Returns

  • HangupResult.Success – Puhelu lopetettiin onnistuneesti.
  • HangupResult.NotAnswered – Ei koskaan vastattu.
  • HangupResult.AlreadyDisconnected – Soittaja katkaisi.
  • HangupResult.Error – Lopetus epäonnistui.

Throws

  • OperationCanceledException jos peruutetaan.

Signature

Task<HangupResult> Hangup(CancellationToken ct = default);

Example

protected override async Task HandleCallAsync(CancellationToken ct)
{
    Answer();

    await Play("goodbye.wav", ct);

    var result = await Hangup(ct);
    Logger.LogInformation("Hangup result: {Result}", result);
}

Paussita suoritus määrätyn sekuntien määrän ajan.

Description

  • Odottaa durationSeconds pitäen puhelun auki.
  • Saattaa keskeytyä DTMF-syötteellä riippuen toteutuksesta.

Parameters

  • durationSeconds – Pituus sekunneissa.
  • ct – Peruutustoken.

Returns

  • PauseResult.Success – Paussit valmistui normaalisti.
  • PauseResult.Interrupted – Soittaja painoi näppäintä paussien aikana (jos tuettu).
  • PauseResult.Cancel – Toiminto peruutettu.
  • PauseResult.Error – Paussi epäonnistui.

Throws

  • OperationCanceledException – Jos ct peruutetaan.

Signatures

Task<PauseResult> Pause(
    int durationSeconds,
    CancellationToken ct = default
);

Example

protected override async Task HandleCallAsync(CancellationToken ct)
{
    Answer();

    await Play("please_wait.wav", ct);

    var result = await Pause(3, ct);

    if (result == PauseResult.Interrupted)
    {
        await Play("you_pressed_a_key.wav", ct);
    }
    else
    {
        await Play("thank_you_for_waiting.wav", ct);
    }

    await Hangup(ct);
}

Lähetä varattu signaali soittajalle ja lopeta puhelu.

Description

  • Esittää vakion varatun sävelen.
  • Yleisesti käytetään kun kaikki agentit/linjat ovat varattuja.

Returns

  • BusyResult.Success – Varattu signaali lähetetty ja puhelu lopetettiin.
  • BusyResult.Cancel – Toiminto peruutettu.
  • BusyResult.Error – Epäonnistui lähettää varattu signaali tai lopettaa puhelu.

Throws

  • OperationCanceledException – Jos ct peruutetaan.

Signature

Task<BusyResult> Busy(CancellationToken ct = default);

Example

protected override async Task HandleCallAsync(CancellationToken ct)
{
    if (AllAgentsBusy())
    {
        var result = await Busy(ct);
        Logger.LogInformation("Busy result: {Result}", result);
        return;
    }

    // Otherwise, proceed with normal flow
    Answer();
    await Play("welcome.wav", ct);
}

Aloita live puheluiden äänen striimaus ulkoiseen päätepisteeseen (esim. tekoäly tai puheesta-tekstiin moottori).

Description

  • Avaa reaaliaikaisen median virran puhelusta annettuun url:iin (esim. WebSocket päätepiste).
  • Tyypillisesti käytetään lähettämään ääntä:
    • tekoälyassistenttiin,
    • puheesta-tekstiin moottoriin,
    • mukautettuun analytiikka/valvontapalveluun.
  • Vain yksi aktiivinen virta per puhelu suositeltu.

Parameters

  • url – Kohdistava striimaus päätepiste (esim. wss://ai.callfactory.nl/voice-stream).
  • options – Valinnainen striimaus konfiguraatio (suunta, metatiedot, nimi).
  • ct – Peruutustoken. Jos peruutetaan, virta hajotetaan.

Throws

  • OperationCanceledException – Jos ct peruutetaan asennuksen aikana.
  • Yhteys/kuljetus poikkeukset riippuen toteutuksesta.

Signatuurit

Task<StreamResult> StartStream(
    string url,
    StreamOptions? options = null,
    CancellationToken ct = default
);

Parametrit

public class StreamOptions
{
    public string? Name { get; set; }                           //
Valinnainen virran nimi
    public StreamDirection Direction { get; set; } =
        StreamDirection.Both;
    public Dictionary<string, string>? Metadata { get; set; }
}

public enum StreamDirection
{
    Inbound,   // Soittajasta tekoälyyn
    Outbound,  // Agentista/järjestelmästä tekoälyyn
    Both
}

Palauttaa

public enum StreamResult
{
    Started,        // Virta aloitettiin onnistuneesti
    Stopped,        // Virta lopetettu onnistuneesti (LopetaVirta)
    AlreadyStarted, // Virta on jo aktiivinen
    NotActive,      // Ei aktiivista virtaa (LopetaVirta)
    Error           // Epäonnistui aloittaa/lopettaa
}

Example

protected override async Task
HandleCallAsync(CancellationToken ct)
{
    Answer();

    // Aloita striimi soittajan ääni tekoälyyn
    var streamResult = await StartStream(
        url: "wss://ai.callfactory.nl/voice-stream",
        options: new StreamOptions
        {
            Name = "support-ai",
            Direction = StreamDirection.Inbound,
            Metadata = new Dictionary<string, string>
            {
                ["caller"] = Context.Ani,
                ["dnis"] = Context.Dnis
            }
        },
        ct
    );

    if (streamResult != StreamResult.Started)
    {
        Logger.LogWarning("Failed to start AI stream:
{Result}", streamResult);
        await Play("ai_unavailable.wav", ct);
        await Hangup(ct);
        return;
    }

    await Play("connected_to_ai.wav", ct);

    // Jatka IVR-logiikka striimauksen ollessa aktiivisena...
    var (menuResult, digit) = await
PromptDigit("ai_menu.wav", 30, ct);

    if (menuResult == MenuResult.Success && digit == '0')
    {
        // Soittaja haluaa ihmisagentin
        await StopStream(ct);
        await Play("transferring_to_human_agent.wav", ct);
        await TransferToHuman(ct);
    }
    else
    {
        await Play("thank_you_goodbye.wav", ct);
        await StopStream(ct);
        await Hangup(ct);
    }
}

Lopeta aktiivinen äänivirta, joka aloitettiin StartStream-toiminnolla.

Description

  • Päättää aktiivisen mediavirran perusteellisesti.
  • Ei kata puhelua — vain lopettaa äänen lähettämisen.
  • Turvallinen kutsua, vaikka virta ei olisi aktiivinen (palauttaa EiAktiivinen).

Parameters

  • ct – Peruutustoken.

Returns

  • StreamResult.Stopped – Virta lopetettu onnistuneesti.
  • StreamResult.NotActive – Ei aktiivista virtaa löydetty.
  • StreamResult.Error – Epäonnistui lopettaa virta.

Throws

  • OperationCanceledException – Jos ct peruutetaan.

Signatures

Task<StreamResult> StopStream(
    CancellationToken ct = default);

Example

private async Task TransferToHuman(CancellationToken ct)
{
    // Lopeta tekoälyn striimaus ennen siirtämistä ihmiselle
    var stopResult = await StopStream(ct);
    Logger.LogInformation("StopStream result: {Result}",
stopResult);

    await Play("transferring_to_agent.wav", ct);

    var (dialResult, channel) = await Dial(
        destination: "18005550000",
        callerId: Context.Ani,
        ringTimeoutSeconds: 30,
        ct
    );

    if (dialResult == DialerResult.Answered && channel !=
null)
    {
        await Connect(channel, ct);
    }
    else
    {
        await Play("agent_unavailable.wav", ct);
        await Hangup(ct);
    }
}

Kuinka IVR-työkalupakki toimii

IVR-työkalupakki on toimintojen kirjasto, jonka koodi kutsuu live puhelun aikana. Kun puhelu saapuu, sovelluksesi saa sen ja päättää mitä tehdä — vaihe vaiheelta — käyttäen näitä toimintoja.

Tyypillinen virtaus alkaa Answer():lla, sitten toistaa tervetulotestia Play():llä, kerää syötteen PromptDigit() tai GatherDigits():llä ja reitää soittajaa Dial() ja Connect():llä. Jokainen toiminto palauttaa tyypitetyn tuloksen joten koodi tietää aina mitä tapahtui ja voi käsitellä jokaisen tuloksen.

Äänen striimaus tekoälylle ja puheesta-tekstiin

StartStream ja StopStream toiminnot antavat sinulle mahdollisuuden striimata live puheluiden ääntä mihin tahansa WebSocket-päätepisteeseen reaaliajassa. Näin yhdistät puhelun tekoälyassistenttiin, puheesta-tekstiin moottoriin tai mukautettuun analytiikkapalveluun.

Hallitset milloin striimaus alkaa, mihin suuntaan ääni virtaa (soittajasta tekoälyyn, agentista tekoälyyn vai molempia) ja milloin se pysähtyy. Virta toimii muiden IVR-toimintojen rinnalla — joten voit jatkaa promptien toistoa, syötteen keräämistä tai puhelun siirtämistä tekoälyn käsitellessä ääntä taustalla.

Kuka käyttää IVR-työkalupakkia

Työkalupakki on suunniteltu kehitystiimeille, jotka tarvitsevat täydellisen hallinnan puheluiden käyttäytymiseen. SaaS-alustat lisäävät ääniominaisuuksia tuotteisiin. Puhelukeskukset rakentavat mukautettua reitityslogiikkaa. Yritykset integrovat puheluita CRM:ään, ERP:ään tai sisäisiin työkaluihin.

Jos tiimilläsi on kehittäjiä, jotka voivat kirjoittaa taustajärjestelmän koodia, IVR-työkalupakki antaa heille kaiken mitä tarvitsevat rakentamaan ammattilaiset puheluiden virtaukset — yksinkertaisista valikoista monimutkaisiin tekoälyä hyödyntäviin keskusteluihin. Dokumentaatio, koodin esimerkit ja kehittäjän tuki sisältyvät.

Suhde työkalupakin ja alustan ominaisuuksien välillä

Jokainen CallFactory-ominaisuus — puhelinvalikot, puhelujonot, vastaajapalvelu, voicebotit — rakennetaan samalle IVR-toiminnoille, jotka dokumentoidaan tässä työkalupakissa. Työkalupakki antaa sinulle suoran pääsyn samoille rakennuspalikoille.

Tämä tarkoittaa että mikä tahansa CallFactory voi tehdä, kehitystiimisi voi tehdä myös — ja enemmän. Voit yhdistää vakioominaisuudet mukautettuun logiikkaan, lisätä integrointeja, joita ei ole vakioominaisuuksissa ja rakentaa puheluiden virtauksia, jotka ovat ainutlaatuisia liiketoiminnallesi.

Pääsyn alkaminen

Ota yhteyttä keskustellaksesi vaatimuksistasi. Tarjoamme tiimille pääsyn työkalupakin dokumentaatioon, koodin esimerkkeihin ja kehitysympäristöön. Jos tarvitset apua ensimmäisen puheluiden virtauksen suunnittelussa, tiimimmämme voi antaa neuvoja arkkitehtuurista ja parhaista käytännöistä.

Yrityksille, joilla on maksimaalinen kapasiteetti ja eristyminen, luonnollinen päivityspolku on varatut IVR-palvelimet — täysin yksityinen ympäristö, jossa mukautetut puheluiden virtaukset ajavat infrastruktuuria, joka on varattua vain sinulle.

IVR toolkit Usein kysytyt kysymykset

Saa selkeitä vastauksia IVR-työkalupakista ja miten se toimii yrityksellesi.

Kyllä. Työkalupakki on suunniteltu kehitystiimeille, jotka kirjoittavat taustakoodia. Jokainen toiminto omaa selkeän signatuurin ja tyypitetyt palautusarvot. Jos sinulla ei ole kehittäjiä, harkitse meidän valmis-ratkaisusi tai voicebotia.

Työkalupakki käyttää C# (.NET) pääkielenä. Kaikki toiminnot, signatuurit ja esimerkit dokumentaatiossa ovat C#:ssa.

Kyllä. StartStream-toiminto avaa reaaliaikaisen WebSocket-yhteyden mihin tahansa päätepisteeseen — tekoälyassistenttiin, puheesta-tekstiin moottoriin tai omaan palveluun. Hallitset äänen suuntaa ja voit pysäyttää virran milloin tahansa.

Kyllä. Kaikki IVR-toiminnot toimivat nykyisten CallFactory-numerojesi ja reitiyksesi kanssa. Puheluasetusten muutoksia ei tarvita.

Kyllä. Työkalupakki käyttää samoja rakennuspalikkoja kaikille CallFactory-ominaisuuksille. Voit käyttää vakioominaisuuksia kuten puhelinvalikoita ja puhelujonoja mukautetun logiikan rinnalla.

Jokainen toiminto tukee peruutustokeneita. Kun soittaja katkaisi, token peruutetaan ja koodi saa puhtaan signaalin pysäyttää käsittely. Ei orpoutuneita yhteyksiä tai käsittelemättömiä tiloja.

Kyllä. Tiimimmämme voi antaa neuvoja arkkitehtuurista, tarkistaa kulun suunnittelua ja auttaa edistyneemmissä integroinneissa. Täysin hallittuja ratkaisuja varten katso mukautettu puhelupalvelumme ja voicebotit.

Työkalupakki on saatavilla CallFactory-asiakkaille. Toteutuksen monimutkaisuudesta ja isäntöintövaatimuksista riippuen voidaan vaatia lisämaksuja. Keskustelemme hinnoittelusta ennen kuin työ alkaa.

Tyytyväiset Callfactory-asiakkaat:

SignDirect logo
Bosch logo
Trigion logo
ANWB logo
UWV logo
Sogeti logo
Dille & Kamille logo
Nationale Ombudsman logo
KRO-NCRV logo
Swiss Sense logo