IVRAPI dla platform CRM

Część 1. Uruchomienie platformy oraz przygotowanie użytkowników do realizacji połączeń

Spis treści

  1. Wprowadzenie
  2. Uprawnienia administratora
  3. Poziom 1 – Inicjowanie, rejestracja i nagrywanie połączeń
  4. Krok 1. Utworzenie użytkownikaSwagger
  5. Krok 2. Aktualizacja danych użytkownikaSwagger
  6. Krok 3. Listowanie numerów wirtualnychSwagger
  7. Krok 4. Przypisanie numeru wirtualnego do użytkownikaSwagger
  8. Krok 5. Inicjowanie połączenia telefonicznegoSwagger
  9. Krok 6. Pobieranie statusu połączeniaSwagger
  10. Powiązanie połączenia z rekordem CRM
  11. Krok 7. Pobieranie nagrania rozmowySwagger
  12. Krok 8. Transkrypcja rozmowySwagger GET / Swagger POST

Wprowadzenie

Integracja platformy CRM z IVRAPI rozpoczyna się od utworzenia po stronie IVRAPI profilu klienta oraz konta administratora.

Administrator otrzymuje indywidualny klucz API, który umożliwia komunikację z platformą IVRAPI na najwyższym poziomie uprawnień.

Klucz API administratora zapewnia dostęp do wszystkich usług dostępnych dla danego klienta oraz umożliwia zarządzanie użytkownikami i konfiguracją usług.

Uprawnienia administratora

Administrator może:

Poziom 1 – Inicjowanie, rejestracja i nagrywanie połączeń

Pierwszym etapem integracji jest przygotowanie użytkowników, którzy będą realizowali połączenia telefoniczne za pośrednictwem platformy IVRAPI.

Użytkownicy nie muszą logować się do platformy IVRAPI ani aktywnie z niej korzystać. Ich utworzenie jest wymagane w celu przypisania numerów wirtualnych wykorzystywanych podczas realizacji połączeń.

Krok 1. Utworzenie użytkownika

Administrator tworzy użytkownika za pomocą endpointu:

POST https://api.ivrapi.com/api/users

Przykładowe wywołanie

curl -X 'POST' \
  'https://api.ivrapi.com/api/users' \
  -H 'accept: application/json' \
  -H 'X-Api-Key: sk-xxxxxxxxxxxxxxxxxxxxxxxx' \
  -H 'Content-Type: application/json' \
  -d '{
    "email": "jan.kowalski@advicos.com",
    "password": "superTajneHaslo123",
    "name": "Jan Kowalski",
    "phoneNumber": "739183045",
    "passwordExpirationPeriod": 30,
    "role": "User",
    "mpk": "77B001",
    "sendPassword": true,
    "skipPhoneVerification": true,
    "isEmviphoneActive": true
  }'

Przykładowa odpowiedź

{
  "email": "jan.kowalski@advicos.com",
  "phoneNumber": "739183045",
  "name": "Jan Kowalski",
  "active": true,
  "password": "$2b$10$kekcJ0jtaFtJtQHFwDOl7.Tztlhjy61Hn49n.TZbLEukCQS.wgt/m",
  "mpk": "77B001",
  "passwordExpirationPeriod": 30,
  "phoneNumberConfirmed": true,
  "isEmviphoneActive": true,
  "role": {
    "id": 2,
    "name": "User",
    "displayName": "Użytkownik",
    "description": null
  },
  "client": {
    "id": 3,
    "name": "ADVICOS POLAND sp. z o.o.",
    "agendialerClientId": 1,
    "privatePerson": false,
    "street": "Leśna 56",
    "postCode": "87-125",
    "city": "Silno",
    "tin": null
  },
  "emailConfirmed": true,
  "id": 1135,
  "languageCode": "pl",
  "createdAt": "2026-06-15T07:40:22.612Z",
  "passwordChangedAt": "2026-06-15T07:40:22.612Z",
  "blockTo": "2026-06-15T07:40:22.612Z"
}

