Uzyskaj numery lokalne, krajowe i międzynarodowe bezpośrednio online.
🤖 IVR gotowy na AI

IVR toolkit

Buduj w pełni spersonalizowane przepływy połączeń i automatyzuj każdy krok interakcji z klientami dzięki naszemu potężnemu zestawowi narzędzi IVR.

Używaj prostych poleceń, aby odtwarzać dźwięk, zbierać cyfry, łączyć dzwoniących, uruchamiać logikę, przesyłać dźwięk do systemów AI i więcej - wszystko w ramach Twojej istniejącej konfiguracji telefonicznej.

  • Integruj AI, automatyzację lub niestandardową logikę back-endową
  • Twórz kompletne przepływy IVR bez dodatkowego sprzętu
  • Kontroluj zachowanie połączeń za pomocą precyzyjnych poleceń

Zalety funkcji Zestaw narzędzi IVR

Odkryj, jak nasze funkcje pomagają pracować mądrzej, oszczędzać czas i ulepszać sposób, w jaki Twoja firma się komunikuje.

🧩

Elastyczna automatyzacja połączeń

Zdefiniuj dokładnie, jak ma zachowywać się każde połączenie. Odtwarzaj komunikaty, zbieraj dane wejściowe, kieruj dzwoniących lub uruchamiaj logikę warunkową - wszystko z jednego przejrzystego, przyjaznego dla programistów zestawu narzędzi.

⚙️

Zaprojektowane dla zespołów deweloperskich

Używaj ustrukturyzowanych akcji, które naturalnie pasują do Twojej logiki backendowej. Każda akcja ma przewidywalne wyniki, obsługę błędów i przykłady, które pomogą Ci budować z pewnością.

🔧

Działa z Twoją istniejącą konfiguracją

Nie wymaga nowej infrastruktury. Użyj swojego numeru Callfactory i po prostu rozszerz swoją logikę połączeń poprzez API, swoje skrypty lub wewnętrzne narzędzia automatyzacji.

Zestaw Narzędzi Akcji IVR

Kliknij na akcję, aby zobaczyć jej opis, sygnaturę i przykłady.

Odbiera połączenie przychodzące. Musi zostać wywołane przed odtworzeniem dźwięku lub zebraniem danych wejściowych w połączeniu przychodzącym.

Description

  • Oznacza połączenie jako odebrane po stronie telefonii.
  • Wymagane przed użyciem akcji takich jak Play, PromptDigit, GatherDigits, Dial, Record, itp., w połączeniach przychodzących.

Throws

  • InvalidOperationException - jeśli połączenie zostało już odebrane.

Signature

void Answer();

Example

protected override async Task 
HandleCallAsync(CancellationToken ct)
{
    // Zawsze odbieraj najpierw połączenia przychodzące
    Answer();

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

Odtwarza plik audio dzwoniącemu lub na kanał wychodzący.

Description

  • Odtwarza plik audio (np. .wav) znajdujący się w katalogu audio serwera.
  • Może być skierowany do dzwoniącego przychodzącego lub określonego OutboundChannel.

Parameters

  • audioFile - Nazwa/ścieżka pliku względem katalogu audio IVR.
  • channel - (opcjonalnie) Kanał wychodzący, na którym ma być odtwarzany dźwięk.
  • ct - Token anulowania; anulowany, gdy dzwoniący lub kanał się rozłączy.

Returns

  • PlayResult.Success - Audio odtworzone w całości.
  • PlayResult.Fail - Odtwarzanie nie powiodło się (np. nieprawidłowy plik).
  • PlayResult.Cancel - Operacja anulowana (np. dzwoniący się rozłączył).
  • PlayResult.Error - Nieoczekiwany błąd podczas odtwarzania.

Throws

  • OperationCanceledException - Jeśli ct zostanie anulowany podczas odtwarzania.
  • Inne wyjątki transportu/wejścia-wyjścia w zależności od implementacji.

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("Nie udało się odtworzyć wiadomości powitalnej (Wynik:
        {Result})", result); return;
    }

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

