Команда ask

Новые релизы, обновления и т.п.

Модератор: immortal

Аватара пользователя
savenko_egor
Сообщения: 705
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 147 раз
Контактная информация:

Re: Команда ask

Сообщение savenko_egor » Чт июл 12, 2018 4:00 pm

dance12r писал(а):
Чт июл 12, 2018 3:55 pm
отправить команду ask на терминал с которого был произведен запрос
Для этого есть sayTo и sayReply: Новое в работе с терминалами, sayTo, sayReply.
dance12r писал(а):
Чт июл 12, 2018 3:55 pm
отправить команду на все терминалы с MajorDroid, согласно первому сообщению
Как вариант перебирать циклом терминалы.
За это сообщение автора savenko_egor поблагодарил:
Samir77 (Пн окт 22, 2018 12:42 am)
Рейтинг: 1.16%
Аватара пользователя
dance12r
Сообщения: 105
Зарегистрирован: Пн июл 17, 2017 12:14 pm
Откуда: Киев
Благодарил (а): 10 раз
Поблагодарили: 47 раз

Re: Команда ask

Сообщение dance12r » Чт июл 12, 2018 4:06 pm

Но ведь команда аск создана для того,чтоб инициировать распознавание автоматически, без надобности говорить ключевое слово или нажимания соответствующей кнопки в мобильном приложении. И ведь работает же, но только с четко указаным терминалом... если я правильно понял, так как я себе наметил оно работать не будет?
Raspberry Pi 3 + Broadlink + MySensors + MDM VoiceAssistant
Аватара пользователя
dance12r
Сообщения: 105
Зарегистрирован: Пн июл 17, 2017 12:14 pm
Откуда: Киев
Благодарил (а): 10 раз
Поблагодарили: 47 раз

Re: Команда ask

Сообщение dance12r » Пт июл 20, 2018 4:31 pm

Вообщем не дает покоя мне эта команда)
посмотрел как делается выборка по каким теминалам рассылать запрос если явно не указан IP:

Код: Выделить всё

