Страница 21 из 26

Re: Новое в работе с терминалами, sayTo, sayReply

Добавлено: Чт мар 01, 2018 9:49 pm
olehs
Vovix писал(а): какой смысл в sayTo для ChromeGateMJD, если ChromeGateMJD либо произносит ВСЁ что идет в лог Алисы, либо это просто пишет всплывающими сообщениями, но опять ВСЁ!
Вот когда ChromeGateMJD научиться выделять сообщения для себя, тогда будет другое дело!!! Сейчас увы так!!!

В некоторых случаях, sayTo для терминала на ChromeGateMJD может привести к двойному проговариванию, т.к. поскольку
ChromeGateMJD через веб-соккеты подписывается на события ASK, SAY и SAYTO.
и это ни кто, я думаю, не оспаривает,
ChromeGateMJD сначала возьмет say а потом sayTo (или наоборот) и в итого произнесет (или напишет два раза)

UPD:
хотя я не проводил основательных испытаний sayTo у себя, и конечно могу ошибаться...
и у себя чаще использую просто say
С самим sayTo у ChromeGateMJD проблем нету. Он четко понимает, для него сообщение или нет.

А вот проблема с sayReply известная и давно, так же как и ее причина. На место, где это все происходит я указывал еще в ноябре
https://github.com/sergejey/majordomo/issues/148

Здесь есть 2 проблемы:
1. У МЖД просто нет информации о том, обработал ли кто-то событие SAYTO по веб-сокетам.
2. sayTo возвращает 1 только в том случае, если запрос отработал MajorDroid, потому происходит двойное прогаваривание для всех модулей, подписаных на SAYTO.
Потому в sayReply после SAYTO шлется SAY для всех случаев, кроме ответа на запрос с Majordroid, а потом еще и SAYREPLY - безусловно.

Если заглянуть в тот код, что я привел под спойлером, то можно увидеть, что ChromeGateMJD отфильтровывает сообщения и не произносит в обработчике SAY повторно одну и ту же фразу, потому Vovix, двойное проговаривание выглядит странно. Если есть возможность потестить, с удовольствием поучаствую.

Как разрулить ситуацию с sayReply для ChromeGateMJD, я не знаю. Для остальных обработчиков (типа api.ai) решение есть (немного поправить sayTo), но я не понимаю, почему Сергей так сделал изначально потому и создал issue на гитхабе.

С MajorDroid ситуация обстоит лучше всего, т.к. тут сам МЖД инициирует события на терминале и точно знает, получилось у него или нет.

Re: Новое в работе с терминалами, sayTo, sayReply