Odtwarza monit audio i zbiera pojedynczą cyfrę DTMF.

Description

  • Odtwarza monit menu (np. ‘Naciśnij 1 dla sprzedaży, 2 dla wsparcia, 3 aby zostawić wiadomość’).
  • Czeka na pojedynczą cyfrę DTMF: 0-9, *, lub #.
  • Przeznaczone dla wyborów menu głównego.

Parameters

  • audioFile - Plik monitu do odtworzenia.
  • timeoutSeconds - Jak długo czekać na cyfrę (domyślnie 10).
  • ct - Token anulowania; anulowany, gdy dzwoniący się rozłączy.

Returns

  • MenuResult.Success z ustawioną Digit, gdy cyfra zostanie odebrana.
  • MenuResult.Timeout gdy żadna cyfra nie zostanie odebrana w ciągu timeoutSeconds.
  • MenuResult.Cancel gdy operacja zostanie anulowana.

Throws

  • OperationCanceledException - Jeśli ct zostanie anulowany (np. dzwoniący się rozłączy).

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);
    }
}

Odtwarza monit i zbiera wiele cyfr DTMF (np. numer konta, PIN).

Description

  • Odtwarza monit proszący dzwoniącego o wprowadzenie kilku cyfr.
  • Zatrzymuje się, gdy:
    • osiągnięto maxDigits
    • naciśnięto cyfrę kończącą (np. #)
    • upłynął limit czasu

Parameters

  • audioFile – Monit do odtworzenia (np. “Wprowadź numer konta, a następnie #”).
  • maxDigits – Maksymalna liczba cyfr do zebrania przed zatrzymaniem.
  • terminationDigits – Ciąg cyfr, które kończą zbieranie po wprowadzeniu.
  • timeoutSeconds – Maksymalny czas oczekiwania na dane wejściowe.
  • ct – Token anulowania.

Returns

  • Krotka (GatherResult Result, string? Digits):
  • GatherResult.Success i Digits ustawione, gdy dane wejściowe zostaną zebrane.
  • GatherResult.Timeout gdy nie otrzymano danych wejściowych.
  • GatherResult.Cancel gdy operacja zostanie anulowana.
  • GatherResult.Error przy nieoczekiwanym błędzie.

Throws

  • OperationCanceledException - Jeśli ct zostanie anulowany (dzwoniący się rozłączy).

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);
    }
}

Wybiera jeden lub więcej numerów telefonu wychodzącego i zwraca OutboundChannel po odebraniu.

Description

  • Inicjuje połączenie wychodzące do pojedynczego miejsca docelowego lub do wielu miejsc docelowych równolegle.
  • W przypadku wielu miejsc docelowych, pierwsze, które odbierze, wygrywa; wszystkie inne są anulowane.

Parameters

  • destination / destinations – Numer(y) telefonu do wybrania.
  • callerId – Numer do zaprezentowania jako ID dzwoniącego.
  • ringTimeoutSeconds – Maksymalny czas dzwonienia przed rezygnacją.
  • ct – Token anulowania.

Returns

  • Pojedyncze miejsce docelowe:
  • (DialerResult Result, OutboundChannel? Channel)
  • Wiele miejsc docelowych:
  • (DialerResult Result, string? AnsweredDestination, OutboundChannel? Channel)
  • DialerResult może być: Init, Ringing, Answered, Busy, Rejected, NoAnswer, Failed, Cancel.

Throws

  • OperationCanceledException – Jeśli operacja zostanie anulowana podczas wybierania numeru.

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);

Przykład (pojedyncze miejsce docelowe)

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);
    }
}

Przykład (wiele miejsc docelowych)

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("Połączono z agentem sprzedaży {Number}", answeredNumber);
        await Connect(channel, ct);
    }
    else
    {
        await Play("sales_unavailable.wav", ct);
        await HandleVoicemail(ct);
    }
}

Łączy audio między dwoma kanałami.

