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.SuccessDigit-asetuksella kun numero vastaanotetaan.MenuResult.Timeoutkun numeroa ei vastaanotettutimeoutSecondssisällä.MenuResult.Cancelkun 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:
maxDigitssaavutetaan
- 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.Successja Digits asetettu kun syöte kerätään.GatherResult.Timeoutkun syöttöä ei vastaanotettu.GatherResult.Cancelkun toiminto peruutetaan.GatherResult.Errorodottamattomassa 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)DialerResultvoi 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:
timeLimitSecondssaavutetaan
- 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.SuccessjaFilePathtallennettu.RecordResult.Timeout,MaxDurationReached,TerminationDigit,Cancel,Error.
Throws
OperationCanceledExceptionjos 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
reason–RejectReason.Busy,.TemporarilyUnavailable,.Declined.ct– Peruutustoken.
Returns
RejectResult.Success– Puhelu hylätty.RejectResult.AlreadyAnswered– Puhelu jo vastattu.RejectResult.Error– Epäonnistui hylätä.
Throws
OperationCanceledExceptionjos 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
OperationCanceledExceptionjos 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– Josctperuutetaan.
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.
Lue lisää muista ominaisuuksista
Etsi lisätietoja ominaisuuksista, jotka voivat parantaa liiketoimintaviestiäsi.
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.









