Страница 9 из 38

Re: Модуль API.AI

Добавлено: Ср янв 10, 2018 3:24 pm
Gelezako
nick7zmail писал(а):Явно не хватает приоритетов - что сперва отрабатывать, что потом...например:
Простые устройства -> Шаблоны поведения -> Api.AI. Если команда не исполнена на одном из уровней - передаём на следующий...причем желательно, чтобы была возможность переставить первые 2 местами.
согласен, осталось только найти кто эти хотелки сделает :)
Думаю что в этом плане ещё не скоро что-то поменяется.

Re: Модуль API.AI

Добавлено: Ср янв 10, 2018 3:56 pm
nick7zmail
Да мне хотя бы чтобы input.unknown отрабатывалась нормально, а не на включение простых устройств)))

Re: Модуль API.AI

Добавлено: Сб янв 13, 2018 5:15 pm
fandaymon
В Общих настройках системы есть вкладка Обработчики. В ней пункт HOOK_EVENT_COMMAND:, в котором указываются с каким приоритетом будут отрабатывать сообщения простые устройства (devices) и apiai. По умолчанию и у тех и у других стоит приоритет 100, поэтому иногда простые устройства будут срабатывать первыми, а иногда наоборот. Т.е. чтобы нормально отрабатывалась input.unknown надо поменять приоритет Простым устройствам, например, на 50...
Что касается второй проблемы - то что сначала отрабатываются простые устройства и apiai, а только потом шаблоны, то там только поменять код. А именно в директории var/www/lib файл common.class.php

В функции say вместо

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

 if ($member_id)
   {
      $processed=processSubscriptions('COMMAND', array('level' => $level, 'message' => $ph, 'member_id' => $member_id));
       if (!$processed) {
           include_once(DIR_MODULES . 'patterns/patterns.class.php');
           $pt = new patterns();
           $res=$pt->checkAllPatterns($member_id);
           processCommand($ph);
       }
      return;
   }
надо написать

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

  if ($member_id)
   {
      include_once(DIR_MODULES . 'patterns/patterns.class.php');
      $pt = new patterns();
      $res=$pt->checkAllPatterns($member_id);
      if (!$res) {

      $processed=processSubscriptions('COMMAND', array('level' => $level, 'message' => $ph, 'member_id' => $member_id));
        if (!$processed) {
  
           processCommand($ph);
        }
      }
      return;
   }
После этого команды будут проверять сначала в шаблонах, а потом в apiai и простых устройствах.

Re: Модуль API.AI

Добавлено: Сб янв 13, 2018 11:26 pm
nick7zmail
HOOK_EVENT_COMMAND вижу, но поле недоступно для редактирования... как изменить?

Re: Модуль API.AI

Добавлено: Вс янв 14, 2018 12:07 am
fandaymon
nick7zmail писал(а):HOOK_EVENT_COMMAND вижу, но поле недоступно для редактирования... как изменить?
Действительно недоступно... Ну можно в таблице settings поменять

Re: Модуль API.AI

Добавлено: Вс янв 14, 2018 12:17 am
nick7zmail
Поменял...реакции ноль...как отрабатывали оба, так и отрабатывают(( буду копать common.class

Re: Модуль API.AI

Добавлено: Вс янв 14, 2018 12:26 am
fandaymon
nick7zmail писал(а):Поменял...реакции ноль...как отрабатывали оба, так и отрабатывают(( буду копать common.class
Отрабатывают они в любом случае оба, приоритет просто показывает в каком порядке.

В hooks.inc.php processSubscriptions можно глянуть как это работает - то что находится в поле загружается в массив, сортируется по приоритету и выполняется.

Re: Модуль API.AI

Добавлено: Вс янв 14, 2018 12:28 am
nick7zmail
Дак вот не должны они оба отрабатывать)) А то простое устройство нормально реагирует...но при этом в api-ai вызывается input.unknown...
Система при этом говорит сделано, и тут же - я тебя не понимаю, или что нить подобное.
Это явно какой-то бред...

Re: Модуль API.AI

Добавлено: Вс янв 14, 2018 12:44 am
fandaymon
nick7zmail писал(а):Дак вот не должны они оба отрабатывать)) А то простое устройство нормально реагирует...но при этом в api-ai вызывается input.unknown...
Система при этом говорит сделано, и тут же - я тебя не понимаю, или что нить подобное.
Это явно какой-то бред...
Обработчики отрабатываются и один и другой. В тоже время перед отработкой в простых устройствах $processed сбрасывается в 0, поэтому если Простые устройства обрабатываются последними, то система не узнает что apiai нашла шаблон, отработает команду в шаблонах и после этого вызовет метод CommandRecieved, который и скажет про Неизвестную команду.
Поскольку по умолчанию и у Device и у apiai приоритет 100, то отрабатываются они в случайном порядке, поэтому когда apiai отработала последней и нашла шаблон, то выводит только сообщение от apiai, а если последним отрабатывали Простые устройства, то выводилось сообщение и от apiai и сообщение про неизвестную команду....

Re: Модуль API.AI

Добавлено: Вт фев 13, 2018 10:24 am
vitt76
fandaymon писал(а):.................
В функции say вместо
.....................
После этого команды будут проверять сначала в шаблонах, а потом в apiai и простых устройствах.
Скажите, а после обновления системы это нужно будет делать снова?