<?php
#Пример вызова из dialplan
#получаем переменные из AGI $agivars = array(); while (!feof(STDIN)) {
$agivar = trim(fgets(STDIN)); if ($agivar === '') break;
$agivar = explode(':', $agivar); $agivars[$agivar[0]] = trim($agivar[1]);
} extract($agivars);
$filename = $_SERVER["argv"][1];
#ключ от yandex speech kit можно получить на:
$key = '6be78e3c-6184-4f83-b18d-cf33c6727735';
#$topic = 'maps' — тема для распознавания, возможны следующие варианты:
$topic = «freeform»;
#$lang = 'ru-RU' — язык на котором будет происходить распознавание, на данный момент поддерживается русский 'ru-RU' и турецкий 't $lang = «ru-RU»;
#генерация рандомного ID. $randtoken=rand(1,1000); $uuid=md5($randtoken);
system('sox '.$filename.'.wav -r 16000 -b 16 -c 1 '.$filename.'-pcm.wav');
#отсылаем файл и получаем в ответ xml
$cmd = exec('curl –form-string «Content-Type=audio/x-pcm;bit=16;rate=16000» -F «audio=@'.$filename.'-pcm.wav» asr.yandex.net/asr_xml\?key='.$key.'\&uuid='.$uuid.'\&topic='.$topic.'\&lang='.$lang, $xml);
$resxml = implode($xml); if (pregmatch('!<variant .>(.)</variant>!si', $resxml, $arr)){ $voicetext = $arr[1];
}
else $voice_text='';
###############
if (intval(substrcount($voicetext, 'оператор')) > 0){
$ress = 1; } #если в результатах есть слово «оператор», то в диалплан возвращаем 1
elseif (intval(substrcount($voicetext, 'заказ')) > 0){
$ress = 2;} #если в результатах есть слово «заказ», то в диалплан возвращаем 2
elseif (intval(substrcount($voicetext, 'секретарь')) > 0){
$ress = 3;} #если в результатах есть слово «секретарь», то в диалплан возвращаем 3
elseif (intval(substrcount($voicetext, 'менеджер')) > 0){
$ress = 4;} #если в результатах есть слово «менеджер», то в диалплан возвращаем 4
else
{$ress = 0;} #если совпадения не найдено, то 0
#####################
#передаём ответ от скрипта в поток ввода echo 'SET VARIABLE TEXT «'.$ress.'»'.«\n»; fgets(STDIN); echo 'VERBOSE («'.$ress.'»)'.«\n»; fgets(STDIN); exit(0); ?>