Description

  • Dla przepływów przychodzących: łączy dzwoniącego przychodzącego z kanałem wychodzącym.
  • Tylko dla scenariuszy wychodzących: łączy dwa kanały wychodzące razem.
  • Blokuje do momentu, aż jedna ze stron się rozłączy lub połączenie zostanie w inny sposób zakończone.

Parameters

  • channel – Kanał wychodzący do połączenia z połączeniem przychodzącym.
  • primary, secondary – Dwa kanały wychodzące do połączenia.
  • ct – Token anulowania.

Returns

  • ConnectResult.Success – Połączenie zakończone normalnie (rozłączenie).
  • ConnectResult.Error – Połączenie nie mogło zostać nawiązane lub nie powiodło się.

Throws

  • OperationCanceledException – Jeśli ct zostanie anulowany podczas połączenia.

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("Połączenie zakończone z wynikiem: {Result}", connectResult);
    }
    else
    {
        await Play("agent_unavailable.wav", ct);
    }

    await Hangup(ct);
}

Nagrywa dźwięk od dzwoniącego lub z kanału wychodzącego.

Description

  • Rozpoczyna nagrywanie od dzwoniącego przychodzącego lub z określonego kanału wychodzącego.
  • Kończy się, gdy:
    • osiągnięto timeLimitSeconds
    • naciśnięto cyfrę kończącą (jeśli skonfigurowano)
    • dzwoniący lub kanał się rozłączy

Parameters

  • timeLimitSeconds – Maksymalna długość nagrania.
  • fileName – Opcjonalna niestandardowa nazwa pliku (generowana automatycznie, jeśli null).
  • terminationDigits – Cyfry DTMF, które zatrzymują nagrywanie.
  • playBeep – Czy odtworzyć sygnał dźwiękowy przed nagrywaniem.
  • channel – Opcjonalny kanał wychodzący.
  • ct – Token anulowania.

Returns

  • Krotka (RecordResult Result, string? FilePath):
  • RecordResult.Success z FilePath jest zapisany.
  • RecordResult.Timeout, MaxDurationReached, TerminationDigit, Cancel, Error.

Throws

  • OperationCanceledException jeśli anulowano.

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("Wiadomość głosowa zapisana w {Path}", filePath);
        await Play("thank_you_message_received.wav", ct);
    }
    else
    {
        Logger.LogWarning("Nagrywanie nie powiodło się: {Result}", recordResult);
        await Play("recording_failed.wav", ct);
    }

    await Hangup(ct);
}

Odrzuca połączenie przychodzące z kodem przyczyny SIP i kończy połączenie.

Description

  • Używane do filtrowania połączeń, blokowania i zachowania poza godzinami pracy.
  • Zwraca kod błędu SIP do operatora nadrzędnego.

Parameters

  • reasonRejectReason.Busy, .TemporarilyUnavailable, .Declined.
  • ct – Token anulowania.

Returns

  • RejectResult.Success – Połączenie odrzucone.
  • RejectResult.AlreadyAnswered – Połączenie już odebrane.
  • RejectResult.Error – Nie udało się odrzucić.

Throws

  • OperationCanceledException jeśli anulowano.

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;
    }

    // Normalny przepływ
    Answer();
    await Play("welcome.wav", ct);
}

Czysto kończy aktywne połączenie.

Description

  • Kończy połączenie ze strony IVR.

Returns

  • HangupResult.Success – Połączenie zakończone pomyślnie.
  • HangupResult.NotAnswered – Nigdy nie odebrano.
  • HangupResult.AlreadyDisconnected – Dzwoniący się rozłączył.
  • HangupResult.Error – Rozłączenie nie powiodło się.

Throws

  • OperationCanceledException jeśli anulowano.

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("Wynik rozłączenia: {Result}", result);
}

Wstrzymuje wykonywanie na podaną liczbę sekund.

Description

  • Czeka przez durationSeconds utrzymując połączenie otwarte.
  • Może zostać przerwane przez wejście DTMF w zależności od implementacji.

Parameters

  • durationSeconds – Czas trwania w sekundach.
  • ct – Token anulowania.