Ważne: najważniejszą wartością zwracaną przez API jest identyfikator użytkownika: id.

Identyfikator użytkownika należy zapisać po stronie CRM, ponieważ będzie wykorzystywany podczas kolejnych operacji związanych z użytkownikiem.

Krok 2. Aktualizacja danych użytkownika

Po utworzeniu użytkownika administrator może aktualizować jego dane. Do modyfikacji wykorzystywany jest identyfikator użytkownika zwrócony podczas tworzenia konta.

PUT https://api.ivrapi.com/api/users/{id}

Przykład zmiany numeru telefonu

curl -X 'PUT' \
  'https://api.ivrapi.com/api/users/1135' \
  -H 'accept: application/json' \
  -H 'X-Api-Key: sk-xxxxxxxxxxxxxxxxxxxxxxxx' \
  -H 'Content-Type: application/json' \
  -d '{
    "phoneNumber": "739183044"
  }'

Przykładowa odpowiedź

{
  "id": 1135,
  "email": "jan.kowalski@advicos.com",
  "name": "Janek Kowalski",
  "languageCode": "pl",
  "active": true,
  "emailConfirmed": true,
  "createdAt": "2026-06-15T07:40:22.612Z",
  "passwordExpirationPeriod": 30,
  "phoneNumber": "739183044",
  "phoneNumberConfirmed": false,
  "mpk": "77B001",
  "isEmviphoneActive": false,
  "client": {
    "id": 3,
    "name": "ADVICOS POLAND sp. z o.o.",
    "agendialerClientId": 1,
    "privatePerson": false,
    "street": "Leśna 56",
    "postCode": "87-125",
    "city": "Silno",
    "tin": null
  },
  "role": {
    "id": 2,
    "name": "User",
    "displayName": "Użytkownik",
    "description": null
  },
  "vnumber": null
}

Jeżeli po zmianie numeru telefonu pole phoneNumberConfirmed przyjmuje wartość false, oznacza to, że numer nie został jeszcze zweryfikowany.

Pole vnumber: null oznacza, że użytkownik nie ma jeszcze przypisanego numeru wirtualnego.

Krok 3. Listowanie numerów wirtualnych

Przed przypisaniem numeru wirtualnego do użytkownika należy pobrać listę numerów dostępnych dla klienta.

GET https://api.ivrapi.com/api/vnumbers

Przykładowe wywołanie

curl -X 'GET' \
  'https://api.ivrapi.com/api/vnumbers' \
  -H 'accept: */*' \
  -H 'X-Api-Key: sk-xxxxxxxxxxxxxxxxxxxxxxxx'

Przykładowa odpowiedź

{
  "items": [
    {
      "id": 924,
      "vnumber": "739183015",
      "createdAt": "2025-05-29T15:07:22.871Z",
      "scenarios": null,
      "user": null,
      "client": {
        "id": 3,
        "name": "ADVICOS POLAND sp. z o.o.",
        "agendialerClientId": 1,
        "privatePerson": false,
        "street": "Leśna 56",
        "postCode": "87-125",
        "city": "Silno",
        "tin": null
      },
      "bot": null,
      "smsSender": {
        "id": 788,
        "name": "48739183015",
        "createdAt": "2025-05-29T15:07:22.868Z"
      },
      "clientId": 3,
      "userId": null
    }
  ],
  "meta": {
    "totalItems": 125,
    "itemCount": 10,
    "itemsPerPage": 10,
    "totalPages": 13,
    "currentPage": 1
  }
}

Jak rozpoznać wolny numer?

Najprostszym sposobem jest sprawdzenie pola userId.

Jeżeli wartość wynosi null, numer nie jest przypisany do żadnego użytkownika i może zostać wykorzystany.

{
  "id": 924,
  "vnumber": "739183015",
  "userId": null
}

