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