Інтеграція Alexa-пристроїв у мобільний IoT-додаток
Alexa Smart Home — не один API, а три різні шляхи залежно від завдання. Управління розумним домом через Alexa Skills Kit (ASK) з Smart Home Skill — для сторонніх пристроїв, що хочуть підтримки голосових команд. 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 тижнів. Вартість розраховується після аналізу пристроїв та сценаріїв.