Po przypisaniu numeru do użytkownika pole userId będzie zawierało identyfikator użytkownika.

{
  "id": 924,
  "vnumber": "739183015",
  "userId": 1135
}

Oznacza to, że numer został przypisany do użytkownika o identyfikatorze 1135 i nie może zostać wykorzystany przez innego użytkownika.

Krok 4. Przypisanie numeru wirtualnego do użytkownika

Po pobraniu listy numerów wirtualnych należy sprawdzić, który numer jest wolny. Numer można przypisać do użytkownika, jeżeli pole userId ma wartość null.

{
  "id": 924,
  "vnumber": "739183015",
  "userId": null
}

Jeżeli numer jest wolny, można przypisać go do użytkownika za pomocą endpointu aktualizacji użytkownika.

PUT https://api.ivrapi.com/api/users/{id}

Gdzie {id} oznacza identyfikator użytkownika w systemie IVRAPI.

Przykładowe wywołanie

curl -X 'PUT' \
  'https://api.ivrapi.com/api/users/1135' \
  -H 'accept: application/json' \
  -H 'X-Api-Key: sk-xxxxxxxxxxxxxxxxxxxxxxxx' \
  -H 'Content-Type: application/json' \
  -d '{
    "vnumberId": 924
  }'

Parametry

Parametr Opis
vnumberId Identyfikator numeru wirtualnego, który ma zostać przypisany do użytkownika.

Przykładowa odpowiedź

{
  "id": 1135,
  "email": "jan.kowalski@advicos.com",
  "name": "Janek Kowalski",
  "languageCode": "pl",
  "active": true,
  "emailConfirmed": true,
  "createdAt": "2026-06-15T07:40:22.612Z",
  "passwordExpirationPeriod": 30,
  "phoneNumber": "739183044",
  "phoneNumberConfirmed": false,
  "mpk": "77B001",
  "blockTo": "2026-06-15T07:40:22.612Z",
  "isEmviphoneActive": false,
  "client": {
    "id": 3,
    "name": "ADVICOS POLAND sp. z o.o.",
    "agendialerClientId": 1,
    "privatePerson": false,
    "street": "Leśna 56",
    "postCode": "87-125",
    "city": "Silno",
    "tin": null
  },
  "role": {
    "id": 2,
    "name": "User",
    "displayName": "Użytkownik",
    "description": null
  },
  "vnumber": {
    "id": 924
  }
}

Ważne: obecność pola vnumber z wartością id: 924 oznacza, że numer wirtualny został przypisany do użytkownika.

Od tego momentu numer nie powinien być traktowany jako wolny. Przy kolejnym listowaniu numerów pole userId dla tego numeru powinno wskazywać identyfikator przypisanego użytkownika.

Po wykonaniu tej operacji użytkownik posiada przypisany numer wirtualny i może być wykorzystywany w kolejnych procesach, takich jak inicjowanie połączeń telefonicznych, rejestracja rozmów oraz obsługa usług powiązanych z numerem.

Krok 5. Inicjowanie połączenia telefonicznego

Po utworzeniu użytkownika, przypisaniu mu numeru telefonicznego oraz numeru wirtualnego można zainicjować połączenie telefoniczne za pośrednictwem IVRAPI.

Do inicjowania połączeń wykorzystywany jest endpoint:

POST https://api.ivrapi.com/api/connections

Przykładowe wywołanie

curl -X 'POST' \
  'https://api.ivrapi.com/api/connections' \
  -H 'accept: application/json' \
  -H 'X-Api-Key: sk-xxxxxxxxxxxxxxxxxxxxxxxx' \
  -H 'Content-Type: application/json' \
  -d '{
    "targetNumber": "502131658",
    "maxConnectionRetries": 3,
    "userNumber": "502131638",
    "direction": "a2c",
    "virtualNumber": "739183015",
    "clipForAgent": "739183015"
  }'

