Новое в работе с терминалами, sayTo, sayReply
Модератор: immortal
-
- Сообщения: 50
- Зарегистрирован: Пн ноя 19, 2018 10:14 pm
- Благодарил (а): 15 раз
- Поблагодарили: 5 раз
Re: Новое в работе с терминалами, sayTo, sayReply
Подскажите поподробнее как это можно в сценариях использовать для определения терминала?tarasfrompir писал(а): ↑Вт ноя 20, 2018 8:22 amтак тебе мажордроид апи использовать надо и этот процесс разработки уже сделан давно людьми ...
Ну или свое писать - так там есть переменная
$rec['ROOM_ID'] = 0; и
$rec['MEMBER_ID'] = 0;
которых достаточно для идентификации местоположения терминала... и пользователя
- ovcher
- Сообщения: 183
- Зарегистрирован: Сб сен 12, 2015 3:11 am
- Откуда: Волгоград
- Благодарил (а): 60 раз
- Поблагодарили: 39 раз
- Контактная информация:
Re: Новое в работе с терминалами, sayTo, sayReply
Я вот тут когда то писал про костыль с паузами viewtopic.php?f=7&t=2993&p=86390#p86390 . Прошло время и он благополучно сломался. Вот я решил отметится по данной проблеме еще раз.
Очередной костыль. По моему, здесь мне задавали следующий вопрос: При голосовой команде, из шаблона поведения, запускается сложный сценарий голосового воспроизведения с выборкой данных из свойств. Примеры таких сценариев, например, Read5News, sayWeatherYandex, Demo01... При его отработке, теряются фразы, а в некоторых усугубленных случаях помимо потери фраз наблюдается еще и путаница, ну допустим, в сценарии sayWeatherYandex первым в очереди стоит воспроизведение температуры, далее влажности и наконец атмосферного давления, Алиса воспроизводит давление, потом температуру, а влажность и вовсе пропускает. Собственно вопрос, что с этим делать? Ответ. Я подметил одну особенность. Если запустить сценарий прямой ссылкой(той что указана, в сценарии, под кнопкой сохранить: http://192.168.1.10/ob…ript=sayWeatherYandex) то сценарий отрабатывает прекрасно. А вот если его вызывать как положено( runScript('sayWeatherYandex'); ), или из поля(Выполнить при совпадении), или даже значком молнии справа от имени сценария то начинаются проблемы. Так вот я подметил что во всех этих вариантах система формирует весьма дурную ссылку которая чрезвычайно долго грузится и соответственно отрабатывает через задницу. Итак, для наглядности, вот ссылка которая работает прекрасно: ,а вот то что формирует система:
Собственно костыль. В шаблоне поведения, вызывать сценарий через ссылку, а именно в поле кода прописать:
Это, естественно, сказано как временное решение проблемы, тут работа скорее всего для Сергея. А сказал я это для того чтобы, с одной стороны люди могли временно исправить проблему, а с другой, ув. Гуру могли бы поделиться своими соображениями почему оно так? Тут понятно, что имеет место прямой вызов и "кривой" по идентификатору, может кто копал чем это обусловлено и почему оно плывет? Я еще глубоко не рыл, просто подметил и подставил временный костыль, которым, собственно, и решил поделиться.
Очередной костыль. По моему, здесь мне задавали следующий вопрос: При голосовой команде, из шаблона поведения, запускается сложный сценарий голосового воспроизведения с выборкой данных из свойств. Примеры таких сценариев, например, Read5News, sayWeatherYandex, Demo01... При его отработке, теряются фразы, а в некоторых усугубленных случаях помимо потери фраз наблюдается еще и путаница, ну допустим, в сценарии sayWeatherYandex первым в очереди стоит воспроизведение температуры, далее влажности и наконец атмосферного давления, Алиса воспроизводит давление, потом температуру, а влажность и вовсе пропускает. Собственно вопрос, что с этим делать? Ответ. Я подметил одну особенность. Если запустить сценарий прямой ссылкой(той что указана, в сценарии, под кнопкой сохранить: http://192.168.1.10/ob…ript=sayWeatherYandex) то сценарий отрабатывает прекрасно. А вот если его вызывать как положено( runScript('sayWeatherYandex'); ), или из поля(Выполнить при совпадении), или даже значком молнии справа от имени сценария то начинаются проблемы. Так вот я подметил что во всех этих вариантах система формирует весьма дурную ссылку которая чрезвычайно долго грузится и соответственно отрабатывает через задницу. Итак, для наглядности, вот ссылка которая работает прекрасно:
Код: Выделить всё
http://192.168.1.10/objects/?script=sayWeatherYandex
Код: Выделить всё
http://192.168.1.10/admin.php?pd=c2NyaXB0czp7aW5zdGFuY2U9YWRtfQ%3D%3Dpz_cGFuZWw6e2FjdGlvbj1zY3JpcHRzfQ%3D%3Dpz_&md=scripts&inst=adm&view_mode=run_script&id=24
Код: Выделить всё
getURL('http://192.168.1.10/objects/?script=sayWeatherYandex',0);
- Рейтинг: 1.16%
-
- Сообщения: 11
- Зарегистрирован: Чт дек 07, 2017 10:37 pm
- Откуда: Москва
- Благодарил (а): 1 раз
- Поблагодарили: 0
Re: Новое в работе с терминалами, sayTo, sayReply
у меня перемешивается когда нужно проговаривать инфо с разных скриптов, не успевает договорить с первого, и начинает второй. попробовал прописать в один скрипт через getURL несколько, та же беда.
было и из одного скрипта слова путались. решил так: sayReply($txt.".".$txt1.".".$txt2.".".$txt3.".".$status.".".$status1....
было и из одного скрипта слова путались. решил так: sayReply($txt.".".$txt1.".".$txt2.".".$txt3.".".$status.".".$status1....
- tarasfrompir
- Сообщения: 3216
- Зарегистрирован: Ср мар 02, 2016 8:18 pm
- Откуда: Украина Пирятин
- Благодарил (а): 223 раза
- Поблагодарили: 816 раз
Re: Новое в работе с терминалами, sayTo, sayReply
Я пока не могу предложить боле-менее нормального варианта - пока в разработке...Vibe писал(а): ↑Вс июн 23, 2019 8:01 pmу меня перемешивается когда нужно проговаривать инфо с разных скриптов, не успевает договорить с первого, и начинает второй. попробовал прописать в один скрипт через getURL несколько, та же беда.
было и из одного скрипта слова путались. решил так: sayReply($txt.".".$txt1.".".$txt2.".".$txt3.".".$status.".".$status1....
Спасибо нам ПОМОЖЕТ..!
Re: Новое в работе с терминалами, sayTo, sayReply
Всем массовый Трям!
Пробовал найти, но не нашел.
Как воспроизвести сообщение ТОЛЬКО на терминале 'MANI', который является сервером MD.
Команда sayTo("Привет",2,"MAIN") пишет текст, но не произносит.
В то время как указание других терминалов (на MajorDroid) работает (проговаривает текст чере TTS)
Команда sayReply тут не поможет, т.к. нет того, кто сделал запрос, сообщение воспроизводится самостоятельно (например по даймеру)
Пробовал найти, но не нашел.
Как воспроизвести сообщение ТОЛЬКО на терминале 'MANI', который является сервером MD.
Команда sayTo("Привет",2,"MAIN") пишет текст, но не произносит.
В то время как указание других терминалов (на MajorDroid) работает (проговаривает текст чере TTS)
Команда sayReply тут не поможет, т.к. нет того, кто сделал запрос, сообщение воспроизводится самостоятельно (например по даймеру)
Re: Новое в работе с терминалами, sayTo, sayReply
Победил таким способом
$ip = $_SERVER['REMOTE_ADDR'];
$Record = SQLSelectOne("SELECT NAME FROM terminals WHERE HOST='$ip'");
$out = $Record['NAME'];
sayTo("Приветившие",5,$out);
отвечает терминалу
определяет ip отправителя, в базе находит название терминала по ip в переменную $out
$ip = $_SERVER['REMOTE_ADDR'];
$Record = SQLSelectOne("SELECT NAME FROM terminals WHERE HOST='$ip'");
$out = $Record['NAME'];
sayTo("Приветившие",5,$out);
отвечает терминалу
определяет ip отправителя, в базе находит название терминала по ip в переменную $out