Эта страница является
переводом страницы
Yandex Alice. Перевод выполнен на 38%.
iRidium for Yandex Alice
voice control via Yandex Alice and iRidium
only for Russian users
документация обновлена 14.11.2018
Алиса - голосовая помощница от Яндекса, которая появилась на свет в 2017 году. Вам достаточно установить Яндекс-браузер с Алисой:
- на смартфон,
- на планшет,
- на ноутбук или компьютер (нужен микрофон).
Вы также можете использовать Алису на Яндекс-Станции.
Операционные системы, на которых Алиса может работать:
Алиса понимает только русский язык. С помощью навыка "Иридий" Алиса может управлять умным домом через iRidium cloud и сервер iRidium. Вы можете произнести команду "Включи свет" и лампочка загорится. Произнесите "Выключи свет" и лампочка погаснет. Всё просто!
Итак, построить умную систему голосового управления просто:
- Установите Яндекс-браузер с Алисой на смартфон, планшет или компьютер.
- Запустите навык "Иридий", который научит Алису взаимодействовать c iRidium.
- Подключитесь к объекту в облаке iRidium cloud.
- Узнайте индивидуальный секретный ключ, по которому Алиса будет иметь доступ к управлению Вашим iRidium server.
- Создайте умный дом на основе iRidium server. Укажите, какие голосовые команды и как нужно обрабатывать, введите секретный ключ.
Попробуйте поработать с Алисой бесплатно в триальном режиме!
Создание нового объекта в облаке iRidium cloud
1 Алиса работает только через iRidium cloud, поэтому создайте объект на нашем облаке, если он ещё не создан.
Объект - это образ реального умного дома или здания на iRidium cloud.
Как создать объект в iRidium cloud.
2 Узнайте секретный ключ (secret key) Вашего объекта, перейдя по ссылке. Авторизуйтесь, если необходимо (кнопка "Вход" в правом верхнем углу) и выберите объект.
Работа в iRidium studio
Настройка драйвера
Алиса работает только с серверными проектами.
1 Создайте серверный проект.
iRidium Studio > File > New > New Server Project
2 Добавьте драйвер Yandex Alice в проект.
3 Настройте единственный параметр Object key (введите Secret key облачного объекта).
4 Каждый фидбек драйвера Алисы - это одна голосовая команда на русском языке. Добавьте необходимое число фидбеков, введя в параметр Name текст голосовой команды.
Допускаются только строчные символы кириллицы, пробел и цифры.
Все произнесённые слова с буквой "ё" Алиса передаёт в iRidium с заменой на букву "е". Однако вы можете вводить букву "ё" в чате Алисы, и она отправит эту букву без изменений.
Вы можете также использовать строчные символы латиницы, но Алиса не умеет распознавать латинский алфавит с голосовым управлением, однако вы сможете вводить латинские буквы в чате Алисы.
Длительная пауза при произнесении команды интерпретируется как конец команды.
Обработка голосовых команд по сценариям
Голосовые команды можно обрабатывать двумя способами:
Обработка по сценариям наиболее простая для понимания, лучше подходит для разработчиков, не владеющих тонкостями программирования.
Подробнее о сценариях.
1 Перейдите на вкладку Routine (сценарии).
2 Нажмите "+" для добавления нового сценария.
3 Задайте имя сценария (Name).
4 Добавьте условие WHEN, нажав "+".
5 Укажите в поле Feedback голосовую команду драйвера "Yandex Alice", в поле Value введите число 1. Таким образом сценарий будет отслеживать появление голосовой команды (через одну секунду тэг голосовой команды автоматически сбрасывается в значение 0).
Вы можете добавлять в условия WHEN столько разных голосовых команд, сколько вам нужно.
6 Добавьте действие, выполняемое по сценарию, нажав "+" в разделе THEN. Выберите Send Number, укажите канал, которым будете управлять, и значение, которое будет в канал записываться при выполнении сценария.
7 При необходимости вы можете добавить в сценарий условие BUT ONLY IF.
8 Итак, один сценарий готов. Вы можете создать множество различных сценариев.
Обработка голосовых команд в скрипте
Обработка в скрипте более сложна, но обладает преимуществом: в скриптах можно реализовать гораздо более гибкую логику нежели в сценариях.
Подробнее о скриптах.
1 Добавьте скрипт обработки голосовых команд в проект, нажав на кнопку "JS" и затем "+" и "New script".
2 Вставьте скрипт:
var Alice = IR.GetDevice("Yandex Alice"); // имя драйвера Алисы
var device = IR.GetDevice("Modbus TCP"); // имя драйвера
var lamp = 0; // Лампа
var heat = 0; // Нагрев
var temperature = 20; // Уставка температуры отопления
IR.AddListener(IR.EVENT_TAG_CHANGE, Alice, function(name, value) {
switch (name) {
case "включить свет":
case "включи свет":
lamp = 1;
break;
case "выключить свет":
case "выключи свет":
case "отключить свет":
case "отключи свет":
lamp = 0;
break;
case "переключить свет":
case "переключи свет":
lamp = !lamp;
break;
case "включить отопление":
case "включи отопление":
heat = 1;
break;
case "выключить отопление":
case "выключи отопление":
case "отключить отопление":
case "отключи отопление":
heat = 0;
break;
case "отопление теплее":
case "теплее":
temperature = temperature + 1;
break;
case "отопление холоднее":
case "холоднее":
case "прохладнее":
temperature = temperature - 1;
break;
/* Алиса преобразует числа прописью в числовой вид, например, произнесённые
голосовые команды "минус шестнадцать с половиной" или "минус шестнадцать
целых пять десятых" преобразуется в строку "-16,5". */
case "отопление 16":
temperature = 16;
break;
case "отопление 18":
temperature = 18;
break;
case "отопление 20":
case "отопление стандарт":
temperature = 20;
break;
case "отопление 22":
case "отопление комфорт":
temperature = 22;
break;
default:
IR.Log("Команда не запрограммирована!");
}
IR.Log("Получена команда: " + name + ", значение: " + value);
IR.Log("Лампа: " + lamp + ", Отопление: " + heat + ", Температура: " + temperature);
device.Set("Лампа", lamp); // управление устройствами в сети Modbus TCP
device.Set("Нагрев", heat);
device.Set("Температура", temperature);
});
Обработка голосовых команд в скрипте (произвольные команды)
В iRidium server 1.3.0 и выше доступен новый способ обработки голосовых команд в скрипте. В целом он похож на способ, описанный в предыдущем разделе, но в этом случае не нужно составлять список всех голосовых команд в драйвере Yandex Alice. Вместо этого создайте лишь одну обратную связь с произвольным именем (фиктивный тег).
tag1 - фиктивный тег, необходимый для работы драйвера Yandex Alice.
Также вы можете извлекать числовое значение из голосовой команды вида "отопление 17,5" с помощью функций split() и parseFloat() и затем использовать это число для управления оборудованием. Пример кода приведён ниже.
1 Добавьте скрипт обработки голосовых команд в проект, нажав на кнопку "JS" и затем "+" и "New script".
2 Вставьте скрипт:
var Alice = IR.GetDevice("Yandex Alice"); // имя драйвера Алисы
var device = IR.GetDevice("Modbus TCP"); // имя драйвера
var lamp = 0; // Лампа
var heat = 0; // Нагрев
var temperature = 20; // Уставка температуры отопления
IR.AddListener(IR.EVENT_RECEIVE_TEXT, Alice, function(text) {
switch (text) {
case "включить свет":
case "включи свет":
lamp = 1;
break;
case "выключить свет":
case "выключи свет":
case "отключить свет":
case "отключи свет":
lamp = 0;
break;
case "переключить свет":
case "переключи свет":
lamp = !lamp;
break;
case "включить отопление":
case "включи отопление":
heat = 1;
break;
case "выключить отопление":
case "выключи отопление":
case "отключить отопление":
case "отключи отопление":
heat = 0;
break;
case "отопление теплее":
case "теплее":
temperature = temperature + 1;
break;
case "отопление холоднее":
case "холоднее":
case "прохладнее":
temperature = temperature - 1;
break;
case "отопление стандарт":
temperature = 20;
break;
case "отопление комфорт":
temperature = 22;
break;
default:
/*
Алиса преобразует числа прописью в числовой вид, например, произнесённая
голосовая команда "минус шестнадцать целых пять десятых" преобразуется в строку "-16,5".
Вы можете извлекать число XX из голосовой команды вида "отопление XX" и
затем использовать следующим образом:
*/
var command = text.split(" "); // Разбиение команды вида "отопление XX" на части
if (command[0] == "отопление" && command.length == 2) {
var number = parseFloat(command[1].replace(",", ".")); // Извлечение числа XX
if (number >= 16 && number <= 22) {
temperature = number;
}
} else {
IR.Log("Команда не запрограммирована!");
}
}
IR.Log("Получена команда: " + text);
IR.Log("Лампа: " + lamp + ", Отопление: " + heat + ", Температура: " + temperature);
device.Set("Лампа", lamp); // управление устройствами в сети Modbus TCP
device.Set("Нагрев", heat);
device.Set("Температура", temperature);
});
Этот скрипт отличается от предыдущего тем, что в нём обрабатывается событие IR.EVENT_RECEIVE_TEXT вместо IR.EVENT_TAG_CHANGE. Событие IR.EVENT_RECEIVE_TEXT получает текст голосовой команды в качестве параметра (переменная text).
Недостатком этого способа обработки голосовых команд заключается в том, что Алиса не может распознать статус команды - выполнена или нет, поэтому Алиса на все команды отвечает "Выполнено".
Загрузка проекта в облако и на сервер
1 Авторизируйтесь на сайте iRidium.
2 Загрузите файл проекта .sirpz в облако iRidium cloud.
3 Запустите iRidium server.
4 Зайдите в веб-интерфейс сервера, набрав в адресной строке браузера:
<IP-адрес сервера>:8888
(Если iRidium server запускается на том же компьютере, на котором он настраивается, то наберите:
127.0.0.1:8888)
5 Наберите пароль доступа по умолчанию 2007. Нажмите кнопку "LOGIN".
6 Найдите вкладку Cloud / Projects.
7 Загрузите проект из облака на сервер, нажав кнопку "CLOUD SYNC" и затем "Download" напротив нужного проекта.
Алиса не сможет работать, если проект будет загружен на сервер через iRidium transfer.
Настройка Алисы
Настройка Алисы осуществляется один раз при создании умной системы голосового управления, для этого можно использовать любой смартфон, планшет или компьютер.
1 Установите Яндекс-браузер как приложение в App Store, Play Market или для компьютера.
2 Запустите в Алисе навык "Иридий". Вы можете сделать это, произнеся "Запусти навык Иридий" или написав ей этот текст в чате.
3 Перейдите по ссылке на сайт iRidium mobile. (Авторизуйтесь, если необходимо.) Выберите объект, которым будет управлять Алиса. Нажмите кнопку "Add Yandex Alice device".
4 Нажмите кнопку "Сгенерировать автоматически" или введите свою активационную фразу и нажмите "Применить".
5 Посмотрите активационную фразу. Начнётся отсчёт времени 300 секунд.
6 Произнесите Алисе "Активация по коду 8894" в течение 300 секунд отсчёта, где 8894 - ваш сгенерированный код.
Произнесите число по правилам русского языка: "восемь тысяч восемьсот девяносто четыре". В чате код допускается писать цифрами.
В облако iRidium должен быть загружен проект с драйвером Yandex Alice с секретным ключом.
7 Алиса подключится к облаку iRidium cloud.
8 Добавьте необходимое количество дополнительных устройств с Алисой к объекту iRidium, повторив шаги 3-7.
Алиса надёжно хранит подключение к iRidium cloud в своей памяти. Если устройство с Алисой перезагрузить, то связь автоматически восстановится.
Если Вам нужно разорвать связь Алисы с объектом iRidium, то произнесите или наберите в чате Алисы "отключиться от объекта".
Чтобы выйти из навыка "Иридий", произнесите или напишите "прекрати" или "хватит".
Тестирование голосового управления
Конечный пользователь:
- запускает Яндекс-браузер с Алисой,
- запускает навык "Иридий",
- произносит команды управления умным домом.