Parametry requestu

Parametr Opis
targetNumber Numer telefonu klienta, do którego ma zostać wykonane połączenie.
maxConnectionRetries Maksymalna liczba prób zestawienia połączenia.
userNumber Numer telefonu użytkownika lub agenta zarejestrowanego w systemie IVRAPI. W integracji z CRM może odpowiadać użytkownikowi CRM, który realizuje połączenie.
direction Kierunek połączenia. Dostępne wartości: a2c oraz c2a.
virtualNumber Numer wirtualny z puli numerów przypisanych do klienta w IVRAPI. Numer ten jest wykorzystywany do prezentacji połączenia.
clipForAgent Numer prezentowany agentowi. Musi być numerem wirtualnym należącym do klienta w IVRAPI.

Kierunek połączenia (direction)

Parametr direction określa kolejność zestawiania połączenia.

WartośćOpis
a2c Agent → Client. System najpierw dzwoni do agenta, a po odebraniu połączenia zestawia rozmowę z klientem.
c2a Client → Agent. System najpierw dzwoni do klienta, a dopiero po odebraniu połączenia łączy go z agentem.
Ważne: podczas realizacji połączeń można prezentować się wyłącznie numerem wirtualnym przypisanym do klienta w IVRAPI. Nie jest możliwe prezentowanie numerów własnych użytkowników jako numerów wychodzących.

Najważniejsze zasady walidacji

userNumber musi być numerem telefonu użytkownika istniejącego w systemie IVRAPI.

virtualNumber musi być numerem wirtualnym z puli numerów przypisanych do danego klienta.

clipForAgent również musi być poprawnym numerem wirtualnym z puli numerów przypisanych do danego klienta.

Podczas inicjowania połączenia system weryfikuje, czy wskazane numery istnieją w bazie IVRAPI oraz czy są przypisane do właściwego klienta. Jeżeli którykolwiek z numerów jest niepoprawny lub nie istnieje, API zwróci błąd.

Przykładowa odpowiedź

Poniżej pokazano uproszczoną odpowiedź API, zawierającą tylko pola istotne z punktu widzenia tutoriala.

{
  "id": 557889,
  "targetNumber": "502131658",
  "createdAt": "2026-06-15T08:18:09.010Z",
  "callStart": "2026-06-15T08:18:09.009Z",
  "direction": "a2c",
  "sid": "df533e98-1758-4543-8fcc-d741d1b128d9",
  "clip": "502131658",
  "status": {
    "id": 1,
    "name": "init",
    "content": [
      {
        "languageCode": "pl",
        "text": "zainicjowano"
      }
    ]
  }
}

Najważniejsze pola odpowiedzi

Pole Opis
id Identyfikator połączenia w systemie IVRAPI.
targetNumber Numer telefonu odbiorcy połączenia.
createdAt Data i czas utworzenia rekordu połączenia.
callStart Data i czas rozpoczęcia inicjowania połączenia.
direction Kierunek połączenia.
sid Techniczny identyfikator sesji połączenia.
status.name Status techniczny połączenia. Wartość init oznacza, że połączenie zostało zainicjowane.
status.content.text Opis statusu w języku użytkownika, np. zainicjowano.

Przykładowe błędy walidacji

Jeżeli wskazany numer wirtualny nie istnieje w systemie IVRAPI, API może zwrócić odpowiedź:

{
  "statusCode": 400,
  "message": "Specified virtual number does not exist"
}

Jeżeli wskazany numer użytkownika nie istnieje w systemie IVRAPI, API może zwrócić odpowiedź:

{
  "statusCode": 400,
  "message": "Cannot found user with specified number"
}

Ważne: przed wysłaniem requestu inicjującego połączenie system CRM powinien upewnić się, że używany userNumber należy do użytkownika utworzonego w IVRAPI, a virtualNumber oraz clipForAgent należą do puli numerów wirtualnych klienta.

