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

Первый навык

Создание первого навыка для Алисы

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

Взаимодействие с Алисой происходит через webhook (или облачные функции). Яндекс отправляет запрос с новым событием навыка, оно обрабатывается и возвращается ответ. Важно понимать, что навыки не опрашивают Алису на предмет новых сообщений или действий. Здесь отсутствует pooling, поэтому невозможно получить прямое подтверждение, что ваш ответ принят без ошибок (хотя иногда это возможно).

Важно

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

Пример простого Эхо-бота

Ниже представлен пример кода, реализующего простой эхо-бот:

fun main() {
    skill {
        webhookServer = ktorWebhookServer {
            port = 8080
            path = "/alice"
        }
        dispatch {
            newSession {
                response {
                    text = "Привет!"
                }
            }

            message {
                response {
                    text = messageText
                }
            }
        }
    }.run()
}

Ключевые параметры

  • webhookServer — настройка вебхука для получения запросов.
  • port — порт, на котором будет запущен вебхук. В данном примере используется порт 8080.
  • path — путь, по которому будет доступен вебхук. В данном примере это /alice.

Диспетчеризация сообщений

newSession {
    response {
        text = "Привет!"
    }
}

Этот блок сработает, если сессия новая, тогда в ответ отправляется текст "Привет!".

message {
    response {
        text = messageText
    }
}

Этот блок кода обрабатывает все остальные сообщения. В ответ отправляется текст, который отправил пользователь.

Запуск сконфигурированного навыка

skill.run()

Примечание

Вы можете заменить стандартный WebhookServer на свою реализацию. Библиотека предоставляет реализацию KtorWebhookServer.

Примеры