IVR toolkit
Rakenna täysin räätälöityjä puhelukuluja ja automatisoi jokainen asiakasvuorovaikutuksen vaihe tehokkaalla IVR-toimintojen työkalupakillamme.
Käytä yksinkertaisia komentoja äänitiedostojen toistamiseen, numeroiden keräämiseen, soittajien yhdistämiseen, logiikan käynnistämiseen, äänen suoratoistoon tekoälyjärjestelmiin ja muuhun - kaikki nykyisen puhelinjärjestelmäsi sisällä.
- Integroi tekoäly, automaatio tai mukautettu taustajärjestelmälogiikka
- Rakenna täydellisiä IVR-kulkuja ilman lisälaitteita
- Hallitse puheluiden käyttäytymistä tarkoilla komennoilla
IVR-työkalupakin edut
Tutustu siihen, miten ominaisuutemme auttavat sinua työskentelemään fiksummin, säästämään aikaa ja parantamaan yrityksesi viestintää.
Joustava puheluautomaatio
Määritä tarkalleen, miten kunkin puhelun tulisi käyttäytyä. Toista kehotteita, kerää syötteitä, reititä soittajia tai suorita ehdollista logiikkaa - kaikki yhdestä selkeästä, kehittäjäystävällisestä työkalupakista.
Suunniteltu kehitystiimeille
Käytä strukturoituja toimintoja, jotka sopivat luonnollisesti taustajärjestelmälogiikkaasi. Jokaisella toiminnolla on ennustettavat tulokset, virheenkäsittely ja esimerkkejä, jotka auttavat sinua rakentamaan itsevarmasti.
Toimii nykyisen järjestelmäsi kanssa
Uutta infrastruktuuria ei tarvita. Käytä Callfactory-numeroasi ja yksinkertaisesti laajenna puhelulogiikkaasi API:n, skriptiesi tai sisäisten automaatiotyökalujen avulla.
IVR-toimintojen työkalupakki
Napsauta toimintoa nähdäksesi sen kuvauksen, allekirjoituksen ja esimerkkejä.
Vastaa saapuvaan puheluun. On kutsuttava ennen äänen toistamista tai syötteen keräämistä saapuvassa puhelussa.
Description
- Merkitsee puhelun vastatuksi puhelinjärjestelmän puolella.
- Vaaditaan ennen toimintojen, kuten
Play,PromptDigit,GatherDigits,Dial,Record, jne., käyttöä saapuvissa puheluissa.
Throws
InvalidOperationException- jos puheluun on jo vastattu.
Signature
void Answer();Example
protected override async Task
HandleCallAsync(CancellationToken ct)
{
// Vastaa aina ensin saapuviin puheluihin
Answer();
await Play("welcome.wav", ct);
}
Toistaa äänitiedoston soittajalle tai lähtevälle kanavalle.
Description
- Toistaa äänitiedoston (esim.
.wav), joka sijaitsee palvelimen äänitiedostohakemistossa. - Voi kohdistaa saapuvaan soittajaan tai tiettyyn OutboundChannel-kanavaan.
Parameters
audioFile- Tiedostonimi/-polku suhteessa IVR-äänihakemistoon.channel- (valinnainen) Lähtevä kanava, jolle ääni toistetaan.ct- Cancellation token; peruutetaan, kun soittaja tai kanava katkaisee yhteyden.
Returns
PlayResult.Success- Ääni toistettu kokonaan.PlayResult.Fail- Toisto epäonnistui (esim. virheellinen tiedosto).PlayResult.Cancel- Toiminto peruutettu (esim. soittaja sulki puhelun).PlayResult.Error- Odottamaton virhe toiston aikana.
Throws
OperationCanceledException- Jos ct peruutetaan toiston aikana.- Muut siirto-/IO-poikkeukset toteutuksesta riippuen.
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("Tervetuloviestin toistaminen epäonnistui (Tulos:
{Result})", result); return;
}
await Play("next_prompt.wav", ct);
}
Toistaa äänikehotteen ja kerää yhden DTMF-numeron.
Description
- Toistaa valikkokehotteen (esim. ‘Paina 1 myyntiin, 2 tukeen, 3 jättääksesi viestin’).
- Odottaa yhtä DTMF-numeroa: 0-9, *, tai #.
- Tarkoitettu päävalikon valintoihin.
Parameters
audioFile- Kehotetiedosto toistettavaksi.timeoutSeconds- Kuinka kauan odottaa numeroa (oletus 10).ct- Cancellation token; peruutettu, kun soittaja katkaisee yhteyden.
Returns
MenuResult.SuccessDigit-arvolla, kun numero vastaanotetaan.MenuResult.Timeout, kun numeroa ei vastaanotetatimeoutSecondsaikana.MenuResult.Cancel, kun toiminto peruutetaan.
Throws
OperationCanceledException- Jos ct peruutetaan (esim. soittaja sulkee puhelun).
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);
}
}
Toistaa kehotteen ja kerää useita DTMF-numeroita (esim. tilinumero, PIN).
Description
- Toistaa kehotteen, joka pyytää soittajaa syöttämään useita numeroita.
- Pysähtyy, kun joko:
maxDigitssaavutetaan
- Lopetusnumeroa (esim. #) painetaan
- Aikakatkaisu umpeutuu
Parameters
audioFile– Kehote toistettavaksi (esim. “Syötä tilinumerosi ja paina #”).maxDigits– Maksimimäärä numeroita kerättäväksi ennen pysähtymistä.terminationDigits– Numerosarja, joka lopettaa keräämisen, kun se syötetään.timeoutSeconds– Maksimiaika odottaa syötettä.ct– Cancellation token.
Returns
- Tuple (
GatherResult Result,string? Digits): GatherResult.Successja Digits asetettu, kun syöte on kerätty.GatherResult.Timeout, kun syötettä ei vastaanotettu.GatherResult.Cancel, kun toiminto peruutetaan.GatherResult.Errorodottamattomassa virheessä.
Throws
OperationCanceledException- Jos ct peruutetaan (soittaja sulkee puhelun).
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);
}
}
Soittaa yhteen tai useampaan lähtevään puhelinnumeroon ja palauttaa OutboundChannel-kanavan, kun vastataan.
Description
- Aloittaa lähtevän puhelun yhteen kohteeseen tai useisiin kohteisiin rinnakkain.
- Useille kohteille ensimmäinen vastaaja voittaa; kaikki muut peruutetaan.
Parameters
destination/destinations– Puhelinnumero(t) soitettavaksi.callerId– Numero, joka näytetään soittajan tunnuksena.ringTimeoutSeconds– Maksimiaika soida ennen luovuttamista.ct– Cancellation token.
Returns
- Yksittäinen kohde:
(DialerResult Result, OutboundChannel? Channel)- Useita kohteita:
(DialerResult Result, string? AnsweredDestination, OutboundChannel? Channel)DialerResultvoi olla: Init, Ringing, Answered, Busy, Rejected, NoAnswer, Failed, Cancel.
Throws
OperationCanceledException– Jos toiminto peruutetaan soittamisen aikana.
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("Yhdistetty myyntiedustajaan {Number}", answeredNumber);
await Connect(channel, ct);
}
else
{
await Play("sales_unavailable.wav", ct);
await HandleVoicemail(ct);
}
}
Yhdistää äänen kahden kanavan välillä.
Description
- Saapuville kuluille: yhdistää saapuvan soittajan lähtevään kanavaan.
- Vain lähteville skenaarioille: yhdistää kaksi lähtevää kanavaa yhteen.
- Estää, kunnes toinen osapuoli sulkee puhelun tai yhteys muuten katkaistaan.
Parameters
channel– Lähtevä kanava yhdistettäväksi saapuvaan puheluun.primary,secondary– Kaksi lähtevää kanavaa yhdistettäväksi.ct– Cancellation token.
Returns
ConnectResult.Success– Yhteys päättyi normaalisti (puhelu lopetettu).ConnectResult.Error– Yhteyttä ei voitu muodostaa tai se epäonnistui.
Throws
OperationCanceledException– Jos ct peruutetaan yhdistettynä ollessa.
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("Yhteys päättyi tuloksella: {Result}", connectResult);
}
else
{
await Play("agent_unavailable.wav", ct);
}
await Hangup(ct);
}
Tallentaa ääntä soittajalta tai lähtevältä kanavalta.
Description
- Aloittaa tallennuksen joko saapuvalta soittajalta tai tietyltä lähtevältä kanavalta.
- Päättyy kun:
timeLimitSecondssaavutetaan
- Lopetusnumeroa painetaan (jos määritetty)
- Soittaja tai kanava sulkee puhelun
Parameters
timeLimitSeconds– Maksimi tallennusaika.fileName– Valinnainen mukautettu tiedostonimi (luodaan automaattisesti, kun null).terminationDigits– DTMF-numerot, jotka pysäyttävät tallennuksen.playBeep– Toistetaanko piippaus ennen tallennusta.channel– Valinnainen lähtevä kanava.ct– Cancellation token.
Returns
- Tuple (
RecordResult Result,string? FilePath): RecordResult.SuccessjaFilePathon tallennettu.RecordResult.Timeout,MaxDurationReached,TerminationDigit,Cancel,Error.
Throws
OperationCanceledExceptionjos peruutettu.
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("Vastaajaviesti tallennettu polkuun {Path}", filePath);
await Play("thank_you_message_received.wav", ct);
}
else
{
Logger.LogWarning("Tallennus epäonnistui: {Result}", recordResult);
await Play("recording_failed.wav", ct);
}
await Hangup(ct);
}
Hylkää saapuvan puhelun SIP-sykoodilla ja lopettaa puhelun.
Description
- Käytetään puheluiden suodattamiseen, estämiseen ja työajan ulkopuoliseen käyttäytymiseen.
- Palauttaa SIP-virhekoodin ylävirran operaattorille.
Parameters
reason–RejectReason.Busy,.TemporarilyUnavailable,.Declined.ct– Cancellation token.
Returns
RejectResult.Success– Puhelu hylätty.RejectResult.AlreadyAnswered– Puhelu jo vastattu.RejectResult.Error– Hylkääminen epäonnistui.
Throws
OperationCanceledExceptionjos peruutettu.
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;
}
// Normaali kulku
Answer();
await Play("welcome.wav", ct);
}
Lopettaa aktiivisen puhelun siististi.
Description
- Lopettaa puhelun IVR-puolelta.
Returns
HangupResult.Success– Puhelu lopetettu onnistuneesti.HangupResult.NotAnswered– Ei koskaan vastattu.HangupResult.AlreadyDisconnected– Soittaja sulki puhelun.HangupResult.Error– Lopetus epäonnistui.
Throws
OperationCanceledExceptionjos peruutettu.
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-tulos: {Result}", result);
}
Pysäyttää suorituksen tietyksi sekuntimääräksi.
Description
- Odottaa durationSeconds-ajan pitäen puhelun auki.
- Voidaan keskeyttää DTMF-syötteellä toteutuksesta riippuen.
Parameters
durationSeconds– Kesto sekunneissa.ct– Cancellation token.
Returns
PauseResult.Success– Tauko suoritettu normaalisti.PauseResult.Interrupted– Soittaja painoi näppäintä tauon aikana (jos tuettu).PauseResult.Cancel– Toiminto peruutettu.PauseResult.Error– Tauko 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ähettää varattu-signaalin soittajalle ja lopettaa puhelun.
Description
- Esittää tavallisen varattu-äänen.
- Yleisesti käytössä, kun kaikki agentit/linjat ovat varattuja.
Returns
BusyResult.Success– Varattu-signaali lähetetty ja puhelu lopetettu.BusyResult.Cancel– Toiminto peruutettu.BusyResult.Error– Varattu-signaalin lähettäminen tai puhelun lopettaminen epäonnistui.
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-tulos: {Result}", result);
return;
}
// Muuten jatka normaalilla kululla
Answer();
await Play("welcome.wav", ct);
}
Aloittaa puhelun live-äänen suoratoiston ulkoiseen päätepisteeseen (esim. AI tai STT-moottori).
Description
- Avaa reaaliaikaisen mediavirran puhelusta annettuun url-osoitteeseen (esim. WebSocket-päätepiste).
- Tyypillisesti käytetään äänen lähettämiseen:
- tekoälyavustajalle,
- puheesta tekstiksi -moottorille,
- mukautettuun analytiikka-/valvontapalveluun.
- Vain yksi aktiivinen virta puhelua kohden on suositeltavaa.
Parameters
url– Kohdesuoratoistopäätepiste (esim.wss://ai.callfactory.nl/voice-stream).options– Valinnainen suoratoistokonfiguraatio (suunta, metatiedot, nimi).ct– Cancellation token. Jos peruutetaan, virta puretaan.
Throws
OperationCanceledException– Jos ct peruutetaan asennuksen aikana.- Yhteys-/siirtopoikkeukset toteutuksesta riippuen.
Allekirjoitukset
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, // Soittajalta tekoälylle
Outbound, // Agentilta/järjestelmältä tekoälylle
Both // Molemmat
}
Palautusarvot
public enum StreamResult
{
Started, // Virran aloitus onnistui
Stopped, // Virran pysäytys onnistui (StopStream:ille)
AlreadyStarted, // Virta on jo aktiivinen
NotActive, // Ei aktiivista virtaa (StopStream:ille)
Error // Aloitus/pysäytys epäonnistui
}
Example
protected override async Task
HandleCallAsync(CancellationToken ct)
{
Answer();
// Aloita soittajan äänen suoratoisto tekoälylle
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("Tekoälyvirran aloitus epäonnistui:
{Result}", streamResult);
await Play("ai_unavailable.wav", ct);
await Hangup(ct);
return;
}
await Play("connected_to_ai.wav", ct);
// Jatka IVR-logiikkaa samalla kun suoratoisto on aktiivinen...
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);
}
}
Pysäyttää aktiivisen äänivirran, joka aloitettiin aiemmin StartStream-toiminnolla.
Description
- Sulkee aktiivisen mediavirran siististi.
- Ei lopeta puhelua - vain lopettaa äänen lähettämisen.
- Turvallista kutsua, vaikka aktiivista virtaa ei olisi (palauttaa
NotActive).
Parameters
ct– Cancellation token.
Returns
StreamResult.Stopped– Virta pysäytetty onnistuneesti.StreamResult.NotActive– Aktiivista virtaa ei löytynyt.StreamResult.Error– Virran pysäyttäminen epäonnistui.
Throws
OperationCanceledException– Josctperuutetaan.
Signatures
Task<StreamResult> StopStream(
CancellationToken ct = default);
Example
private async Task TransferToHuman(CancellationToken ct)
{
// Pysäytä tekoälysuoratoisto ennen siirtoa ihmiselle
var stopResult = await StopStream(ct);
Logger.LogInformation("StopStream-tulos: {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);
}
}
Miksi se on tärkeää
IVR-työkalupakki antaa tiimillesi täydellisen hallinnan puhelukuluista. Yksinkertaisista valikoista monimutkaisiin tekoälyohjattuihin vuorovaikutuksiin - kaikki on mahdollista toimintokirjastollamme.
Nämä työkalut ovat erityisen hyödyllisiä tiimeille, jotka rakentavat mukautettuja puhelinratkaisuja, toteuttavat tekoälyintegraatioita tai laajentavat olemassa olevia järjestelmiä edistyneellä puhelulogiikalla.
Tämä ominaisuus sisältyy ilmaiseksi jokaiseen yritysnumeroon tai kansainväliseen numeroon.
Lue lisää muista ominaisuuksista
Löydä lisätietoja ominaisuuksistamme, jotka voivat tehostaa yrityksesi viestintää.
IVR-työkalupakin UKK
Hanki selkeitä vastauksia IVR-työkalupakista ja siitä, miten se toimii yrityksellesi.
Voit rakentaa kulkuja käyttämällä IVR-toimintojamme kojelaudassasi. Jokainen toiminto sisältää esimerkkejä, allekirjoituksia ja ennustettavaa käyttäytymistä, joten voit toteuttaa logiikkaa tarvitsematta uutta puhelinlaitteistoa.
Voit luoda yksinkertaisia kulkuja ilman koodausta, mutta työkalupakki on rakennettu tiimeille, jotka haluavat automatisoida tai integroida logiikkaa. Kehittäjät voivat käyttää strukturoituja toimintoja kehotteiden käynnistämiseen, numeroiden sieppaamiseen tai soittajien yhdistämiseen ohjelmallisesti.
Kyllä. Voit käynnistää API-kutsuja, lähettää dataa taustajärjestelmääsi tai suoratoistaa ääntä tekoäly- tai STT-palveluihin. Työkalupakki sopii luonnollisesti olemassa olevaan infrastruktuuriisi.
Ehdottomasti. Sinun ei tarvitse muuttaa asetuksiasi. Kaikki IVR-toiminnot toimivat olemassa olevien Callfactory-numeroidesi, reitityksen ja puheluasetusten kanssa.
Kyllä. Voit rakentaa ja esikatsella kulkujasi turvallisesti. Työkalupakin avulla voit simuloida kehotteita, syötteen keräämistä ja reitityskäyttäytymistä ennen muutosten aktivoimista oikeille soittajille.
Sinä päätät käyttäytymisestä. Voit toistaa kehotteen, reitittää vastaajaan, yhdistää tukeen tai lopettaa puhelun. Jokainen IVR-toiminto tukee mukautettua virheenkäsittelyä.
Kyllä. Jokainen toiminto sisältää aikakatkaisun käsittelyn ja valinnaisen varalogiikan. Voit määrittää, mitä tapahtuu, kun syötettä ei vastaanoteta tai kun soittaja sulkee puhelun.
Kyllä. Työkalupakki suunniteltiin toimintojen ketjuttamiseen. Voit toistaa ääntä, kerätä numeroita, suorittaa logiikkaa, kutsua API:ta ja siirtää soittajia - kaikki yhdessä kulussa.
Kyllä. Järjestelmä on suunniteltu luotettavuutta ja skaalautuvuutta varten. Olipa sinulla pieni yritys tai suuren volyymin puhelinpalvelukeskus, kaikki toiminnot tarjoavat ennustettavaa suorituskykyä.
Jos tiimisi tarvitsee ohjausta, voimme auttaa tarkistamaan kulkusuunnitelmasi, testaamaan konfiguraatiotasi tai tukemaan edistyneempää reitityslogiikkaa.









