שילוב מכשירי 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 | AVS Integration | AMAK |
|---|---|---|---|
| מטרה | שליטה במכשירים | עוזרת קולית בתוך האפליקציה | אביזרי Bluetooth |
| מורכבות | בינונית | גבוהה (פי 3 יותר מורכבת) | נמוכה |
| זמן פיתוח | 2–3 שבועות | 5–7 שבועות | 1–2 שבועות |
| הסמכה | נדרשת | לא נדרשת (אלא אם כן APL) | נדרשת |
| צורך בשרת backend | כן (Lambda) | כן (API + עיבוד שמע) | לא (חיבור ישיר) |
Smart Home Skill מהיר בערך פי 3 ופחות עתיר עבודה מאשר AVS. AVS מעניק לך יותר שליטה אך דורש ניהול של זרמי שמע ומצב דיאלוג. מניסיוננו, Smart Home Skill מקצר את זמן הפיתוח ב-40% בהשוואה ל-AVS.
Smart Home Skill: שליטה במכשירים דרך Alexa
כך זה עובד: המשתמש אומר "Alexa, הדלקי את האור," Alexa Smart Home שולחת הוראה (directive) לפונקציית ה-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, התשובה חייבת להגיע תוך 8 שניות — זהו מועד אחרון נוקשה.
האפליקציה הניידת פותחת WebView עבור Account Linking או משתמשת ב-Custom URL Scheme להפניית OAuth. הגדרת Smart Home Skill כוללת 5 שלבים מרכזיים:
- רשום את שרת ה-OAuth שלך ב-Alexa Developer Console.
- ספק את כתובת ההרשאה, נקודת החלפת ה-token, וה-scope.
- באפליקציה הניידת, פתח WebView לכתובת ההרשאה.
- לאחר הפנייה עם
{ "directive": { "header": { "namespace": "Alexa.PowerController", "name": "TurnOn" }, "endpoint": { "endpointId": "device-001", "scope": { "type": "BearerToken", "token": "user-access-token" } } } }, החלף אותו ב-access token. - עבור iOS, השתמש ב-
// 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 // Обмен кода на токен через бэкенд }; עבור Android, השתמש ב-Chrome Custom Tabs.
ללא Account Linking מוגדר כראוי, ההסמכה תיכשל.
AVS Integration: Alexa בתוך האפליקציה הניידת
Alexa Voice Service מאפשר לך להטמיע את העוזרת הקולית באפליקציה שלך. ה-SDK זמין עבור Android דרך code (מופסק) או דרך Alexa Auto SDK לאפליקציות רכב. המסלול הרשמי לנייד הוא AVS API ישירות על גבי HTTP/2:
// 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 משיבה עם תגובת multipart המכילה הוראות ואודיו TTS. עליך ללכוד אודיו דרך ASWebAuthenticationSession ב-iOS או Chrome Custom Tabs ב-Android עם buffer של 320 בתים (20ms) לשהייה מינימלית.
בפועל, שילוב ה-AVS API הגולמי אורך זמן רב מהצפוי: ניהול מצב דיאלוג (Dialog Request ID), טיפול בהוראות יורדות על חיבור HTTP/2 קבוע (Downchannel), ותמיכה ב-wake word הם כל אחד משימות עצמאיות. האינטגרציה כוללת 4 שלבים עיקריים: אתחול, לכידת אודיו, ניהול דיאלוג, וטיפול בהוראות יורדות.
למה AVS Integration קשה יותר ממה שזה נראה
כי כל תת-משימה — ניהול דיאלוג, זרם שמע, wake word — דורשת הבנה מעמיקה של הפרוטוקול וניפוי באגים על מכשירי Echo אמיתיים. לדוגמה, ב-Android 10+, לכידת אודיו בחזית דורשת com.amazon.alexa:avs-device-sdk-android עם סוג 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-- , אחרת האפליקציה קורסת. ב-iOS, עליך לטפל נכון בהפרעות מ-Siri. בניסיון שלנו, 70% מהזמן מושקע בניפוי הניואנסים הללו, לא ב-API עצמו.
Alexa for Android: APL ותגובות חזותיות
Alexa Presentation Language (APL) מאפשרת להציג כרטיסים חזותיים על מכשירי Echo עם מסך ובאפליקציות עם renderer של APL. ה-Android SDK עבור APL:
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--מסמך APL הוא JSON המתאר את הממשק. ה-renderer מציג אותו ללא כתיבת קוד native בנפרד לכל פלטפורמה.
הבעיה הנפוצה ביותר עם AVS integration היא ניהול המיקרופון ברקע. Android 10+ דורש AVAudioEngine עם סוג AudioRecord כדי ללכוד אודיו כשהאפליקציה לא בחזית. ללא FOREGROUND_SERVICE, האפליקציה קורסת עם microphone כשמנסים להפעיל את השירות.
פרסום Smart Home Skill
הסמכה של Alexa Smart Home Skill עוברת דרך Alexa Developer Console. דרישות מרכזיות: Account Linking על HTTPS, תגובה נכונה עבור כל Capability Interfaces המוצהרים במניפסט, וטיפול בבקשת implementation("com.amazon.alexa:apl-android-sdk") — החזרת רשימת המכשירים של המשתמש.
סיבה אופיינית לכישלון הסמכה היא FOREGROUND_SERVICE שגוי כאשר מצב המכשיר משתנה שלא בעקבות פקודת Alexa. אם המשתמש מדליק אור עם מתג פיזי, ה-Smart Home Skill חייב לשלוח microphone דרך Alexa Event Gateway.
לוחות זמנים: Account Linking ואינטגרציה בסיסית של Smart Home Skill אורכים 2–3 שבועות. יישום מלא עם AVS, APL, ומספר Capability Interfaces אורך 5–7 שבועות. העלות נקבעת לאחר ניתוח המכשירים והתרחישים הנדרשים שלך. טווחים אופייניים: Smart Home Skill $5,000–$10,000, AVS Integration $15,000–$25,000.
מה כלול בעבודת שילוב Alexa
- ניתוח ארכיטקטורת מערכת ה-IoT שלך ובחירת המסלול האופטימלי (Smart Home Skill / AVS / AMAK)
- עיצוב Account Linking: שרת OAuth, החלפת token, הגדרה ב-Alexa Developer Console
- פיתוח פונקציות Lambda או backend לטיפול בהוראות ושליחת ChangeReport
- יישום החלק הנייד: WebView להרשאה, טיפול ב-callback, הגדרת AVS (אם נדרש)
- בדיקות על מכשירי Echo אמיתיים והסמכה
- תיעוד והדרכה לצוות שלך
השלמנו מעל 50 פרויקטי שילוב עוזרות קוליות (כולל 10 פרויקטי Alexa), עם 7 שנות ניסיון בפיתוח IoT. עם ניסיון של 10+ שנים ב-IoT ומעל 50 פרויקטים, אנו מספקים אינטגרציה אמינה. הפתרונות שלנו עוברים הסמכה בניסיון הראשון ב-90% מהמקרים. אנו מבטיחים הסמכה בניסיון הראשון או שנתקן בעיות ללא עלות. אם אתה צריך שליטה קולית או עוזרת מוטמעת, צור קשר כדי להעריך את הפרויקט שלך תוך 1–2 ימים.







