Несколько команд в одном сценарии
Внимание! В данное время автор снял с публикации и отключил навык "Мои сценарии", и не планирует его поддержку в будущем. Сам код полностью открыт и вы можете использовать его без ограничений. У автора навык работал на Google App Engine, но подойдут и другие варианты развёртывания. Исходные коды навыка: • Код на гитхабе - github.com/and7ey/yandex-station. • Локальная копия снимка на ноябрь 2020 года - на нашей вики. Другие, более мощные способы (поддержка нескольких команд одному устройству, таймеров, отправка текста для озвучивания на колонку, итд): • Таймеры, несколько команд устройству, TTS (Node-RED) • Таймеры, несколько команд устройству, TTS (NodeJS)
Содержание
Что такое сценарий?
Сценарий в приложении Яндекс (официальная Справка, описание и примеры на вики) - это набор команд, которые может выполнить Алиса на запрос (например, на "Алиса, доброе утро" включить свет и поставить бодрую музыку). Сценарии настраиваются через веб-интерфейс в браузере (что не рекомендуется) или в разделе "Устройства" приложения Яндекс (а это официально поддерживаемый способ).
На момент написания статьи Умный дом Яндекса ещё не поддерживает внутри сценария несколько команд для одного устройства. Если сделать сценарий
- Умная колонка -> Алиса, Расскажи погоду;
- Умная колонка -> Алиса, Сколько ехать на работу;
- Умная колонка -> Алиса, Спроси у моего ассистента сколько ехать на работу;
выполнится только одна из команд.
Решение при помощи навыка "Мои сценарии"
Специально созданный навык "Мои сценарии" позволяет запустить несколько сценариев для Станции.
Демонстрация результата
Видео, демонстрирующее возможности навыка (ссылка на YouTube).
Это, конечно, только один из возможных вариантов настройки, всё зависит только от вашей фантазии и пожеланий.
Ограничения
- Решение работает только для Яндекс.Станции и Яндекс.Модуля (не работает с мини, irbis, dexp);
- Несколько команд не получится задать для других устройств умного дома (только Станция и Модуль);
- Необходим белый (статический) IP-адрес, или использования сервисов типа DynDNS
- Паузы между командами задаются вручную;
- Потребуется также аккаунт Google.
Настройка
Для настройки необходимо выполнить следующие шаги:
- Проверить, что аккаунт Яндекса в приложении в телефоне тот же, к которому привязана Станция (или Модуль);
- Запустить навык на Станции или Модуле ("Алиса, запусти навык 'Мои сценарии'");
- Сказать "Алиса, авторизация";
- Получить push-уведомление на телефон с запросом авторизации;
- Авторизоваться в аккаунте Google
(может потребоваться скопировать URL из Яндекс.Браузера и вставить его в Google Chrome или Apple Safari - авторизация в Google в Яндекс.Браузере не поддерживается со стороны Google); - Перейти на сайт yandex-station.appspot.com и авторизоваться там под Google-аккаунтом из предыдущего шага;
Указать на сайте следующие данные:
- Яндекс Токен (токен для доступа к вашему Яндекс-аккаунту). Чтобы получить его, пройдите по ссылке.
Сайт покажет сообщение - "Авторизация в приложении Яндекс.Музыка не удалась. Возможные причины: Приложение не установлено" - это нормально. Скопируйте получившийся адрес (URL) из адресной строки браузера и вставьте его в соответствующее поле. Можно скопировать как строку целиком, так и только значение между #access_token= и &token_type.
- Токен Яндекс.Станции. Нажмите кнопку "Получить" - он будет получен автоматически, если на предыдущем шаге вы указали Яндекс Токен.
Вы также можете самостоятельно указать Токен Яндекс.Станции (если знаете как его получить) и не указывать Яндекс Токен.
- Внешний адрес Станции. Тут нужно указать IP-адрес вашего роутера, доступный из вне (если у вас белый IP) или URL, если вы используете сервис типа DynDNS. Указывать протокол (http://, https://, wss:// и т.п.) - не требуется.
Обратите внимание: на роутере необходимо осуществить проброс портов, чтобы станция стала доступна для приема команд из интернета (см. подробнее, например, тут). По умолчанию используется порт 1961. Если вы настроили в роутере другой порт, то укажите его в данном поле напрямую, например, :12345. Обратите также внимание: IP-адреса вида 192.168.xxx.xxx вряд ли являются вашими внешними IP-адресами. Проверьте свой адрес, например, на https://ip.yandex.ru.
- Сценарий 1 и Сценарий 2. Тут можно задать до трех команд в каждом сценарии. Можно использовать любые команды, которые воспринимает Алиса. Например, "расскажи погоду", "сколько ехать до работы". Можно обращаться и к сторонним навыкам. Например, "спроси у моего ассистента у кого сегодня день рождения". Или можно просто попросить Алису сказать какую-то фразу, например, "повтори за мной Какой чудесный день".
В настоящий момент Станция не отдает статус - когда она закончила отвечать на предыдущий запрос (либо выполнять предыдущую команду), поэтому необходимо вручную задать паузы между командами. Пауза указывается в том же поле, где и сама команда, - после символа ^. Например, "погода^8" означает, что Алиса сможет рассказывать погоду в течение 8 секунд, а потом перейдет к выполнению следующей команды. Если паузу не задать, то будет использоваться пауза по умолчанию - 3 секунды.
Удобные команды запуска
Конечно, сценарии уже сейчас можно вызывать командой "Алиса, попроси Мои сценарии запустить Сценарий 1" (или Сценарий 2), но это не очень красиво.
Чтобы было ещё удобнее работать с навыком, создайте в приложении Яндекс сценарий:
- Перейдите по ссылке;
- Выберите Сценарии, нажмите + (плюс), Добавить сценарий;
- Выберите событие "Фраза" и введите фразу, например, "Доброе утро";
- Затем нажмите "+", затем "Устройство" и выберите Яндекс.Станцию;
- Укажите "Попроси Мои сценарии запустить Сценарий 1".
Теперь по запросу "Алиса, доброе утро", Алиса будет выполнять команды из "сценария 1" навыка.
Безопасность
Безопасно ли передавать свои данные стороннему сайту (https://yandex-station.appspot.com)?
И нет, и да.
- Если вы знаете, как самостоятельно получить токен Яндекс.Станции - укажите только его, не указывайте общий токен для Яндекса. Таким образом, вы дадите доступ только к Станции, а не ко всем сервисам Яндекса (в том числе Яндекс.Музыки, т.к. используется именно её доступ для получения токена).
- Яндекс-токен можно удалить (или указать другой) после получения токена Яндекс.Станции.
- Что можно сделать, зная токен Яндекс.Станции? Управлять вашей Станцией: включать на ней музыку, например.
- Использование аккаунта Google безопасно (используется стандартная OAuth-авторизация). Сайту передается только email (о чём Google предупреждает при авторизации).
Никаких других данных в Google не передается. Проверить это и отключить доступ в самом аккаунте Google (ищите в списке "Мои сценарии").