gifts2017

Голосовой ввод в 1С (Asterisk + Yandex speechkit + php)

Опубликовал Александр Лахнов (lakhnov.alexander) в раздел Программирование - Практика программирования

Пример того, что можно получить, подружив телефонию на базе Asterisk и 1С.

Условия.

У нас есть 1С (версия 8.Х) и Linux-сервер (в моем случае ubuntu server 15.04 ) c Asterisk (1.8.28.2) на борту. Для интеграции использовал ВК от Simplit ROM-Asterisk.dll (полностью свободная и для 7.7 и для 8.х). Описывать интеграцию подробно не вижу смысла, вот несколько ссылок по этой теме.

http://infostart.ru/public/95691/

http://infostart.ru/public/125719/

http://wiki.simplit.info/doku.php/community/rom-asterisk

Цель.

При звонке на определенный номер, произнести любую фразу, после чего распознаный текст должен попасть в поле ввода формы в 1С.

Речевые технологии Yandex.

Подробнее о Yandex SpeechKit прочитать здесь: https://tech.yandex.ru/speechkit/cloud/

Для дусту к сервису Вам необходимо получить API-ключ разработчика.

Настройка со стороны OS Linux  и Asterisk

Для выполнения скрипта необходим установленный пакет php-cli.

Правим dialplan, пусть номер для записи разговора будет *14:

exten => *14,1,Goto(yandex-test,s,1)

[yandex-test]

exten => h,1,NoOP(${DIALSTATUS})

exten => h,2,System( php /root/asterisk_yandex_text.php &)

exten => h,n,Hangup()

exten => s,1,Answer()

exten => s,2,Wait(1)

exten => s,3,Record(yandex_test.wav,2)

exten => s,n,Hangup()


На что стоит обратит внимание: 1) символ & при вызове php-скрипта, необходим для того что бы пользователь не ждал полного выполнения скрипта; 2) команда Record сохраняет записи в /var/lib/asterisk/sounds(если не задан полный путь и не изменены настройки Asterisk).

В скрипте asterisk_yandex_text.php изменяем переменыые : $username и $secret (логин и пароль для доступа к AMI),$prefix –путь для хранения записей (по умолчанию /var/lib/asterisk/sounds/), $yandex_key –Ваш api-ключ Yandex SpeechKit и $uuid.

 

Настройка со стороны 1С

Во внешней обработке в Модуде Формы в функции ПодключениеКСерверуAsterisk() изменяем переменные:

Адрес="...";

Порт="5038";

Логин="...";

Пароль="...";

ПутьКФайлуВК="c:\....\";

ПоказыватьСобытияAsterisk=Истина;

Принцип работы.

Звоним на указанный номер (*14), после гудка произносим фразу (2 секунды тиины расценивается как окончание фразы). Asterisk, после записи, запускает php-скрипт, который в свою очередь конвертирует полученный файл, отправляет в сервис Яндекса на обработку. Далее php-скрипт, подключась AMI передает полученный ответ. Обработка 1С отслеживает внешнее событие UserEvent, и при возникновении такого заполняет поле ввода формы.

 

 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Asterisk_ГолосовойВвод.epf
.epf 10,08Kb
05.01.16
13
.epf 10,08Kb 13 Скачать
asterisk_yandex_test.zip
.zip 0,96Kb
05.01.16
12
.zip 0,96Kb 12 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Яна Тельнова (teyana) 11.01.16 18:02
Ок, 1С! Сведи баланс. :)
Golikov; Bazin; Zero_nv; +3 Ответить
2. Will HueHue (OerlandHue) 06.05.16 09:00
Я себя чувствую тупым после таких публикаций. Может так оно и есть.
Спасибо за статью, но как-то очень лаконично.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа