Pull to refresh

Система распознавания и отправки уведомлений FreePBX

Появилась как то задача, организовать в офисе расшифровку голосовых сообщений клиентов и отправлять их на почту менеджеру, чтобы оперативнее отрабатывать проблемы, ну и стать чуточку IT-привлекательней для клиентов.

За основу взят пост, но он не актуален в силу изменения работы самого API у Google.

Документация Google

Для начала необходимо установить нужные пакеты:

В консоли:

yum install python
yum install python-pip
yum install google-cloud-sdk
yum install google-cloud-sdk-app-engine-python
gcloud init
pip install --upgrade google-cloud

Теперь необходимо создать проект и создать ключ API в консоли Google Cloud Platform:
описание создания API-ключа.

Сохраняем ключ на сервер asterisk.

Теперь привяжем ключ API:

gcloud auth activate-service-account --key-file=[Путь к файлу API-ключа]

Качаем все скрипты с github

git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git

Устанавливаем то, что скачали из скрипта установки.

pip install -r requirements.txt

Все скрипты для удобства сохранил на Asterisk в ./opt/test.

Так же необходимо на все файлы в папках которые используются в скрипте, выдать полные права на пользователя Asterisk.

Использовать для отправки сообщений будем стандартный почтовый клиент FreePBX (Его настраивали при первой установке FreePBX).

Скрипт для распознавания и отправки recognize.sh.

#!/bin/bash
#скрипт для отправки уведомлений

# экспортируем необходимые переменные окружения
# файл API-ключа гугла
export GOOGLE_APPLICATION_CREDENTIALS=/opt/test/project-*******.json
# название проекта на Google Cloud платформе
export GCLOUD_PROJECT=chrome-courage-******
# кодировка для питона
export PYTHONIOENCODING=UTF-8

# перекодируем звуковой файл в raw для того, чтобы отдать его гугл апи
sox /opt/record/record.wav -r 16000 -b 16 -c 1 /opt/record/record.raw

#конвертация звука в текст и обрезаем не нужное
python /opt/test/transcribe_async.py /opt/record/record.raw | tee /opt/text.txt
sed -i s/Transcript/Сообщение/ /opt/text.txt
sed -i '/Confidence/d' /opt/text.txt
sed -i '/Waiting/d' /opt/text.txt

#отправляем письмо, включаем в письмо распознанный текст
mail -s "новое уведомление" example@mail.net < /opt/text.txt
sleep 15
find /opt/text.txt -delete

Осталось все это прикрутить в dialplan FreePBX, так как FreePBX не любит чтобы непосредственно в его конфиги писали изменения, существует файл extensions_custom.conf. Вот в него и будем вносить изменения.


[Voice-to-text]
exten => s,1,Answer()
same => n,Playback(custom/2_IVR)
same => n,Playback(beep)
same => n,Record(/opt/record/record.wav,0,30,k)
exten => h,1,System(/opt/test/recognize.sh)
same => n,wait(30)
exten => s,n,Hangup()

Осталось это подключить в наш основной диалплан, для этого в web-интерфейсе есть раздел Администрирование/Дополнительные назначения:

Скрин
image

Вот туда мы и напишем запуск нашего диалплана.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.