Po poprawnym zainicjowaniu połączenia system zwraca identyfikator połączenia oraz status init. Identyfikator połączenia może być następnie wykorzystywany do śledzenia statusu, pobierania informacji o przebiegu rozmowy oraz dalszej analizy komunikacji.

Krok 6. Pobieranie statusu połączenia

Po zainicjowaniu połączenia system CRM może pobierać aktualny status połączenia oraz informacje o jego przebiegu. Do odczytu danych wykorzystywany jest identyfikator połączenia zwrócony podczas jego inicjowania.

GET https://api.ivrapi.com/api/connections?id={connectionId}

Przykładowe wywołanie

curl -X 'GET' \
  'https://api.ivrapi.com/api/connections?id=557889' \
  -H 'accept: application/json' \
  -H 'X-Api-Key: sk-xxxxxxxxxxxxxxxxxxxxxxxx'

Przykładowa odpowiedź

Poniżej pokazano uproszczoną odpowiedź API, zawierającą tylko pola istotne z punktu widzenia tutoriala.

{
  "items": [
    {
      "id": 557889,
      "targetNumber": "502131658",
      "createdAt": "2026-06-15T08:18:09.010Z",
      "totalCallDuration": 35,
      "callStart": "2026-06-15T08:18:17.000Z",
      "callEnd": "2026-06-15T08:18:52.000Z",
      "agentNumber": "502131638",
      "direction": "a2c",
      "sid": "df533e98-1758-4543-8fcc-d741d1b128d9",
      "agent": {
        "id": 1017,
        "name": "Maciej Zasadzki",
        "groupName": "USER CLIP",
        "phoneNumber": "502131638",
        "phoneNumberConfirmed": true,
        "active": true
      },
      "status": {
        "id": 5,
        "name": "busy",
        "content": [
          {
            "languageCode": "pl",
            "text": "numer zajęty"
          }
        ]
      },
      "isBotCall": false
    }
  ],
  "meta": {
    "totalItems": 1,
    "itemCount": 1,
    "itemsPerPage": 10,
    "totalPages": 1,
    "currentPage": 1
  }
}

Najważniejsze pola odpowiedzi

Pole Opis
id Identyfikator połączenia w systemie IVRAPI.
targetNumber Numer odbiorcy połączenia.
agentNumber Numer użytkownika realizującego połączenie.
totalCallDuration Łączny czas połączenia w sekundach.
callStart Data i czas rozpoczęcia połączenia.
callEnd Data i czas zakończenia połączenia.
sid Techniczny identyfikator sesji połączenia.
agent Dane użytkownika, który realizował połączenie.
status.name Status techniczny połączenia.
status.content.text Opis statusu w języku użytkownika.

Interpretacja statusu

W przedstawionym przykładzie status połączenia ma wartość:

{
  "status": {
    "name": "busy",
    "content": [
      {
        "languageCode": "pl",
        "text": "numer zajęty"
      }
    ]
  }
}

Oznacza to, że połączenie zostało zakończone statusem busy, czyli numer docelowy był zajęty.

Przykładowe statusy połączeń

Status Opis
init Połączenie zostało zainicjowane.
answered Połączenie zostało odebrane.
busy Numer był zajęty.
noanswer Brak odpowiedzi.
failed Nie udało się zestawić połączenia.

Powiązanie połączenia z rekordem CRM

Podczas inicjowania połączenia rekomendowane jest przekazywanie identyfikatora klienta lub użytkownika z zewnętrznego systemu CRM. Dzięki temu połączenie można jednoznacznie powiązać z rekordem klienta po stronie CRM.

Mechanizm ten ułatwia:

Przykład rozszerzenia requestu inicjującego połączenie

{
  "targetNumber": "502131658",
  "maxConnectionRetries": 3,
  "userNumber": "502131638",
  "direction": "a2c",
  "virtualNumber": "739183015",
  "clipForAgent": "739183015",
  "externalClientId": "CRM-123456",
  "externalUserId": "USR-98765"
}

