Перейти к содержанию

Несколько команд в одном сценарии: различия между версиями

Материал из Wiki yaboard
Нет описания правки
Нет описания правки
 
(не показано 14 промежуточных версий 3 участников)
Строка 1: Строка 1:
{{metadesc| Как на один запрос пользователя получить ответы на несколько команд (например, какая погода и сколько ехать до работы)? }}
{{metadesc| Как на один запрос пользователя получить ответы на несколько команд (например, какая погода и сколько ехать до работы)? }}
__NOEDITSECTION__
__NOEDITSECTION__
Внимание!
В данное время автор снял с публикации и отключил навык "Мои сценарии", и не планирует его поддержку в будущем.
Сам код полностью открыт и вы можете использовать его без ограничений. У автора навык работал на Google App Engine, но подойдут и другие варианты развёртывания.
'''Исходные коды''' навыка:
• Код на гитхабе - [https://github.com/and7ey/yandex-station github.com/and7ey/yandex-station].
• Локальная копия снимка на ноябрь 2020 года - [[:Файл:Moi-scenarii-yandex-station-master.zip | на нашей вики]].
'''Другие, более мощные способы''' (поддержка нескольких команд одному устройству, таймеров, отправка текста для озвучивания на колонку, итд):
• [[Таймеры, несколько команд устройству, TTS (Node-RED)]]
• [[Таймеры, несколько команд устройству, TTS (NodeJS)]]
__TOC__
__TOC__


Строка 7: Строка 21:




[https://alice.yandex.ru/smart-home/help/several/scenarios.html Сценарий] в приложении Яндекс - это набор команд, которые может выполнить Алиса на запрос (например, на "Алиса, доброе утро" включить свет и поставить бодрую музыку). Сценарии настраиваются на [https://yandex.ru/quasar/iot специальной странице] или в разделе "Устройства" приложении Яндекс.Браузер.
Сценарий в приложении Яндекс ([https://alice.yandex.ru/smart-home/help/several/scenarios.html официальная Справка], [[Сценарии умного дома с Алисой | описание и примеры на вики]]) - это набор команд, которые может выполнить Алиса на запрос (например, на "Алиса, доброе утро" включить свет и поставить бодрую музыку). Сценарии настраиваются [https://yandex.ru/quasar/iot через веб-интерфейс] в браузере (что не рекомендуется) или в разделе "Устройства" приложения Яндекс (а это официально поддерживаемый способ).


На момент написания статьи Умный дом Яндекса ещё не поддерживает внутри сценария несколько команд для одного устройства. Если сделать сценарий  
На момент написания статьи Умный дом Яндекса ещё не поддерживает внутри сценария несколько команд для одного устройства. Если сделать сценарий  
Строка 19: Строка 33:




Специально созданный навык "[https://alice.ya.ru/s/e7c100ef-e128-4d42-b643-029e48130a89 Мои сценарии]" позволяет запустить несколько сценариев для Станции. Автор планирует поддерживать его работу, пока Яндекс не начнет поддерживать подобные решения "из коробки".
Специально созданный навык "[https://alice.ya.ru/s/e7c100ef-e128-4d42-b643-029e48130a89 Мои сценарии]" позволяет запустить несколько сценариев для Станции.  




Строка 43: Строка 57:
=== Настройка ===
=== Настройка ===


[[Файл:My_scripts_start.jpeg|thumb|Запуск навыка и авторизация]]
[[Файл:My_scripts_settings1.jpeg|thumb|Токен Яндекс и токен Яндекс.Станции]]
[[Файл:My_scripts_settings1-1.jpeg|thumb|Внешний адрес Станции]]
[[Файл:My_scripts_settings2.jpeg|thumb|Сценарий 1 (пример)]]
Для настройки необходимо выполнить следующие шаги:
# Проверить, что аккаунт Яндекса в приложении в телефоне тот же, к которому привязана Станция (или Модуль);
# Запустить навык на Станции или Модуле ("Алиса, запусти навык '[https://alice.ya.ru/s/e7c100ef-e128-4d42-b643-029e48130a89 Мои сценарии]'");
# Сказать "Алиса, авторизация";
# Получить push-уведомление на телефон с запросом авторизации;
# Авторизоваться в аккаунте Google <br>(может потребоваться скопировать URL из Яндекс.Браузера и вставить его в Google Chrome или Apple Safari - авторизация в Google в Яндекс.Браузере не поддерживается со стороны Google);
# Перейти на сайт [//yandex-station.appspot.com yandex-station.appspot.com] и авторизоваться там под Google-аккаунтом из предыдущего шага;
Указать на сайте следующие данные:
* '''Яндекс Токен''' (токен для доступа к вашему Яндекс-аккаунту). Чтобы получить его, пройдите по [https://oauth.yandex.ru/authorize?response_type=token&client_id=23cabbbdc6cd418abb4b39c32c41195d&client_secret=53bc75238f0c4d08a118e51fe9203300 ссылке].
Сайт покажет сообщение - "Авторизация в приложении Яндекс.Музыка не удалась. Возможные причины: Приложение не установлено" - это нормально. Скопируйте получившийся адрес (URL) из адресной строки браузера и вставьте его в соответствующее поле. Можно скопировать как строку целиком, так и только значение между ''#access_token='' и ''&token_type''.
* '''Токен Яндекс.Станции'''. Нажмите кнопку "Получить" - он будет получен автоматически, если  на предыдущем шаге вы указали Яндекс Токен.
Вы также можете самостоятельно указать Токен Яндекс.Станции (если знаете как его получить) и не указывать Яндекс Токен.
* '''Внешний адрес Станции'''. Тут нужно указать IP-адрес вашего роутера, доступный из вне (если у вас белый IP) или URL, если вы используете сервис типа [https://ru.wikipedia.org/wiki/Dyn#DynDNS DynDNS]. Указывать протокол (http://, https://, wss:// и т.п.) - не требуется.
Обратите внимание: на роутере необходимо осуществить проброс портов, чтобы станция стала доступна для приема команд из интернета (см. подробнее, например, тут). По умолчанию используется порт 1961. Если вы настроили в роутере другой порт, то укажите его в данном поле напрямую, например, :12345. Обратите также внимание: IP-адреса вида 192.168.xxx.xxx вряд ли являются вашими внешними IP-адресами. Проверьте свой адрес, например, на https://ip.yandex.ru.
* '''Сценарий 1''' и '''Сценарий 2'''. Тут можно задать до трех команд в каждом сценарии. Можно использовать любые команды, которые воспринимает Алиса. Например, "расскажи погоду", "сколько ехать до работы". Можно обращаться и к сторонним навыкам. Например, "спроси у моего ассистента у кого сегодня день рождения". Или можно просто попросить Алису сказать какую-то фразу, например, "''повтори за мной'' Какой чудесный день".
В настоящий момент Станция не отдает статус - когда она закончила отвечать на предыдущий запрос (либо выполнять предыдущую команду), поэтому необходимо вручную задать паузы между командами.
Пауза указывается в том же поле, где и сама команда, - после символа ^.
Например, "погода^8" означает, что Алиса сможет рассказывать погоду в течение 8 секунд, а потом перейдет к выполнению следующей команды. Если паузу не задать, то будет использоваться пауза по умолчанию - 3 секунды.


Для настройки необходимо выполнить следующие шаги:
 
# Запустить навык "[https://alice.ya.ru/s/e7c100ef-e128-4d42-b643-029e48130a89 Мои сценарии]" на Станции или Модуле командой "Алиса, запусти навык Мои сценарии";
=== Удобные команды запуска ===
# Сказать Алисе "Авторизация";
# Получить push-уведомление на телефон с запросом авторизации; <br>[[Файл:My_scripts_start.jpeg|200px]]
# Убедиться, что в телефоне вы авторизованы под тем же аккаунтом Яндекса, что привязан к вашей Станции или Модулю;
# Выполнить авторизацию в Google-аккаунте (для выполнения этого шага может потребоваться скопировать URL из Яндекс.Браузера и вставить его в Google Chrome или Apple Safari - авторизация в Google в Яндекс.Браузере не поддерживается со стороны Google);
# Перейти на сайт https://yandex-station.appspot.com и авторизоваться там под тем же Google-аккаунтом, что использовался выше;
# Указать следующие данные:
## Яндекс Токен (токен для доступа к вашему Яндекс-аккаунту). Чтобы получить токен, пройдите по [https://oauth.yandex.ru/authorize?response_type=token&client_id=23cabbbdc6cd418abb4b39c32c41195d&client_secret=53bc75238f0c4d08a118e51fe9203300 ссылке]. Сайт покажет сообщение - "Авторизация в приложении Яндекс.Музыка не удалась. Возможные причины: Приложение не установлено" - это нормально. Скопируйте получившийся адрес (URL) из адресной строки браузера и вставьте его в соответствующее поле. Можно скопировать как строку целиком, так и только значение между ''#access_token='' и ''&token_type''. <br>[[Файл:My_scripts_settings1.jpeg|200px]]
## Токен Яндекс.Станции. Нажмите кнопку Получить - токен будет получен автоматически, если вы указали Яндекс Токен на предыдущем шаге. Вы также можете самостоятельно указать Токен Яндекс.Станции (если знаете как его получить) и не указывать Яндекс Токен.
## Внешний адрес станции. Тут нужно указать IP-адрес вашего роутера, доступный из вне (если у вас белый IP) или URL, если вы используете сервис типа [https://ru.wikipedia.org/wiki/Dyn#DynDNS DynDNS]. Указывать протокол (http://, https://, wss:// и т.п.) - не требуется. Обратите внимание: на роутере необходимо осуществить проброс портов, чтобы станция стала доступна для приема команд из интернета (см. подробнее, например, тут). По умолчанию используется порт 1961. Если вы настроили в роутере другой порт, то укажите его в данном поле напрямую, например, :12345. Обратите также внимание: IP-адреса вида 192.168.xxx.xxx вряд ли являются вашими внешними IP-адресами. Проверьте свой адрес, например, на https://ip.yandex.ru.<br>[[Файл:My_scripts_settings1-1.jpeg|200px]]
## Сценарий 1 и Сценарий 2. Тут можно задать до трех команд в каждом сценарии. Можно использовать любые команды, которые воспринимает Алиса. Например, "расскажи погоду", "сколько ехать до работы". Можно обращаться и к сторонним навыкам. Например, "спроси у моего ассистента у кого сегодня день рождения". Или можно просто попросить Алису сказать какую-то фразу, например, "''повтори за мной'' Какой чудесный день". В настоящий момент Станция не отдает статус - когда она закончила отвечать на предыдущий запрос (=выполнять предыдущую команду), потому необходимо вручную задавать паузы между командами. Паузу указывается в том же поле, где и сама команда, - после символа ^. Например, "погода^8" означает, что Алиса сможет рассказывать погоду в течение 8 секунд, а потом перейдет к выполнению следующей команды. Если паузу не задать, то будет использоваться пауза по умолчанию - 3 секунды.<br>[[Файл:My_scripts_settings2.jpeg|200px]]




=== Использование ===
Конечно, сценарии уже сейчас можно вызывать командой "Алиса, попроси Мои сценарии запустить Сценарий 1" (или Сценарий 2), но это не очень красиво.


Чтобы было ещё удобнее работать с навыком, создайте в приложении Яндекс сценарий:
* Перейдите [https://quasar.yandex.ru/skills/iot по ссылке];
* Выберите Сценарии, нажмите + (плюс), Добавить сценарий;
* Выберите событие "Фраза" и введите фразу, например, "Доброе утро";
* Затем нажмите "+", затем "Устройство" и выберите Яндекс.Станцию;
* Укажите "Попроси Мои сценарии запустить Сценарий 1".


Сценарии можно вызывать командой "Алиса, попроси Мои сценарии запустить Сценарий 1" (или Сценарий 2), но это неудобно. Чтобы сделать применение сложных сценариев более удобным, создайте сценарий для запуска сценариев из навыка. Для этого перейдите по [https://quasar.yandex.ru/skills/iot ссылке], выберите Сценарии, нажмите + (плюс), Добавить сценарий, Выберите событие Фраза и введите фразу, например, "Доброе утро". Затем нажмите + Устройство и выберите Яндекс.Станцию, там укажите "попроси Мои сценарии запустить Сценарий 1". Теперь по запросу "Алиса, доброе утро", Алиса будет выполнять те команды, что вы указали для сценария 1.
Теперь по запросу "Алиса, доброе утро", Алиса будет выполнять команды из "сценария 1" навыка.




Строка 67: Строка 104:




Безопасно ли передавать свои данные стороннему сайту (https://yandex-station.appspot.com)? И нет, и да.
'''Безопасно ли передавать свои данные''' стороннему сайту (https://yandex-station.appspot.com)?  
# Если вы знаете, как самостоятельно получить Токен Яндекс.Станции - укажите только его, не указывайте Яндекс Токен. Таким образом, вы дадите доступ лишь к своей станции, а не к аккаунта Яндекса (в части Яндекс.Музыки, т.к. используется именно доступ Яндекс.Музыки для получения Яндекс Токена).
 
# Яндекс Токен можно стереть или указать другой после получения Токена Яндекс.Станции.
И нет, и да.
# Что можно сделать, зная Токен Яндекс.Станции? Управлять вашей станцией - отправлять ей запросы. Включать вам музыку, например.
# Если вы знаете, как самостоятельно получить токен Яндекс.Станции - укажите только его, не указывайте общий токен для Яндекса. Таким образом, вы дадите доступ только к Станции, а не ко всем сервисам Яндекса (в том числе Яндекс.Музыки, т.к. используется именно её доступ для получения токена).
# В части использования аккаунта от Google - тут все безопасно. используется стандартная [https://ru.wikipedia.org/wiki/OAuth OAuth-авторизация] - сайту передается лишь ваш email (о чем Google предупреждает в момент авторизации). Более никаких данных не передается. Проверить это и отключить доступ можно [https://myaccount.google.com/permissions тут] (ищите Мои сценарии в списке).
# Яндекс-токен можно удалить (или указать другой) после получения токена Яндекс.Станции.
# Что можно сделать, зная токен Яндекс.Станции? Управлять вашей Станцией: включать на ней музыку, например.
# Использование аккаунта Google безопасно (используется стандартная [https://ru.wikipedia.org/wiki/OAuth OAuth-авторизация]). Сайту передается только email (о чём Google предупреждает при авторизации).  
 
Никаких других данных в Google не передается. Проверить это и отключить доступ в самом [https://myaccount.google.com/permissions аккаунте Google] (ищите в списке "Мои сценарии").




[[Category:Навыки]]
[[Category:Умный дом]]
[[Category:Умный дом]]
[[Category:Решение проблем]]

Текущая версия от 04:47, 27 октября 2021

Внимание! 
В данное время автор снял с публикации и отключил навык "Мои сценарии", и не планирует его поддержку в будущем.
Сам код полностью открыт и вы можете использовать его без ограничений. У автора навык работал на Google App Engine, но подойдут и другие варианты развёртывания.
Исходные коды навыка:
• Код на гитхабе - github.com/and7ey/yandex-station. 
• Локальная копия снимка на ноябрь 2020 года -  на нашей вики.

Другие, более мощные способы (поддержка нескольких команд одному устройству, таймеров, отправка текста для озвучивания на колонку, итд):
• Таймеры, несколько команд устройству, TTS (Node-RED)
• Таймеры, несколько команд устройству, TTS (NodeJS)

Что такое сценарий?

Сценарий в приложении Яндекс (официальная Справка, описание и примеры на вики) - это набор команд, которые может выполнить Алиса на запрос (например, на "Алиса, доброе утро" включить свет и поставить бодрую музыку). Сценарии настраиваются через веб-интерфейс в браузере (что не рекомендуется) или в разделе "Устройства" приложения Яндекс (а это официально поддерживаемый способ).

На момент написания статьи Умный дом Яндекса ещё не поддерживает внутри сценария несколько команд для одного устройства. Если сделать сценарий

  1. Умная колонка -> Алиса, Расскажи погоду;
  2. Умная колонка -> Алиса, Сколько ехать на работу;
  3. Умная колонка -> Алиса, Спроси у моего ассистента сколько ехать на работу;

выполнится только одна из команд.

Решение при помощи навыка "Мои сценарии"

Специально созданный навык "Мои сценарии" позволяет запустить несколько сценариев для Станции.

Демонстрация результата

Видео, демонстрирующее возможности навыка (ссылка на YouTube).

Это, конечно, только один из возможных вариантов настройки, всё зависит только от вашей фантазии и пожеланий.

Ограничения

  1. Решение работает только для Яндекс.Станции и Яндекс.Модуля (не работает с мини, irbis, dexp);
  2. Несколько команд не получится задать для других устройств умного дома (только Станция и Модуль);
  3. Необходим белый (статический) IP-адрес, или использования сервисов типа DynDNS
  4. Паузы между командами задаются вручную;
  5. Потребуется также аккаунт Google.

Настройка

Запуск навыка и авторизация
Токен Яндекс и токен Яндекс.Станции
Внешний адрес Станции
Сценарий 1 (пример)

Для настройки необходимо выполнить следующие шаги:

  1. Проверить, что аккаунт Яндекса в приложении в телефоне тот же, к которому привязана Станция (или Модуль);
  2. Запустить навык на Станции или Модуле ("Алиса, запусти навык 'Мои сценарии'");
  3. Сказать "Алиса, авторизация";
  4. Получить push-уведомление на телефон с запросом авторизации;
  5. Авторизоваться в аккаунте Google
    (может потребоваться скопировать URL из Яндекс.Браузера и вставить его в Google Chrome или Apple Safari - авторизация в Google в Яндекс.Браузере не поддерживается со стороны Google);
  6. Перейти на сайт 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)?

И нет, и да.

  1. Если вы знаете, как самостоятельно получить токен Яндекс.Станции - укажите только его, не указывайте общий токен для Яндекса. Таким образом, вы дадите доступ только к Станции, а не ко всем сервисам Яндекса (в том числе Яндекс.Музыки, т.к. используется именно её доступ для получения токена).
  2. Яндекс-токен можно удалить (или указать другой) после получения токена Яндекс.Станции.
  3. Что можно сделать, зная токен Яндекс.Станции? Управлять вашей Станцией: включать на ней музыку, например.
  4. Использование аккаунта Google безопасно (используется стандартная OAuth-авторизация). Сайту передается только email (о чём Google предупреждает при авторизации).
Никаких других данных в Google не передается. Проверить это и отключить доступ в самом аккаунте Google (ищите в списке "Мои сценарии").