0
Answered

Яндекс Алиса

Дмитрий Марков 4 months ago in Tips and Tricks • updated by Aleksandr Romanov (CTO) yesterday at 3:58 a.m. 54

Добрый день!


Есть ли поддержка Яндекс Станции?

+1

Нет ответа или проверятся возможность?

Answered

Добрый день.

Станция сейчас не поддерживается, т. к. навык должен пройти дополнительную проверку в Яндексе и быть полностью управляем голосом. Сейчас пока ни первое, ни второе не сделано.

Когда планируется?

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

+3

Добрый день!

Навык прошел проверку на совместимость с Яндекс.Станция и доступен для применения

Отличная новость! Теперь можно заказывать Яндекс.Станцию.

Подключать по такой-же схеме, как и в телефоне?

А нельзя Алисе отдать текстовый ответ, чтобы она его произнесла вместо "выполнено" в варианте с фиктивным тегом?

Это в планах на разработку, пока не отдать ответ.

Да, было бы здорово получать ответы от Алисы по состоянию домашней системы! 

+1

В ближайшем релизе для Алисы появится функционал с произвольным ответом

Протестировал Яндекс-Алису. Для запуска навыка нужно сказать ей "Запусти навык Иридиум", после чего система по фразе "Слушай, Алиса" ожидает и выполняет известные ей команды. При этом перестает работать другой стандартный функионал Алисы, например, нельзя узнать погоду, т.к. Алиса в навыке Иридиум ответит, что "tag какая сегодня погода not found in project". Фразы "прекрати" и "хватит" не останавливают работу навыка Иридий как заявлено в описании. То есть, если управлять, например, через Яндекс- браузер или приложение на телефоне, то выходить из навыка приходится вручную нажимая на кнопку. Как это будет работать в Яндекс.Станции вообще не понятно. Видимо, Алиса будет постоянно сидеть в навыке Иридиум и остальные ее возможности будут заблокированы. Подскажите, это ошибка работы навыка или действительно есть такая особенность в Алисе.


  

Я изначально тоже думал, что говорить Алисе команды можно сразу (в том окне, где узнать про погоду и т.д.). Но есть маленькое неудобство (может конечно, я чего-то не понял), чтобы "общаться" с Иридиумом через Алису, надо постоянно заходить в навык Иридий, а чтобы узнать погоду, надо стрелочкой "назад" попасть в главное "слуховое" окно Алисы и там уже задавать другие вопросы. Может есть какая то команда, которая сама этот навык запускает, а не вручную?

в навыке Иридиум, можно вообще не говорить фразу "Слушай Алиса"

Можно не запуская навык (но уже авторизовавшись в нем), сказать "Алиса, скажи Иридиум, включить свет в ...." - это не переключит контекст навыка, но выполнит команду.

Для Станции работает команда "Алиса, хватит".

Для чата на телефоне надо выйти "стрелочкой" - это реализация от Яндекс.

Когда говоришь: " Алиса, скажи иридиум включить свет...", Алиса сначала запускает навык Иридиум, затем выполняет команду, а обратно из навыка не выходит)

В станции это работает нормально, а в "диалогах".... Стоит Вам обратиться в службу техподдержки Яндекса

но уже удобней пользоваться

Добрый день! При заливке проекта через трансфер, сервер не коннектится с сервисом Алиса, теги Yandex Alice.Status и Yandex Alice.Online стоят 0. При загрузке с облака, все нормально

Добрый день!

Это корректное поведение сервера, т.к. для работы драйвера Яндекс.Алиса необходима связь с нашим облаком по уникальному идентификатору проекта, а при передаче через трансфер облако ничего не знает о таком проекте и идентификатор не определен. Любой подобный облачный сервис может тестироваться только через загрузку из облака - это ограничение не обойти.

Тогда эта особенность должна отражаться в документации)

Или, как вариант, ключ облака от Иридиум прописывается изначально в сервере и потом при заливке через трансфер, сервер сам коннектиться к облаку Иридиум и все остальные облачные сервисы.

Допуская "ручное" формирование ключа Вы открываете дорогу ошибкам и злоупотреблениям... Давайте управлять чужой Алисой с неопознанного аккаунта и проекта ;))

Здравствуйте! 

В новом релизе 1.3.3 мы добавили в Алису возможность задавать произвольный ответ. 

Да, уже протестировал в субботу, это на самом деле классная штука. Я правильно понял ответ от Алисы может быть не более 1024 символа? И будет ли работать символ "/n" для переноса строки в ответе от Алисы. И еще, заметил в логах сервера после каждого ответа Алисы появляется сообщение "Error in Alice Answer. Wrong use of square brackets"

  1. Все верно, ответ 1024 символа.
  2. Перенос строки не тестировали, вопрос скорее в техподдержку Яндекс.
  3. Ошибка появляется, если не задана фонетика ответа в квадратных скобках (позволяет "очеловечить" произношение)
в настройках Алисы в квадратных скобках есть текст. Или еще нужно добавить в переменную Answer квадратные скобки?
Скобки в стандартном ответе? А ошибка тоже на стандартный ответ?
Скобки стоят в стандартном ответе в настройках драйвера Алисы. А ответы у меня формируются в зависимости от вопроса, т.е. не стандартные.
Значит описание ошибки соответствует реальности: заполните произношение в ответах и ошибка исчезнет.