Returns

  • PauseResult.Success – Pauza zakończona normalnie.
  • PauseResult.Interrupted – Dzwoniący nacisnął klawisz podczas pauzy (jeśli obsługiwane).
  • PauseResult.Cancel – Operacja anulowana.
  • PauseResult.Error – Pauza nie powiodła się.

Throws

  • OperationCanceledException – Jeśli ct zostanie anulowany.

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);
}

Wysyła sygnał zajętości do dzwoniącego i kończy połączenie.

Description

  • Prezentuje standardowy ton zajętości.
  • Powszechnie używane, gdy wszyscy agenci/linie są zajęte.

Returns

  • BusyResult.Success – Sygnał zajętości wysłany i połączenie zakończone.
  • BusyResult.Cancel – Operacja anulowana.
  • BusyResult.Error – Nie udało się wysłać sygnału zajętości lub zakończyć połączenia.

Throws

  • OperationCanceledException – Jeśli ct zostanie anulowany.

Signature

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

Example

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

    // W przeciwnym razie kontynuuj normalny przepływ
    Answer();
    await Play("welcome.wav", ct);
}

Rozpoczyna przesyłanie strumieniowe dźwięku na żywo z połączenia do zewnętrznego punktu końcowego (np. silnik AI lub STT).

Description

  • Otwiera strumień medialny w czasie rzeczywistym z połączenia do podanego adresu url (np. punkt końcowy WebSocket).
  • Zazwyczaj używane do wysyłania dźwięku do:
    • asystenta AI,
    • silnika zamiany mowy na tekst,
    • niestandardowej usługi analitycznej/monitorującej.
  • Zalecany jest tylko jeden aktywny strumień na połączenie.

Parameters

  • url – Docelowy punkt końcowy strumieniowania (np. wss://ai.callfactory.nl/voice-stream).
  • options – Opcjonalna konfiguracja strumieniowania (kierunek, metadane, nazwa).
  • ct – Token anulowania. Jeśli anulowany, strumień jest zrywany.

Throws

  • OperationCanceledException – Jeśli ct anulowany podczas konfiguracji.
  • Wyjątki połączenia/transportu w zależności od implementacji.

Sygnatury

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

Parametry

public class StreamOptions
{
    public string? Name { get; set; }                           //
Opcjonalna nazwa strumienia
    public StreamDirection Direction { get; set; } =
        StreamDirection.Both;
    public Dictionary<string, string>? Metadata { get; set; }
}

public enum StreamDirection
{
    Inbound,   // Od dzwoniącego do AI
    Outbound,  // Od agenta/systemu do AI
    Both       // Oba
}

Zwraca

public enum StreamResult
{
    Started,        // Strumień pomyślnie rozpoczęty
    Stopped,        // Strumień pomyślnie zatrzymany (dla
StopStream)
    AlreadyStarted, // Strumień jest już aktywny
    NotActive,      // Brak aktywnego strumienia (dla StopStream)
    Error           // Nie udało się rozpocząć/zatrzymać
}

Example

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

    // Rozpocznij przesyłanie strumieniowe dźwięku dzwoniącego do AI
    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("Nie udało się uruchomić strumienia AI:
{Result}", streamResult);
        await Play("ai_unavailable.wav", ct);
        await Hangup(ct);
        return;
    }

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

    // Kontynuuj logikę IVR, gdy przesyłanie strumieniowe jest aktywne...
    var (menuResult, digit) = await
PromptDigit("ai_menu.wav", 30, ct);

    if (menuResult == MenuResult.Success && digit == '0')
    {
        // Dzwoniący chce rozmawiać z człowiekiem
        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);
    }
}

Zatrzymuje aktywny strumień audio, który został wcześniej uruchomiony za pomocą StartStream.

Description

  • Czysto zamyka aktywny strumień medialny.
  • Nie rozłącza połączenia - tylko przestaje wysyłać dźwięk.
  • Bezpieczne do wywołania, nawet jeśli nie ma aktywnego strumienia (zwraca NotActive).

Parameters

  • ct – Token anulowania.

