Интеграция 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.
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
// Обмен кода на токен через бэкенд
}
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 — отдельная задача каждого пункта.
Alexa для Android: APL и визуальные ответы
Alexa Presentation Language (APL) позволяет отображать визуальные карточки на экранированных Echo-устройствах и в приложениях с APL-рендерером. Android SDK для APL:
implementation("com.amazon.alexa:apl-android-sdk:2024.1")
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 недель. Стоимость рассчитывается после анализа устройств и требуемых сценариев.







