Страница 3 из 5
Re: Команда ask
Добавлено: Чт июл 12, 2018 4:00 pm
savenko_egor
dance12r писал(а): Чт июл 12, 2018 3:55 pm
отправить команду ask на терминал с которого был произведен запрос
Для этого есть sayTo и sayReply:
Новое в работе с терминалами, sayTo, sayReply.
dance12r писал(а): Чт июл 12, 2018 3:55 pm
отправить команду на все терминалы с MajorDroid, согласно первому сообщению
Как вариант перебирать циклом терминалы.
Re: Команда ask
Добавлено: Чт июл 12, 2018 4:06 pm
dance12r
Но ведь команда аск создана для того,чтоб инициировать распознавание автоматически, без надобности говорить ключевое слово или нажимания соответствующей кнопки в мобильном приложении. И ведь работает же, но только с четко указаным терминалом... если я правильно понял, так как я себе наметил оно работать не будет?
Re: Команда ask
Добавлено: Пт июл 20, 2018 4:31 pm
dance12r
Вообщем не дает покоя мне эта команда)
посмотрел как делается выборка по каким теминалам рассылать запрос если явно не указан 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 терминала но и его имени
но тогда, мне кажется, что нужно было добавить еще одно ЕСЛИ.
как то так
Код: Выделить всё
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);
}
}
}
Re: Команда ask
Добавлено: Вс июл 22, 2018 12:18 pm
Gelezako
в какой это файле? dance12r, можете оформить это пуле реквестом в проект с описанием, которое тут?
https://github.com/sergejey/majordomo
Re: Команда ask
Добавлено: Вс июл 22, 2018 5:29 pm
dance12r
Сегодня сделаю
Re: Команда ask
Добавлено: Вс июл 22, 2018 5:34 pm
savenko_egor
Только в альфа ветку делайте. Сергей туда принимает.
Re: Команда ask
Добавлено: Вс июл 22, 2018 8:00 pm
dance12r
это файл -
Пул реквест оформил
Re: Команда ask
Добавлено: Ср сен 05, 2018 11:57 pm
artemon25
я конечно извиняюсь но как уточнить какая ветка у меня альфа мастер или какая то другая ? вообще ни разу не вникал в это
Re: Команда ask
Добавлено: Чт сен 06, 2018 12:02 am
savenko_egor
artemon25 писал(а):я конечно извиняюсь но как уточнить какая ветка у меня альфа мастер или какая то другая ? вообще ни разу не вникал в это
Если в конфиге МД не указана ссылка на альфа ветку, то Вы на мастер ветке.
Re: Команда ask
Добавлено: Чт сен 06, 2018 12:38 am
xor
Вот бы ещё Алиса при ask и в нужном контексте бы была! Как в context_activate...