SELECT * FROM terminals WHERE 1 AND MAJORDROID_API=1 AND (NAME LIKE '' OR TITLE LIKE '');
к сожелению ответ всегда будет пустым(.

Рабочий вариант запроса у меня выглядит так:

Код: Выделить всё

SELECT * FROM terminals WHERE IS_ONLINE=1 AND MAJORDROID_API=1
PS:
вот эту конструкцию я так думаю полагалось использовать для возможности указания не только IP терминала но и его имени

Код: Выделить всё

AND (NAME LIKE '' OR TITLE LIKE '');
но тогда, мне кажется, что нужно было добавить еще одно ЕСЛИ.

как то так

Код: Выделить всё

function ask($prompt, $target = '') {
    processSubscriptions('ASK', array('prompt' => $prompt, 'target' => $target));

    $service_port='7999';
    $in='ask:'.$prompt;

    if (preg_match('/^[\d\.]+$/',$target)) {
        $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
        if ($socket) {
            $result = socket_connect($socket, $target, $service_port);
            if ($result) {
                socket_write($socket, $in, strlen($in));
            }
        }
        socket_close($socket);
    } elseif(preg_match('/^[a-zA-Z]+$/',$target)) {        
        $qry=1;
        $qry.=" AND MAJORDROID_API=1";
        $qry.=" AND (NAME LIKE '".DBSafe($target)."' OR TITLE LIKE '".DBSafe($target)."')";
        $terminals = SQLSelect("SELECT * FROM terminals WHERE IS_ONLINE=$qry");
        $total = count($terminals);
        for ($i = 0; $i < $total; $i++) {
            $address = $terminals[$i]['HOST'];
            $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
            if ($socket) {
                $result = socket_connect($socket, $address, $service_port);
                if ($result) {
                    socket_write($socket, $in, strlen($in));
                }
            }
            socket_close($socket);
        }
    } else {
        $qry=1;
        $qry.=" AND MAJORDROID_API=1";
        $terminals = SQLSelect("SELECT * FROM terminals WHERE IS_ONLINE=$qry");
        $total = count($terminals);
        for ($i = 0; $i < $total; $i++) {
            $address = $terminals[$i]['HOST'];
            $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
            if ($socket) {
                $result = socket_connect($socket, $address, $service_port);
                if ($result) {
                    socket_write($socket, $in, strlen($in));
                }
            }
            socket_close($socket);
        }
    }
}
За это сообщение автора dance12r поблагодарили (всего 3):
skysilver (Пт июл 20, 2018 9:47 pm) • Gelezako (Вс июл 22, 2018 12:16 pm) • Logrus (Пн июл 23, 2018 2:04 am)
Рейтинг: 3.49%
Raspberry Pi 3 + Broadlink + MySensors + MDM VoiceAssistant
Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Команда ask

Сообщение Gelezako » Вс июл 22, 2018 12:18 pm

в какой это файле? dance12r, можете оформить это пуле реквестом в проект с описанием, которое тут?
https://github.com/sergejey/majordomo
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Аватара пользователя
dance12r
Сообщения: 105
Зарегистрирован: Пн июл 17, 2017 12:14 pm
Откуда: Киев
Благодарил (а): 10 раз
Поблагодарили: 47 раз

Re: Команда ask

Сообщение dance12r » Вс июл 22, 2018 5:29 pm

Сегодня сделаю
Raspberry Pi 3 + Broadlink + MySensors + MDM VoiceAssistant
Аватара пользователя
savenko_egor
Сообщения: 705
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 147 раз
Контактная информация:

Re: Команда ask

Сообщение savenko_egor » Вс июл 22, 2018 5:34 pm

Только в альфа ветку делайте. Сергей туда принимает.
Аватара пользователя
dance12r
Сообщения: 105
Зарегистрирован: Пн июл 17, 2017 12:14 pm
Откуда: Киев
Благодарил (а): 10 раз
Поблагодарили: 47 раз

Re: Команда ask

Сообщение dance12r » Вс июл 22, 2018 8:00 pm

Gelezako писал(а):
Вс июл 22, 2018 12:18 pm
в какой это файле? dance12r, можете оформить это пуле реквестом в проект с описанием, которое тут?
https://github.com/sergejey/majordomo
это файл -

Код: Выделить всё

lib/common.class.php
Пул реквест оформил
За это сообщение автора dance12r поблагодарил:
Gelezako (Пт июл 27, 2018 11:08 am)
Рейтинг: 1.16%
Raspberry Pi 3 + Broadlink + MySensors + MDM VoiceAssistant
artemon25
Сообщения: 112
Зарегистрирован: Чт авг 25, 2016 10:33 pm
Благодарил (а): 15 раз
Поблагодарили: 6 раз

Re: Команда ask

Сообщение artemon25 » Ср сен 05, 2018 11:57 pm

я конечно извиняюсь но как уточнить какая ветка у меня альфа мастер или какая то другая ? вообще ни разу не вникал в это
Аватара пользователя
savenko_egor
Сообщения: 705
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 147 раз
Контактная информация:

Re: Команда ask

Сообщение savenko_egor » Чт сен 06, 2018 12:02 am

artemon25 писал(а):я конечно извиняюсь но как уточнить какая ветка у меня альфа мастер или какая то другая ? вообще ни разу не вникал в это
Если в конфиге МД не указана ссылка на альфа ветку, то Вы на мастер ветке.
За это сообщение автора savenko_egor поблагодарил:
artemon25 (Чт сен 06, 2018 4:55 pm)
Рейтинг: 1.16%
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Команда ask

Сообщение xor » Чт сен 06, 2018 12:38 am

Вот бы ещё Алиса при ask и в нужном контексте бы была! Как в context_activate...
Ответить