Что то Алиса все выходные не работала, ошибка базы данных Иридиум. А в логах сервера вываливается CCustomDevice(YANDEX ALICE(65535)): StartConnect() каждые 0,3 секунды и похоже сервак из-за этого сам перезагружается

Такое частое переподключение обычно означает отсутствие лицензии. Проверьте таковую... Само облако работает нормально.

Возможно ли на смартфоне на главный экран вынести иконку Алисы с навыком Иридиума?

Вопрос в техподдержку Яндекса. В документации мы такой возможности не нашли...

Когда будет реализовано контекстное управление для Алисы?

Но оно не работает.

Что конкретно не работает? И как оно в принципе может не работать? )))

  1. Вы создаете фидбек "Я на кухне", который устанавливает некий системный токен в проекте - это точно будет работать как и обычная команда. Не забываем при установке этого токена сбрасывать остальные, чтобы не было ситуации, что вы одновременно в двух контекстах.
  2. Вы создаете фидбек "Включи свет" на который подписываете несколько рутин, в каждой из которых установлен параметр BUT ONLY IF. Например, для кухни это будет проверка установленного токена из пункта 1.

Что здесь может не сработать???

Уже пробовали в одном проекте это реализовать. Алисе говоришь "Я в спальне", а затем "Включи свет", так включается свет во всех комнатах. Хотя создан виртуальный тег Контекст и созданы сценарии для каждой комнаты, в которых установлен параметр BUT ONLY IF.


свет в спальне.JPG
свет в кинозале.JPG
свет в кабинете.JPG

Покажите скрин, где задается значение тега "Контекст"

Это просто тег, а где обработка команды?

Выше в пункте один я вам описывал, что на поступление фидбека "Я в спальне" должна сработать рутина, которая установит значение виртуального тега Контекст (не рекомендую использовать русские буквы в названии тегов) в значение "Я в спальне", которое вы проверяете в последующих правилах.

А где это описано в документации? И правильно это сделать?

Как правильно это всё сделать?

Рутины выше в скриншотах.

+1

Документацию дополним, но это простейший алгоритм:

  1. Создайте в драйвере Яндекс.Алиса фидбеки: "Я в спальне", "Я в кухне", "Я в детской".
  2. Создайте виртуальные переменные: cont_bedroom, cont_kitchen, cont_childrens
  3. Создайте рутину 1: WHEN Алиса.Фидбек.Я в спальне == 1 THEN cont_bedroom = 1, cont_kitchen = 0, cont_childrens = 0
  4. Создайте рутину 2: WHEN Алиса.Фидбек.Я в кухне == 1 THEN cont_bedroom = 0, cont_kitchen = 1, cont_childrens = 0
  5. Создайте рутину 3: WHEN Алиса.Фидбек.Я в детской == 1 THEN cont_bedroom = 0, cont_kitchen = 0, cont_childrens = 1
  6. Создайте в драйвере Яндекс.Алиса фидбек: "Включи свет"
  7. Создайте рутину 6: WHEN Алиса.Фидбек.Включи свет == 1 THEN Команда.ВключиСветСпальня, BUT_ONLY_IF cont_bedroom = 1
  8. Создайте рутину 7: WHEN Алиса.Фидбек.Включи свет == 1 THEN Команда.ВключиСветКухня, BUT_ONLY_IF cont_kitchen = 1
  9. Создайте рутину 8: WHEN Алиса.Фидбек.Включи свет == 1 THEN Команда.ВключиСветДетская, BUT_ONLY_IF cont_childrens = 1

Так понятнее?

Имеете ввиду создать виртуальные теги cont_bedroom, cont_kitchen, cont_childrens?

Или виртуальные каналы?

Дело в том, что при создании рутины в разделе THEN возможно выбрать только виртуальные каналы. А в разделе BUT ONLY IF возможно выбрать только виртуальные теги. 


Или это лучше через скрипты реализовать?

+1

Извините, пропустил пункт про шлюзование:

2. Создайте виртуальные каналы и теги с одинаковыми названиями: cont_bedroom, cont_kitchen, cont_childrens

2А. Создайте скриптовой модификатор

(документация)

function virtual_to_virtual (in_Type, in_Name, in_Value) 
{
   var namepart = in_Name.split(".");  
   IR.SetVariable("Server.Tags." + in_Name, in_Value);
   return in_Value;
}

2В. Для каждого канала из п.2 пропишите в свойстве Script Modifier название функции из скрипта virtual_to_virtual

Теперь работает!

Но появился другой недочет. Когда Алисе говоришь "Я в спальне", а затем "Включи свет" - свет включается только в спальне. А когда говоришь "Включи весь свет", чтобы включить свет во всей квартире, то команда выполняется успешно, но Алиса говорит: "Команда неизвестна".

Как это исправить?

Обратитесь с этим вопросом в техподдержку, и к тикету приложите проект, в котором все это происходит. Не забудьте указать версию сервера и на какой платформе.