И снова мне понадобилась ваша помощь:)
Программа работает стабильно, всё очень нравится. Рассказываю о ситуации:
На кухню выведен третий канал акустики и стоит терминал на базе андроид телефона. Если на терминале распознаётся лицо, то скрипт "facedetection"
$ip=$_SERVER['REMOTE_ADDR'];//узнаем IP терминала пославшего запрос
if ($ip == "192.168.0.105") {
$total=(int)$params['faces'];
if ($total>0) {
DebMes("Faces detected at $ip ($total)");
$last_register=(int)registeredEventTime('facedetect'.$ip);
if ((time()-$last_register)>5*60) { //не чаще чем раз в 5 минут
registerEvent('facedetect'.$ip,$total,1);
say("-recognizeid:3 Я слушаю вас",3);
}
}
}
проговаривает в третьем канале текст "Я слушаю вас". И затем запускает распознавание для дальнейших указаний.
Вариант первый - использование микрофона сервера...
К примеру говорю: "включи музыку". Алиса задаёт уточняющий вопрос: "Где именно?". И я даю ответ: "Из домашней коллекции". Вот как это выглядит в программе:
17:13:33 Секундочку
17:13:31 Ответ: id=1 из домашней коллекции 89%
17:13:30 Расспознавание id=1
17:13:30 Конвертирую во flac id=1
17:13:26 Какую именно?
17:13:26 Начало записи id=1
17:13:23 Ответ: id=3 Включи музыку 91%
17:13:22 Расспознавание id=3
17:13:22 Конвертирую во flac id=3
17:13:18 Я слушаю вас
17:13:18 Начало записи id=3
Кусочек кода из шаблона "включи музыку"
if (preg_match('/включи/uis',$original)) {
say('-recognizeid:'.context_getuser().' Какую именно?');
Проблема в том, что SDM не поддерживает контекст, и все остальные ответы озвучивает в канале по умолчанию, а не в третьем, который находится на кухне.
Вариант второй - использование микрофона приложения MojorDroid.
В таком случае вид скрипта "facedetection" будет иметь следующий вид:
$ip=$_SERVER['REMOTE_ADDR'];//узнаем IP терминала пославшего запрос
if ($ip == "192.168.0.105") {
$total=(int)$params['faces'];
if ($total>0) {
DebMes("Faces detected at $ip ($total)");
$last_register=(int)registeredEventTime('facedetect'.$ip);
if ((time()-$last_register)>5*60) { //не чаще чем раз в 5 минут
registerEvent('facedetect'.$ip,$total,1);
say("Я слушаю вас",3);
setTimeOut("canihelp","runScript('AutoRemoteMessage',array('ip'=>'$ip','msg'=>'hi'));",4);
}
}
}
Но тут опять же все уточняющие вопросы воспроизводятся в канале по умолчанию... Не могу пока разобраться, как же заставить SDM продолжать диалог с тем же самым id, чтобы получать ответы в нужной комнате.
И как по нужному id отправлять звук в нужный -outputchannel
Заранее спасибо за разъяснения!
