speech to text
Мы обновили документацию, актуальная версия страницы доступна по ссылке: Преобразование речи в текст (speech to text)
speech to text на платформе это:
1. правило голосовой навигации в ivr
2.отправка распознанного текста событиями во время разговора
Работает только при активированной функции speech_to_text в клиентской конфигурации (эта настройка доступна только администратору платформы)
Правило ivr:
В ivr настройка выполняется аналогично другим правилам ivr, количество правил также не ограничено.
В ходе распознавания доступен финальный результат распознавания и предположения (предположения доступны в случае прерывания распознавания по набору цифр, либо по таймауту).
Имя | Тип | Описание |
---|---|---|
|
|
|
Параметры правила
|
| Идентификатор звукового файла, который необходимо проиграть. Идентификатор можно получить с помощью ресурса: GET /client/{client_id}/sound/ Во время проигрывания файла начинается распознавание речи звонящего, распознавание заканчивается по нажатию кнопки-терминатора #, набору количества цифр донабора ( |
|
| Количество цифр донабора, после которого заканчивается распознавание речи. Если на момент до набора нужного количества digits финальный результат распознавания недоступен- мы будем работать с предположениями. |
|
| Список правил переадресации в виде массива Опция данного контекста должна быть создана, иначе она пропускается во время звонка, при создании правила опция не проверяется. Создается опция правилом POST /extension/{extension_id}/ivr/context/{context_id}/options/
|
|
| Время в миллисекундах по истечении которого заканчивается распознавание речи - если за это время финальный результат недоступен- мы будем работать с предположениями.
|
|
| Разрешить, либо запретить классический донабор с клавиатуры (по умолчанию запрещено и используется только как прерывание распознавания см. Полностью аналогичная логика донабору правила ivr Play sound. Но перед переходом в опцию или на добавочный проверяются |
|
| Финальное распознавание определяется паузой в речи (до финального распознавания возможны только предположения)
Обычно устанавливается от одной до трех попыток final_count |
Пример добавления правила
На примере первого контекста 1 добавочного id 204 опции старт:
POST- создание, PUT- обновление текущего контекста.
ресурс | отправленные данные | полученный ответ ( остальные параметры не имеют значения и исключены из примера) |
---|---|---|
POST extension/204/ivr/context/1/options/start/rules/ или PUT extension/204/ivr/context/1/options/start/rules/1
| { | { … "voice_helper_sound": 52, "voice_helper_timeout": 7000, "id": 39, "voice_helper_digits_max": "2", "voice_helper_rules": [ { "transcription": "привет|здравствуй|здарова", "to_option": 1 }, { "transcription": "прощай|пока", "to_option": 2 } ], "final": true, "action": "voice_helper", …. } |
События с распознанным текстом
Чтобы получить события с финальным распознанным текстом во время разговора необходимо воспользоваться следующей схемой:
По событию на добавочном (dial-in для входящих вызовов в ivr, anwser для входящих и исходящих с добавочного телефонного терминала)
В зависимости от CallFlow события в событии нужно запомнить:
extension_id и CallAPIID
extension_id - это id добавочного (если in - CalledExtensionID, если out - CallerExtensionID)
И воспользоваться ресурсом:
PUT /extension/{extension_id}/speech_to_text/{call_api_id}
Параметры URL
Name | Type | Description |
---|---|---|
extension_id | string | id добавочного |
call_api_id | string | id звонка, по которому начнется распознавание речи |
Параметры запроса
Name | Type | Description |
---|---|---|
action | string | Может быть start или stop |
direction | string | Направление распознанной речи относительно extension_id. out если голос идет от добавочного, in- если к добавочному |
url | string | url, куда будут отправляться события с распознанным текстом из речи |
При повторной попытке одного и того же action с одним и тем же direction на один и тот же разговор будет ошибка.
События выглядят подобным образом:
POST / HTTP/1.1
Host: 213.170.66.158:12345
user-agent: Ringme Event Generator
Accept:
Accept-Encoding: gzip, deflate
Content-Length: 394
Content-Type: application/x-www-form-urlencoded
call_api_id=3232240860-15e67fb4-8f9a-11ea-90b9-05381d8e3a62&extension_id=34414&direction=out&text=%D0%90+%D0%B2%D0%BE%D0%B4%D0%B5+%D0%BC%D0%B8%D0%BC%D0%BE+%D1%81%D0%B5%D0%B9%D1%87%D0%B0%D1%81+%D0%BB%D0%B5%D1%82+%D1%81%D0%B5%D0%B3%D0%BE+%D0%BA%D0%BE%D0%BC%D0%B0%D1%80%D0%B0+%D0%B7%D0%B0%D0%B1%D0%BE%D1%82%D0%B0+%D0%BB%D1%8E%D0%B4%D0%B8+%D1%87%D0%B0%D1%81%D1%83+%D1%81+15+%D0%B3%D0%BE%D0%B4%D0%B0
Длину контента можно считать по Content-Length