Znaczenie pól zewnętrznych

Pole Opis
externalClientId Identyfikator klienta lub rekordu klienta w systemie CRM.
externalUserId Identyfikator użytkownika, operatora, handlowca lub agenta w systemie CRM.

Rekomendacja integracyjna: system CRM powinien przekazywać własny identyfikator klienta przy inicjowaniu połączenia. Dzięki temu historia komunikacji pozostaje powiązana z właściwym rekordem nawet wtedy, gdy klient zmieni numer telefonu.

W kolejnych zapytaniach identyfikatory zewnętrzne mogą być wykorzystywane do wyszukiwania i dopasowywania rekordów po stronie CRM, bez konieczności opierania się wyłącznie na numerach telefonów.

Następny krok

Po sprawdzeniu statusu połączenia można przejść do pobierania szczegółowych informacji o rozmowie, nagraniach oraz pełnej historii komunikacji.

Krok 7. Pobieranie nagrania rozmowy

Po zakończeniu rozmowy system CRM może pobrać nagranie połączenia zapisane w IVRAPI.

Do pobrania nagrania wykorzystywany jest identyfikator sesji połączenia (SID), który zwracany jest podczas inicjowania połączenia oraz dostępny podczas pobierania statusu połączenia.

Przykładowy identyfikator SID

{
  "sid": "df533e98-1758-4543-8fcc-d741d1b128d9"
}

Endpoint

GET https://api.ivrapi.com/api/connections/records/{sid}

Przykładowe wywołanie

curl -X 'GET' \
  'https://api.ivrapi.com/api/connections/records/df533e98-1758-4543-8fcc-d741d1b128d9' \
  -H 'accept: */*' \
  -H 'X-Api-Key: sk-xxxxxxxxxxxxxxxxxxxxxxxx'

Parametry

Parametr Opis
sid Unikalny identyfikator sesji połączenia.
Ważne: Endpoint zwraca plik nagrania rozmowy powiązany z podanym identyfikatorem SID.

Zastosowanie nagrań

Nagranie może zostać:

Powiązanie z CRM

Rekomendowane jest zapisanie identyfikatora SID w rekordzie klienta lub aktywności CRM już podczas inicjowania połączenia. Dzięki temu możliwe jest późniejsze pobranie nagrania, transkrypcji oraz pełnej historii komunikacji.

Krok 8. Generowanie i pobieranie transkrypcji rozmowy

Podobnie jak pozostałe usługi IVRAPI, funkcja transkrypcji wykorzystuje autoryzację za pomocą klucza API przekazywanego w nagłówku X-Api-Key. Wszystkie przykłady przedstawione w tej dokumentacji wykorzystują ten sam mechanizm autoryzacji.

Transkrypcja rozmowy jest procesem wykonywanym na podstawie nagrania rozmowy. W pierwszym kroku system CRM zleca wygenerowanie transkrypcji metodą POST.

Ze względu na długość nagrania oraz czas potrzebny na przetworzenie rozmowy, transkrypcja może nie być dostępna natychmiast. W takim przypadku API zwraca uproszczoną odpowiedź z informacją, że zadanie zostało przyjęte do realizacji i będzie przetwarzane asynchronicznie.

Krok 8.1. Zlecenie wygenerowania transkrypcji

POST https://api.ivrapi.com/api/connections/{connectionSid}/transcription

Przykładowe wywołanie POST

curl -X 'POST' \
  'https://api.ivrapi.com/api/connections/df533e98-1758-4543-8fcc-d741d1b128d9/transcription' \
  -H 'accept: application/json' \
  -H 'X-Api-Key: sk-xxxxxxxxxxxxxxxxxxxxxxxx'

Przykładowa odpowiedź POST

{
  "id": 2548,
  "content": null,
  "done": false
}

