Настройка MSR
На данный момент приложение работает с медиасервером (MSR), у которого тактовая частота настроена на 48000 Гц (указывается в файле конфигурации — секция "media", параметр "mixer-clock-rate"):
$ sudo nano /etc/ecss/ecss-media-server/config.xml <?xml version="1.0" encoding="utf-8"?> <config date="09:14:04 26.09.2023"> <general log-level="3" log-rotate="yes" max-calls="8192" max-in-group="512" load-sensor="media" load-delta="10" calls-delta="100" spool-dir-size="100M" log-name="msr.log" log-path="/var/log/ecss/media-server"$ <transport bind-addr="127.0.0.1" port="5040" transport="udp+tcp"/> <!-- By default configured public TURN-server --> <turn-server use-turn="no" host="numb.viagenie.ca" user="webrtc@live.com" password="muazkh"/> # Изменить тактовую частоту в параметре "mixer-clock-rate на 48000" <media mixer-clock-rate="48000" use-vad="no" cng-level="0" jb-size="60" rtcp-timeout="0" rtp-timeout="350" udp-src-check="yes" cn-multiplier="3" port-start="12000" port-range="2048" tias-in-sdp="no" ... </config>
Настройка IVR-скрипта
Интеграция приложения с ECSS-10 выполнена через IVR-скрипт.
Пример скрипта представлен ниже.
После звонка на номер IVR, произносится приветственное сообщение, далее речь от абонента поступает на сервер приложения. Если до таймаута от приложения приходит ответ с номером, то происходит звонок на этого абонента. В противном случае мы оказываемся в одной из двух других веток. В первом случае приложение не услышало фразу или не смогло найти никакого соответствия с распознанной речью, тогда произносится фраза с пустой или распознанной строкой, далее попадает на RPC-блок, где тегирует запрос приложению как неудачный и делается повторный запрос (блок goto, который выполняется 2 раза). Во втором случае приложение нашло соответствие с распознанной речью, но требуется уточнение (например, были найдены 2 абонента с одним и тем же именем и фамилией, но они находятся в разных отделах, тогда приложение пришлет ответ, что нужно уточнить отдел и перечислит их), делается повторный запрос (блок goto, который выполняется 2 раза), где в блоке ivr будет произнесен ответ от приложения (уточнение).
Импортировать скрипт можно через интерфейс командной строки:
domain/<DOMAIN>/ivr/script/.import --id <ScriptID> --json <IVR-скрипт>
После импорта нужно зайти в IVR-редактор, выбрать скрипт "ivr_script_asr" и в поле "Адрес сервиса распознавания речи" блока "ivr" указать IP-адрес хоста с установленным приложением и порт сервиса clerk (по умолчанию: 8000) (рисунок 1):
Рисунок 1
После сохранения скрипта необходимо создать правило маршрутизации на данный IVR-скрипт.