Интеграция Alexa-устройств в мобильное IoT-приложение
Alexa Smart Home — не один API, а три разных пути в зависимости от задачи. Управление умным домом через Alexa Skills Kit (ASK) с Smart Home Skill — для сторонних устройств, которые хотят работать через голосовые команды Alexa. Alexa Mobile Accessory Kit (AMAK) — для Bluetooth-аксессуаров, подключённых к Echo-устройствам. Alexa Voice Service (AVS) Integration — встраивание голосового ассистента прямо в мобильное приложение. Чаще всего в мобильной разработке нужен либо Smart Home Skill, либо AVS. Мы помогаем выбрать оптимальный путь и реализовать интеграцию под ключ, с прохождением сертификации и полной документацией.
Сравнение подходов к интеграции Alexa
| Параметр | Smart Home Skill | AVS Integration | AMAK |
|---|---|---|---|
| Назначение | Управление устройствами | Голосовой ассистент в приложении | Bluetooth-аксессуары |
| Сложность | Средняя | Высокая | Низкая |
| Время разработки | 2–3 недели | 5–7 недель | 1–2 недели |
| Сертификация | Обязательна | Не обязательна (если только APL) | Обязательна |
| Необходимость бэкенда | Да (Lambda) | Да (API + обработка аудио) | Нет (прямое подключение) |
Smart Home Skill проще AVS примерно в 3 раза по срокам и трудозатратам. AVS даёт больше контроля, но требует управления аудиопотоками и состоянием диалога.
Smart Home Skill: управление устройствами через Alexa
Схема работы: пользователь говорит «Alexa, включи свет», Alexa Smart Home отправляет директиву на Lambda-функцию разработчика, Lambda управляет реальным устройством через бэкенд или напрямую. Мобильное приложение в этой схеме — точка настройки и авторизации, не управления.
Account Linking — ключевой шаг. Пользователь авторизует Alexa через OAuth 2.0 на сервере разработчика. После этого Alexa получает access token и передаёт его с каждой директивой:
{ "directive": { "header": { "namespace": "Alexa.PowerController", "name": "TurnOn" }, "endpoint": { "endpointId": "device-001", "scope": { "type": "BearerToken", "token": "user-access-token" } } } } Lambda обрабатывает директиву и отвечает Response. Для успешного прохождения Alexa Smart Home Certification Response должен прийти в течение 8 секунд — это жёсткий дедлайн.
Мобильное приложение открывает WebView для Account Linking или использует Custom URL Scheme для редиректа после OAuth:
// iOS: обработка OAuth callback func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) { guard let url = URLContexts.first?.url, url.scheme == "myapp", url.host == "alexa-auth" else { return } let components = URLComponents(url: url, resolvingAgainstBaseURL: false) let code = components?.queryItems?.first(where: { $0.name == "code" })?.value // Обмен кода на токен через бэкенд } Как настроить Account Linking для Smart Home Skill?
Настройка начинается с регистрации OAuth-сервера в Alexa Developer Console. Нужно указать URL авторизации, токен-обмена и scope. В мобильном приложении достаточно открыть WebView на URL авторизации, а после редиректа с code обменять его на access token. Для iOS используем ASWebAuthenticationSession, для Android — Chrome Custom Tabs. Без правильно настроенного Account Linking сертификация не пройдёт.
AVS Integration: Alexa в мобильном приложении
Alexa Voice Service позволяет встроить голосового ассистента в приложение. SDK доступен для Android через com.amazon.alexa:avs-device-sdk-android (deprecated) или через Alexa Auto SDK для автомобильных приложений. Официальный путь для мобильных — AVS API напрямую через HTTP/2:
POST https://avs-alexa-eu.amazon.com/v20160207/events Content-Type: multipart/form-data; boundary=boundary Authorization: Bearer {access_token} --boundary Content-Disposition: form-data; name="metadata" Content-Type: application/json { "event": { "header": { "namespace": "SpeechRecognizer", "name": "Recognize", "messageId": "uuid" }, "payload": { "profile": "CLOSE_TALK", "format": "AUDIO_L16_RATE_16000_CHANNELS_1" } } } --boundary Content-Disposition: form-data; name="audio" Content-Type: application/octet-stream [PCM audio data 16kHz, 16-bit mono] --boundary-- AVS отвечает мультипарт-ответом с директивами и TTS-аудио. Поток аудио нужно захватывать через AVAudioEngine на iOS или AudioRecord на Android с буфером 320 байт (20мс) для минимальной задержки.
На практике интеграция чистого AVS API занимает больше времени, чем кажется: управление состоянием диалога (Dialog Request ID), обработка downstream directives через долгоживущее HTTP/2-соединение (Downchannel), поддержка wake word — отдельная задача каждого пункта.
Почему AVS интеграция сложнее, чем кажется?
Потому что каждое из подзадач — управление диалогом, аудиопоток, wake word — требует глубокого понимания протокола и отладки на реальных Echo-устройствах. Например, для захвата аудио в фоне на Android 10+ требуется FOREGROUND_SERVICE с типом microphone, иначе приложение крашится. На iOS нужно корректно обрабатывать прерывания от Siri. В нашей практике 70% времени уходит на отладку этих нюансов, а не на сам API.
Alexa для Android: APL и визуальные ответы
Alexa Presentation Language (APL) позволяет отображать визуальные карточки на экранированных Echo-устройствах и в приложениях с APL-рендерером. Android SDK для APL:
implementation("com.amazon.alexa:apl-android-sdk") APL-документ — JSON, который описывает интерфейс. Рендерер отображает его без написания нативного кода на каждой платформе отдельно.
Наиболее частая проблема при интеграции AVS — управление микрофоном в фоне. Android 10+ требует FOREGROUND_SERVICE с типом microphone для захвата аудио, когда приложение не на переднем плане. Без <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE"/> приложение крашится с SecurityException при попытке старта сервиса.
Публикация Smart Home Skill
Сертификация Alexa Smart Home Skill проходит через Alexa Developer Console. Основные требования: Account Linking через HTTPS, корректные Response для всех Capability Interface, которые задекларированы в манифесте, и обработка Alexa.Discovery запроса — возврат списка устройств пользователя.
Типичная причина отказа в сертификации — неправильный ChangeReport при изменении состояния устройства не по команде Alexa. Если пользователь включил свет физическим выключателем, Smart Home Skill должен отправить ChangeReport через Alexa Event Gateway.
Сроки: интеграция Account Linking и базового Smart Home Skill — 2–3 недели. Полная реализация с AVS, APL и поддержкой нескольких Capability Interface — 5–7 недель. Стоимость рассчитывается после анализа устройств и требуемых сценариев.
Что входит в работу по интеграции Alexa?
- Анализ архитектуры IoT-системы и выбор подходящего пути (Smart Home Skill / AVS / AMAK)
- Проектирование Account Linking: OAuth-сервер, токен-обмен, настройка в Alexa Developer Console
- Разработка Lambda-функций или бэкенда для обработки директив и отправки ChangeReport
- Реализация мобильной части: WebView для авторизации, обработка callback, настройка AVS (если требуется)
- Тестирование на реальных устройствах Echo и прохождение сертификации
- Документация и обучение команды заказчика
Мы выполнили более 50 проектов по интеграции голосовых ассистентов, из них 10 — с Alexa. 7 лет опыта в IoT-разработке. Наши решения проходят сертификацию с первого раза в 90% случаев. Если нужно голосовое управление или встроенный ассистент — свяжитесь с нами, оценим ваш проект за 1–2 дня.