Добавлено: Пт мар 02, 2018 12:33 am
olehs
yurik писал(а): И то же самое если написать в чат на дроиде, то тоже ответит всем(((
В Настройках/Терминалы должен быть правильно указан IP устройства с MajorDroid и стоять галочка

Re: Новое в работе с терминалами, sayTo, sayReply

Добавлено: Пт мар 02, 2018 6:25 am
ZyaK
Идем на 9-ю страницу темы и смотрим что там сказано
Пример кода в сценарии:

global $session; //Обращаемся к глобальной переменной
sayTo("Ваш ответ на сценарий", 2, $session->data['TERMINAL']); // 2 - меньше звука нет. $session->data['TERMINAL'] - это имя терминала, которое хранится в сессии.

у меня везде сделано именно так, и все работает, отвечает куда нужно

Re: Новое в работе с терминалами, sayTo, sayReply

Добавлено: Пт мар 02, 2018 10:57 am
yurik
ZyaK писал(а):Идем на 9-ю страницу темы и смотрим что там сказано
Пример кода в сценарии:

global $session; //Обращаемся к глобальной переменной
sayTo("Ваш ответ на сценарий", 2, $session->data['TERMINAL']); // 2 - меньше звука нет. $session->data['TERMINAL'] - это имя терминала, которое хранится в сессии.

у меня везде сделано именно так, и все работает, отвечает куда нужно
Ну походу это пока единственное решение!

Re: Новое в работе с терминалами, sayTo, sayReply

Добавлено: Пт мар 02, 2018 11:03 am
olehs
yurik писал(а):Ну походу это пока единственное решение!
Но, к сожалению, не до конца рабочее. Глобальная переменная $session содержит имя терминала только если к ней обращаться напрямую из кода в шаблонах поведения.
Если у Вас там стоит вызов скрипта или метода, то не сработает. Как вариант, можно в скрипт передавать имя терминала. Но все же, хочется чтобы sayReply правильно заработала.

Re: Новое в работе с терминалами, sayTo, sayReply

Добавлено: Пт мар 02, 2018 11:35 am
Vovix
olehs писал(а):...
потому Vovix, двойное проговаривание выглядит странно. Если есть возможность потестить, с удовольствием поучаствую.
...
Если есть желание получить эффект двойного проговаривания можно попробовать сделать следующее:

Имеем MDM в локальной сети и можем пока про нее забыть!!!
Имеем удаленную сеть (назовем ее Office) в интернете со статическим IP - пусть внешний ip будет zzz.zzz.zzz.zzz
в этой удаленно сети, предположим, имеем ПК с Windows - ip 192.168.0.10 (ну и расширением для хром)
и по wi-fi телефон на Андроид с MajorDroid на борту - ip 192.168.0.12

И так.
В MDM создаем терминал - например с именем DroidOffice и естественно с ip адресом zzz.zzz.zzz.zzz
ну а поскольку мы хотим использовать MajorDroid, то поставим соответствующую галочку в настройках этого терминала!

Далее настраиваем переброску порта 8001 в сети Office на внутренний 192.168.0.10 (Windows)
и до кучи проброску порта 7999 в этой же сети Office на 192.168.0.12 (MajorDroid) и вот это как раз и есть наш терминал DroidOffice по сути!

как вы думаете что будет происходить на ПК с Windows - ip 192.168.0.10 ?
...
А он будет ловить оба и say и sayTo... и мы получаем двойное проговаривание...

Re: Новое в работе с терминалами, sayTo, sayReply

Добавлено: Пт мар 02, 2018 11:55 am
olehs
Ничего себе схема :o

Есть пара вопросов:
1. Что прописано в ChromeGateMJD в настройках в поле Имя терминала
2. Что передается в sayTo ?

Re: Новое в работе с терминалами, sayTo, sayReply

Добавлено: Пт мар 02, 2018 12:09 pm
Vovix
olehs писал(а):Ничего себе схема :o

Есть пара вопросов:
1. Что прописано в ChromeGateMJD в настройках в поле Имя терминала
2. Что передается в sayTo ?
когда я разобрался почему у меня были двойные проговаривания, я от этого всего быстро избавился...
но в том, то и дело (правильный вопрос кстати) в настройках в поле Имя терминала было как раз DroidOffice
(ну там ранее даже везде вместо DroidOffice было просто Office)

Двойное проговаривание было именно на команды say в моём коде!
и видно было что расширение для хром отрабатывает одно и тоже два раза, сначала как SAY потом SAYTO
...
я посмотрел, мы же уже с вами переписывались по этому поводу: https://majordomo.smartliving.ru/forum/ ... =90#p63246

Re: Новое в работе с терминалами, sayTo, sayReply

Добавлено: Пт мар 02, 2018 12:23 pm
olehs
Да, помню ту переписку.
С say такое происходит, если в МЖД в терминалах для теримнала с ChromeGateMJD поставить галку MajorDroid

Re: Новое в работе с терминалами, sayTo, sayReply

Добавлено: Пт мар 02, 2018 12:42 pm
Vovix
olehs писал(а):Да, помню ту переписку.
С say такое происходит, если в МЖД в терминалах для теримнала с ChromeGateMJD поставить галку MajorDroid
вот мне кажется не хватает логики работы с ChromeGateMJD такой-же как с MajorDroid!
и галочку ввести ChromeGateMJD для терминалов!