Interpretacja odpowiedzi POST

Pole Opis
id Identyfikator zadania transkrypcji.
content Treść transkrypcji. Wartość null oznacza, że transkrypcja nie jest jeszcze dostępna.
done Informacja, czy przetwarzanie zostało zakończone.
Ważne: wartość done: false oznacza, że zadanie transkrypcji nie zostało wykonane od razu i będzie przetwarzane asynchronicznie. W takim przypadku należy po pewnym czasie wywołać metodę GET, aby pobrać gotowy wynik.

Krok 8.2. Pobranie gotowej transkrypcji

GET https://api.ivrapi.com/api/connections/{connectionSid}/transcription

Przykładowe wywołanie GET

curl -X 'GET' \
  'https://api.ivrapi.com/api/connections/df533e98-1758-4543-8fcc-d741d1b128d9/transcription' \
  -H 'accept: */*' \
  -H 'X-Api-Key: sk-xxxxxxxxxxxxxxxxxxxxxxxx'

Przykładowa odpowiedź GET

{
  "id": 2548,
  "content": [
    {
      "alternatives": [
        {
          "transcript": "dzień dobry",
          "confidence": 0.9634110927581787
        }
      ],
      "channelTag": 1,
      "resultEndTime": {
        "seconds": "4",
        "nanos": 20000000
      },
      "languageCode": "pl-pl"
    },
    {
      "alternatives": [
        {
          "transcript": "Tak słucham",
          "confidence": 0.9634111523628235
        }
      ],
      "channelTag": 1,
      "resultEndTime": {
        "seconds": "10",
        "nanos": 520000000
      },
      "languageCode": "pl-pl"
    },
    {
      "alternatives": [
        {
          "transcript": "Dziękuję bardzo do usłyszenia",
          "confidence": 0.9468808174133301
        }
      ],
      "channelTag": 2,
      "resultEndTime": {
        "seconds": "59",
        "nanos": 970000000
      },
      "languageCode": "pl-pl"
    },
    {
      "alternatives": [
        {
          "transcript": "Do usłyszenia",
          "confidence": 0.8341746926307678
        }
      ],
      "channelTag": 1,
      "resultEndTime": {
        "seconds": "60",
        "nanos": 150000000
      },
      "languageCode": "pl-pl"
    }
  ],
  "done": true
}

Interpretacja odpowiedzi GET

Wartość done: true oznacza, że transkrypcja została wygenerowana i jest dostępna w polu content.

Pole Opis
alternatives[0].transcript Rozpoznany fragment wypowiedzi.
alternatives[0].confidence Poziom pewności rozpoznania danego fragmentu.
channelTag Numer kanału audio, z którego pochodzi wypowiedź.
resultEndTime Czas zakończenia danego fragmentu wypowiedzi.
languageCode Kod języka rozpoznanej wypowiedzi.

Transkrypcja dwukanałowa

Nagrania rozmów w IVRAPI są dwukanałowe. Dzięki temu system CRM może rozpoznać, która strona rozmowy wypowiedziała konkretny fragment.

channelTag Uczestnik rozmowy
1 Klient
2 Agent
Ważne: ścieżka dźwiękowa klienta jest zawsze oznaczona jako channelTag: 1, a ścieżka dźwiękowa agenta jako channelTag: 2. Dzięki temu możliwe jest dokładne określenie, kto wypowiedział dany fragment rozmowy.

Zastosowanie transkrypcji w CRM

Rekomendacja integracyjna

System CRM powinien zapisać identyfikator sid razem z rekordem połączenia. Ten sam identyfikator jest wykorzystywany zarówno do pobierania nagrania, jak i do zlecania oraz pobierania transkrypcji.

Następny krok

Po uzyskaniu transkrypcji można przejść do analizy treści rozmowy, automatycznego tworzenia notatek oraz zapisu wyników analizy w systemie CRM.