Действие — это некоторая полезная работа, которую выполняет скрипт. В скрипте должно быть как минимум одно действие.

Действия выполняются скриптом последовательно друг за другом. Результаты работы одного действия становятся доступными в следующем, и так далее по цепочке. Например, можно на основании результатов работы одного действия решить, что делать и делать ли вообще в следующем действии.

Виды действий

Теперь ассистент может выполнять не только команды, но и некоторые другие действия. Вот их перечень.

Команда

Как и раньше — это просто команда ассистенту. Но отличие все же имеется — многие команды ассистента теперь генерируют в результате работы некоторые переменные. Например, функция Погода генерирует переменную $weather_temp — температура воздуха.

Всякая команда генерирует две переменные:

$response_text — текст команды

$response_speech — речь команды (чаще всего совпадает с $response_text)

Сказать

Это действие позволяет ассистенту сказать одну из фраз. Фраза выбирается случайным образом. Во фразе можно указывать ссылку на какую-либо переменную. Перед произнесением она будет заменена на актуальное значение, либо убрана из фразы, если значения нет.

Диалог

Это действие позволяет организовать диалог с пользователем по ходу выполнения скрипта.

Для этого нужно начать диалог какой-либо фразой (по аналогии с действием «Сказать»). В диалоге нужно также указать хотя бы один шаблон для той команды, которую мы ожидаем от пользователя в ответ.

После того как пользователь ответит, скрипт продолжится (если ответ пользователя подошел под один из шаблонов, либо если диалог работает в Модальном режиме). В контекст скрипта при этом будут добавлены все переменные из сработавшего шаблона, а также переменная $dialog (порядковый номер сработавшего шаблона или 0) и $dialog_src (вся фраза пользователя целиком).

Модальный режим в диалоге

Эта настройка управляет тем, как будет вести себя скрипт, если пользователь произнес команду, не подходящую ни под один из шаблонов диалога.

Если модальный режим включен, то скрипт продолжится. Переменная $dialog будет равна нулю, а переменной $dialog_src не будет вовсе. Конечно, не будут добавлены и переменные из шаблона (так как никакой шаблон не сработал).

Если модальный режим отключен (по-умолчанию), то скрипт будет завершен автоматически, и ассистент выполнит команду пользователя. Скрипт при этому не получит никаких дополнительных уведомлений.

Intent

Это действие позволяет послать любой интент на локальном устройстве любому приложению, сервису или слушателю. Также в параметрах можно использовать переменные.

HTTP запрос

Позволяет послать HTTP запрос на любой URL адрес. В результате работы генерирует несколько переменных:

$http_code — код ответа сервера (например 200 или 404)

$http_status — текст статуса (напрмер OK)

$http_content — полный контент ответа (его можно парсить функциями css и attr)

$http_body — полный текст ответа без тегов, если это HTML

$http_html_body — весь текст внутри тега body, если ответ в формате HTML

$http_html_text — текст, полученный из HTML ответа с помощью CSS селектора (если он указан в параметрах действия). Синтаксис и примеры селекторов можно найти здесь.

$http_html_texts — массив всех строк, полученных с помощью CSS селектора

$http_html_texts_size — размер этого массива

Также, если контент ответа — это JSON формата «{param1: value1, param2: value2}», то такой ответ будет преобразован ассистентом в набор переменных (param1, param2 и т.д.) и добавлен в контекст скрипта.

IFTTT

Это действие позволяет вам запустить любой IFTTT рецепт на выполнение, а также передать ему некоторые параметры (до трех параметров).

IFTTT позволяет вам выполнять действия в десятках и сотнях онлайн сервисов (Facebook, Twitter, Todoist и многие другие), что делает возможным управлять ими голосом с помощью ассистента.

Для работы этого действия необходимо, чтобы вы сперва создали рецепт на сайте IFTTT, где триггером является Maker, а действием — интересующий вас сервис. Таким образом вы можете передать данные из вашего скрипта в нужный рецепт IFTTT и выполнить его.Важно только указать в действии скрипта тот же event, что и в настройках триггера Maker

Посмотрите, как это работает

Перезапуск

Это действие перезапускает текущий скрипт с новыми параметрами (если указаны). При этом изначальные параметры (переменные в контексте скрипта) также остаются. Вы можете переписать их, указав в новых параметрах переменные с теми же именами.

Скрипт начинается сначала, то есть с самого первого действия.

В качестве значений переменных можно использовать вычисляемые выражения с использованием любых поддерживаемых функций и операторов (например len($http_html_texts) + 10)

Сохранить переменную

Это действие позволяет сохранить значение именованной переменной в локальном хранилище. При любом следующем запросе к скрипту эта переменная будет автоматически загружена ассистентом в контекст скрипта.

В качестве значений переменных можно использовать вычисляемые выражения с использованием любых поддерживаемых функций и операторов (например len($http_html_texts) + 10)