С самим sayTo у ChromeGateMJD проблем нету. Он четко понимает, для него сообщение или нет.Vovix писал(а): какой смысл в sayTo для ChromeGateMJD, если ChromeGateMJD либо произносит ВСЁ что идет в лог Алисы, либо это просто пишет всплывающими сообщениями, но опять ВСЁ!
Вот когда ChromeGateMJD научиться выделять сообщения для себя, тогда будет другое дело!!! Сейчас увы так!!!
В некоторых случаях, sayTo для терминала на ChromeGateMJD может привести к двойному проговариванию, т.к. посколькуи это ни кто, я думаю, не оспаривает,ChromeGateMJD через веб-соккеты подписывается на события ASK, SAY и SAYTO.
ChromeGateMJD сначала возьмет say а потом sayTo (или наоборот) и в итого произнесет (или напишет два раза)
UPD:
хотя я не проводил основательных испытаний sayTo у себя, и конечно могу ошибаться...
и у себя чаще использую просто say
А вот проблема с 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 ситуация обстоит лучше всего, т.к. тут сам МЖД инициирует события на терминале и точно знает, получилось у него или нет.