Returns

  • StreamResult.Stopped – Strumień pomyślnie zatrzymany.
  • StreamResult.NotActive – Nie znaleziono aktywnego strumienia.
  • StreamResult.Error – Nie udało się zatrzymać strumienia.

Throws

  • OperationCanceledException – Jeśli ct zostanie anulowany.

Signatures

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

Example

private async Task TransferToHuman(CancellationToken ct)
{
    // Zatrzymaj przesyłanie strumieniowe AI przed transferem do człowieka
    var stopResult = await StopStream(ct);
    Logger.LogInformation("Wynik StopStream: {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);
    }
}

Dlaczego to jest ważne

Zestaw narzędzi IVR daje Twojemu zespołowi pełną kontrolę nad przepływami połączeń. Od prostych menu po złożone interakcje sterowane przez AI - wszystko jest możliwe dzięki naszej bibliotece akcji.

Narzędzia te są szczególnie przydatne dla zespołów budujących niestandardowe rozwiązania telefoniczne, wdrażających integracje AI lub rozszerzających istniejące systemy o zaawansowaną logikę połączeń.

Ta funkcja jest dołączona bezpłatnie do każdego numeru firmowego lub numeru międzynarodowego.

Dowiedz się więcej o innych funkcjach

Znajdź więcej informacji o naszych funkcjach, które mogą usprawnić komunikację Twojej firmy.

FAQ Zestawu Narzędzi IVR

Uzyskaj jasne odpowiedzi na temat zestawu narzędzi IVR i tego, jak działa on dla Twojej firmy.

Możesz budować przepływy za pomocą naszych akcji IVR w swoim panelu. Każda akcja zawiera przykłady, sygnatury i przewidywalne zachowanie, dzięki czemu możesz wdrażać logikę bez potrzeby zakupu nowego sprzętu telefonicznego.

Możesz tworzyć proste przepływy bez kodowania, ale zestaw narzędzi jest zbudowany dla zespołów, które chcą automatyzować lub integrować logikę. Programiści mogą używać ustrukturyzowanych akcji do wyzwalania monitów, przechwytywania cyfr lub łączenia dzwoniących programowo.

Tak. Możesz wyzwalać wywołania API, wysyłać dane do swojego back-endu lub przesyłać strumieniowo dźwięk do usług AI lub STT. Zestaw narzędzi naturalnie pasuje do Twojej istniejącej infrastruktury.

Absolutnie. Nie musisz zmieniać swojej konfiguracji. Wszystkie akcje IVR działają z Twoimi istniejącymi numerami Callfactory, routingiem i ustawieniami połączeń.

Tak. Możesz bezpiecznie budować i wyświetlać podgląd swoich przepływów. Zestaw narzędzi pozwala symulować monity, zbieranie danych wejściowych i zachowanie routingu przed aktywowaniem zmian dla prawdziwych dzwoniących.

Ty decydujesz o zachowaniu. Możesz powtórzyć monit, przekierować do poczty głosowej, połączyć ze wsparciem lub zakończyć połączenie. Każda akcja IVR obsługuje niestandardową obsługę błędów.

Tak. Każda akcja zawiera obsługę limitów czasu i opcjonalną logikę rezerwową. Możesz zdefiniować, co się stanie, gdy nie zostaną odebrane żadne dane wejściowe lub gdy dzwoniący się rozłączy.

Tak. Zestaw narzędzi został zaprojektowany do łączenia akcji w łańcuchy. Możesz odtwarzać dźwięk, zbierać cyfry, uruchamiać logikę, wywoływać API i przekazywać dzwoniących - wszystko w jednym przepływie.

Tak. System jest zaprojektowany pod kątem niezawodności i skalowalności. Niezależnie od tego, czy prowadzisz małą firmę, czy call center o dużym wolumenie, wszystkie akcje zapewniają przewidywalną wydajność.

Jeśli Twój zespół potrzebuje wskazówek, możemy pomóc w przeglądzie projektu przepływu, przetestowaniu konfiguracji lub wsparciu bardziej zaawansowanej logiki routingu.

Zadowoleni klienci Callfactory:

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