✕ סגור 
צור קשר
תודה על ההתעניינות .

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form

מדריך לפיתוח יכולת חדשה (skill) לאלקסה – העוזרת הווירטואלית של אמזון – חלק א

איתן סלע
|
Dec 5, 2017
alt="blogs"
alt="blogs"
alt="blogs"
title="Google"
Events
Event

אלקסה (Alexa) היא הסייעת הדיגיטלית החכמה של אמזון. אך בשונה מסירי של אפל, גוגל NOW וקורטנה של מיקרוסופט, המשתמשים באפליקציה, הפעילות העיקרית של אלקסה נעשית על יד רמקול אינטראקטיבי – אמזון אקו (Amazon Echo) שבדרך כלל מונח במקום מרכזי בבית.

הסייעת תוכל להעיר אתכם בבוקר, לענות לכם על מזג האוויר להיום, לכבות את האורות בחדר, להוסיף מוצרים לרשימת קניות, להשמיע לכם את הפגישות להיום, להשמיע לכם שירים לבקשתכם, לקבל עדכונים חיים מליגת העל ואף להזמין לכם מונית שתבקשו ממנה!

לפני שנצלול לפרטים הטכניים, נסקור את החומרה הדרושה – אמזון אקו ואמזון אקו דוט.

אמזון אקו (Amazon Echo)

היה הדגם הראשון שנמכר בסוף שנת 2014. הוא כולל מיקרופון עם קליטה היקפית, המאפשרת למשתמש ״לדבר״ למכשיר ממרחק ולא צמוד למכשיר כמו בטלפונים החכמים. כמו כן, הוא כולל רמקול גדול עם הספק גבוה, שמאפשר שמיעת מוסיקה דרכו כרמקול לכל דבר. נכון להיום, המכשיר נמכר בכ 180 דולר.

אמזון אקו דוט (Amazon Echo Dot)  

במרץ 2016 התחיל להימכר הדגם היותר זול ויותר נפוץ – אמזון אקו דוט (Amazon Echo Dot)  שהוא זהה לאמזון אקו, רק בעל מימדים קטנים יותר. הוא ״נמוך בשליש״ מהאקו והספק הרמקול שלו חלש הרבה יותר. המחיר שלו הוא הרבה יותר אטרקטיבי – 40 דולר והוא נמכר כלחמניות טריות ולמעשה הביא את אמזון להיות מובילת שוק בתחום הרמקולים החכמים.

חשוב להזכיר שהמכשיר זמין (רשמית) רק בארצות הברית, בריטניה וגרמניה. אפשר, כמובן, לקנות אותו באתר אמזון ולהביא אותו לכל מקום בעולם, אך הוא ״יודע לדבר״ רק אנגלית (אמריקאית ובריטית) וגרמנית.

הסיבה להצלחה של אלקסה – הסייעת החכמה של אמזון

למעשה יש שתי סיבות. הסיבה הראשונה: אמזון נכנסו עם מוצר לשוק שהיה כמעט ריק, ובכל הכח של אמזון כחברת ענק.

הסיבה השנייה והיותר משמעותית היא שאמזון סיפקו ממשק נוח מאוד לפיתוח יכולות חדשות לאלקסה ועל ידי כך איפשרו למפתחים לפתח יכולות חדשות במהירות. זאת בשילוב המובילות של אמזון בענן (AWS) שלמעשה גרמו לכך שהיכולת של אלקסה תהיה עוד שירות או קליינט של האפליקציה שבין כה וכה כנראה כבר נמצאית בענן של אמזון.

כיום יש לאלקסה מעל 15,000 יכולות (skills) שפותחו על ידי מפתחים צד שלישי בחנות של אמזון:

קרדיט: businessinsider

פיתוח יכולת (skill) חדשה לאלקסה - Greeter

במדריך הבא, אנו נפתח יכולת חדשה לאלקסה שתברך אותנו כאשר נבקש זאת מאלקסה.

כאשר נגיד לאלקסה: ״Alexa, tell greeter to greet me״  או ״Alexa, ask greeter to say hello world״.

אלקסה תענה לנו: ״Hello World״.

חשוב לציין שיכולת (skill) זאת חסרה תכונות בסיסיות של Interaction Model של אלקסה, כגון: Help, Cancel ועוד. ואין להשתמש בה כבסיס לפיתוח יכולת שלמה שאמורה לעבור סרטיפיקציה בחנות של אמזון.

בחלק ב׳ של המדריך , אני אדגים יכולת שלמה שיכולה להיות בסיס טוב לפיתוח שלם של Alexa Skill.

דרישות קדם לפיתוח יכולת (skill) לאלקסה

פיתוח יכולת חדשה לאלקסה זה דבר לא מאוד מורכב או מסובך ומפתיע לשמוע, שאפילו לא צריך את המכשיר הפיזי שיהיה ברשותכם, הEcho/Echo Dot, על מנת לעשות כן.

להלן הדרישות:

1. חשבון בAmazon Web Services : https://console.aws.amazon.com

2. חשבון Amazon Developer: https://developer.amazon.com

3. היכרות בסיסית עם שירותי Amazon Web Service.

4. ידע בסיסי בקידוד בשפת פייתון, אך זוהי לא חובה. גם עם ידע בשפה כגון Java או C# אפשר לסיים את המדריך הזה בהצלחה.

5. מכשיר Echo או Echo Dot – אך זהו אינו תנאי הכרחי!

אלטרנטיבות למכשיר Echo/Echo dot

1. ממשק הבדיקות בפורטל המפתחים של אמזון (Amazon developer) – נסקור אפשרות זאת בהמשך המדריך.

2. שימוש באתר: https://echosim.io/

3. שימוש באפליקציית המובייל Reverb:

    a. אנדרואיד: https://play.google.com/store/apps/details?id=agency.rain.android.alexa&hl=en

    b. אייפון: https://itunes.apple.com/us/app/reverb-for-amazon-alexa/id1144695621?mt=8

במהלך המדריך, אנו ניצור פונקציית למבדה – AWS Lambda function.

אני אספק כאן במדריך, הסבר בסיסי בלבד על איך ליצור פונקציה כזאת ואיך לחבר אותה ליכולת החדשה (Skill) שנבנה לאלקסה. אך זהו אינו מדריך לארכיטקטורת ה Serverless של AWS.

*חשוב להזכיר שלא חייבים להשתמש בAWS Lambda function כbackend ליכולות של אלקסה. ניתן להשתמש בשירות משלכם שיקבל את הבקשה של אלקסה בHTTPS  בפורמט JSON  מוגדר מראש ויחזיר תשובה בפורמט JSON מוגדר מראש לפי API.

יצירת ה AWS Lambda Function

המטרה בשלב הזה, היא ליצור את פונקציית הלמבדה שתופעל על ידי שירות האלקסה שנבנה.

1. ביצוע לוגין לAWS Console – Lambda portal : https://console.aws.amazon.com/lambda/home?region=us-east-1

2. AWS Lambda Functions לאלקסה נתמכות כרגע רק באיזורים: US East (N. Virginia)  או

EU (Ireland) לכן יש לוודא שאתם הימצאות באיזור המתאים.

3. לחיצה על כפתור ״Create a function״ :

4. כאן אנחנו נתעלם מהפונקציות המוכנות וניצור פונקציה חדשה – נלחץ על כפתור ״Author from scratch״:

5. כעת אנו נוסיף טריגר ״Alexa Skills Kit״ לפונקציה שלנו:

6. אנחנו אמורים לראות את המסך הבא:

7. כעת נלחץ על כפתור ״Next״:

8. זהו השלב שבו נבצע את הקונפיגורציה לפונקציית הלמבדה שלנו: שם הפונקציה, הסוג (ג׳אווה, פייתון וכו...), כמות הזיכרון, וכמובן, הקוד עצמו.

9. נזין את המידע הבסיסי:

    a. שם הפונקציה (Name): greeterAlexaSkillFunction

    b. תיאור (Description)של הפונקציה: A simple template Lambda function for “Greeter” Alexa skill

    c. שפת הרצה (Runtime): Python 2.7

10. כעת נעבור לחלק העיקרי: הזנת הקוד של פונקציית הLambda  שלנו!

     a. בעזרת דפדפן, נווט לכתובת הבאה: https://github.com/eitansela/alexa-greeter-skill/blob/master/src/lambda_function.py

     b. העתק את תכולת הקובץ והדבק אותה בתיבת טקסט שמתחת ל״Edit Code Inline״:

11. הסברים על קוד הפונקציה.

      כפי שניתן לראות בקוד שהעתקנו, הפונקציה היא למעשה מספר פונקציות שונות. 

      נסקור כעת את הפונקציות העיקריות:

      1. lambda_handler - הפונקציה המרכזית אליה מגיע ה event שנורה כאשר קוראים ליכולת (skill) של האלקסה, היא ה lambda_handler.

         זוהי למעשה ״פונקציית הכניסה״ ללמבדה וממנה נקרא לפונקציות האחרות. פונקציה זאת, אנו נגדיר כנקודת כניסה בשלב הבא. 

    בפונקציה אנו רואים את הפרמטר שמועבר לנו לפונקציה event. הוא יכלול את כל הפרטים על היכולת (Alexa skill) שהפעלנו.

    את הפרמטרים העיקריים שמעניינים אותנו בevent ניתן לראות בשורה 97 ו99 בהתאמה: request type.

    דבר זה מהווה אינדיקציה לסוג הבקשה שאלקסה שלחה לנו:

    • LaunchRequest – “Alexa, open greeter”. 

    • IntentRequest – “Alexa, ask greeter to greet me”.

ישנם עוד מספר סוגי הפעלות, אותם אנו נסקור אותם בהמשך.

    2. on_intent – פונקציה זאת מופעלת מהפונקציה הראשית lambda_handler כאשר מזהים הפעלה שהיא IntentRequest – בקשה ספציפית מאלקסה (לעומת הפעלה ראשונית של היכולת).

    כפי שניתן לראות בקוד, יכולים להיות מספר סוגי Intents. אנו נסקור בהמשך מהם הIntents, אך זהו המקום לתת הסבר קצר.

    Intent זה למעשה מיפוי של מילה אחת או יותר לפונקציונליות מסוימת בתוך היכולת (skill).

    ניקח לדוגמה יכולת של אלקסה לכדורגל ישראלי. אנחנו נרצה מספר פונקציונליות:

     • הקראת טבלת ליגת העל – LeagueTableIntent – שהמילים הבאות ימופו אליו: ״ league table״, ״ standings״.

     • הקראת המשחקים הבאים – NextGamesIntent – שהמילים הבאות ימופו אליו: ״ next games״, ״next fixtures״.

     • ביכולת החדשה שלנו “Greeter”, יהיה לנו Intent אחד ויחיד - ״HelloWorldIntent״  שימופה למילים הבאות: ״greet me״, ״say hello world״ וכו׳.

    3. greet_hello_world – זאת הפונקציה שלמעשה תיצור את הטקסט הדרוש לברך אותנו ותחזיר את הטקסט לאלקסה להקריא לנו.

מה שאנו רואים כאן זה השמה של המשתנה speech_output בטקסט אותו נרצה שאלקסה תקריא ואז פשוט קוראים לפונקציה build_response שבונה לנו את הפלט JSON המוגדר לאלקסה.

   12. כעת נקנפג את ה Handler של הפונקציה וה Role הדרוש להרצתה:

    a. שם מתודת הכניסה שבקוד הפונקציה (Handler): נשאיר את ברירת המחדל.

    b. הרשאות הפונקציה (Role): נבחר ליצור Role חדש – Create new role from template.

    c. שם הRole (Role name): alexaSkillLambdaFunctionRole.

    d.Policy templates – מכיוון שפונקציית ה Lambda שלנו לא תעשה הרב חוץ מלברך, לא נצטרך גישה למשאבי AWS  מיוחדים ולכן אפשר להשאיר ריק.

    13. שמירת הפונקציה – לחץ על כפתור ״Next״ ובמסך האישור לחץ על כפתור ״Create function״:

14. כעת נבדוק שהפונקציה עובדת:

    a. נלחץ על ״Actions״ בפינה הימינית עליונה ונבחר ״Configure test event״:

    b. בעזרת דפדפן, נווט לכתובת הבאה: https://github.com/eitansela/alexa-greeter-skill/blob/master/src/greeter-alexa-skill_test_event.json

    c. העתק את תכולת הקובץ והדבק אותה בתיבת טקסט שמתחת ל ״Hello World״:

    d. לחץ על כפתור ״Save and test״.

    e. אחרי מספר שניות של פעולת הפונקציה, הפלט הבא אמור להופיע:

בלחיצה על ״Details״, אנחנו נראה את התשובה שחוזרת מפונקציית הלמבדה.

מעניין לראות את אלמנט ה ״OutputSpeech״ שהוא למעשה הטקסט שיוקרא על ידי אלקסה, וכולל את הטקסט ״Hello World!״.

יצירת יכולת (skill) האלקסה Greeter

להלן השלבים:

1. ביצוע לוגין Amazon Developer: https://developer.amazon.com

2. מעבר לטאב של Alexa ולחיצה על כפתור ״Get Started״ של Alexa Skills Kit:

3. לחיצה על כפתור ״Add a New Skill״ להוספת היכולת החדשה שלנו:

4. הזנת ״Greeter״ בשם היכולת (skill) ובשם ההפעלה (Invocation Name):

5. לחץ על כפתור ״Save״ ולאחר מכן כפתור ״Next״.

6. שלב פיתוח ״Interaction Model״:

שלב זה הוא החשוב ביותר במהלך הפיתוח של היכולת (skill) והוא למעשה מגדיר את הקליינט שלנו שהוא האלקסה.

בתוכו, ה Interaction Model, הוא ליבת היכולת בפיתוח יכולת חדשה לאלקסה.

בשלב הזה נסקור מספר מושגים:

1. Intent Schema – JSON שמגדיר סטים של Intents אותם היכולת החדשה תוכל לקבל ולעבד. הכוונה כאן היא לפעולות שהיכולת (skill) יכולה לקבל.

לדוגמה: ביכולת (skill) של כדורגל ישראלי יהיו הIntents  הבאים:

• מה מצב הטבלה של ליגת העל?

• מהם המשחקים הבאים של ליגת העל?

• ספר לי על תוצאות של משחקים שעכשיו מתקיימים.

ביכולת החדשה שלנו ״Greeter״, תהיה Intents אחת ויחידה: ״ברך אותי״ - HelloWorldIntent.

2. Sample Utterances – קובץ טקסט שמגדיר את המיפוי של Intents למילים מדוברות.

אילו אוסף המילים – משפט, שכאשר נאמר אותם, בליווי שם היכולת (skill), אלקסה תמפה אותם לפעולה – Intent  שתגיע לפונקציית הלמבדה שלנו ותנותב שם למתודה המתאימה.

לדוגמא, ביכולת החדשה שלנו אנחנו נמפה ל HelloWorldIntent את המשפטים הבאים:

• say hello world

• greet me

• פיתוח Intent Schema:

o בעזרת דפדפן, נווט לכתובת הבאה: https://github.com/eitansela/alexa-greeter-skill/blob/master/speechAssets/IntentSchema.json

o העתק את תכולת הקובץ והדבק אותו בתיבת הטקסט ״Intent Schema״:

• פיתוח Sample Utterances:

o בעזרת דפדפן, נווט לכתובת הבאה: https://github.com/eitansela/alexa-greeter-skill/blob/master/speechAssets/SampleUtterances.txt

o העתק את תכולת הקובץ והדבק אותו בתיבת הטקסט ״Sample Utterances״:

7. קינפוג פונקציית הלמבדה כbackend  ליכולת (skill):

   אם עד עכשיו פיתחנו את הקליינט, קרי יכולת (skill) האלקסה. כעת נמפה את היכולת ל backend – פונקציית ה Lambda  שפיתחנו קודם לכן.

   אנחנו נעתיק את ה arn של פונקציית הלמבדה מדף הפורטל של פונקציות הלמבדה:

8. לחיצה על כפתור ״Next״.

9. שימוש בסימולטור (Service Simulator) על מנת לבדוק את היכולת (skill) שפיתחנו:

כאן נוכל לכתוב את המילים שנרצה שהאלקסה ״תשמע״, בתבנית של ה Sample Utterances:ולקבל את הפלט מהאלקסה, ואפילו לשמוע אותו.

חשוב להבין שהסימולטור עובר דרך הרכיבים הבאים, שהגדרנו קודם לכן:

• Interaction Model – Intent Schema + Sample Utterances

• AWS Lambda Function

הכל עובר עיבוד אמיתי! הדבר היחיד שחסר זה הפעלת היכולת בקול האנושי.

הדגמת של היכולת (skill) החדשה על Echo Dot

כעת, נראה את היכולת (skill) החדשה שפיתחנו, רצה על מכשיר ה Echo Dot:     https://youtu.be/7uUjAvu56as

איתן סלע

אלקסה (Alexa) היא הסייעת הדיגיטלית החכמה של אמזון. אך בשונה מסירי של אפל, גוגל NOW וקורטנה של מיקרוסופט, המשתמשים באפליקציה, הפעילות העיקרית של אלקסה נעשית על יד רמקול אינטראקטיבי – אמזון אקו (Amazon Echo) שבדרך כלל מונח במקום מרכזי בבית.

הסייעת תוכל להעיר אתכם בבוקר, לענות לכם על מזג האוויר להיום, לכבות את האורות בחדר, להוסיף מוצרים לרשימת קניות, להשמיע לכם את הפגישות להיום, להשמיע לכם שירים לבקשתכם, לקבל עדכונים חיים מליגת העל ואף להזמין לכם מונית שתבקשו ממנה!

לפני שנצלול לפרטים הטכניים, נסקור את החומרה הדרושה – אמזון אקו ואמזון אקו דוט.

אמזון אקו (Amazon Echo)

היה הדגם הראשון שנמכר בסוף שנת 2014. הוא כולל מיקרופון עם קליטה היקפית, המאפשרת למשתמש ״לדבר״ למכשיר ממרחק ולא צמוד למכשיר כמו בטלפונים החכמים. כמו כן, הוא כולל רמקול גדול עם הספק גבוה, שמאפשר שמיעת מוסיקה דרכו כרמקול לכל דבר. נכון להיום, המכשיר נמכר בכ 180 דולר.

אמזון אקו דוט (Amazon Echo Dot)  

במרץ 2016 התחיל להימכר הדגם היותר זול ויותר נפוץ – אמזון אקו דוט (Amazon Echo Dot)  שהוא זהה לאמזון אקו, רק בעל מימדים קטנים יותר. הוא ״נמוך בשליש״ מהאקו והספק הרמקול שלו חלש הרבה יותר. המחיר שלו הוא הרבה יותר אטרקטיבי – 40 דולר והוא נמכר כלחמניות טריות ולמעשה הביא את אמזון להיות מובילת שוק בתחום הרמקולים החכמים.

חשוב להזכיר שהמכשיר זמין (רשמית) רק בארצות הברית, בריטניה וגרמניה. אפשר, כמובן, לקנות אותו באתר אמזון ולהביא אותו לכל מקום בעולם, אך הוא ״יודע לדבר״ רק אנגלית (אמריקאית ובריטית) וגרמנית.

הסיבה להצלחה של אלקסה – הסייעת החכמה של אמזון

למעשה יש שתי סיבות. הסיבה הראשונה: אמזון נכנסו עם מוצר לשוק שהיה כמעט ריק, ובכל הכח של אמזון כחברת ענק.

הסיבה השנייה והיותר משמעותית היא שאמזון סיפקו ממשק נוח מאוד לפיתוח יכולות חדשות לאלקסה ועל ידי כך איפשרו למפתחים לפתח יכולות חדשות במהירות. זאת בשילוב המובילות של אמזון בענן (AWS) שלמעשה גרמו לכך שהיכולת של אלקסה תהיה עוד שירות או קליינט של האפליקציה שבין כה וכה כנראה כבר נמצאית בענן של אמזון.

כיום יש לאלקסה מעל 15,000 יכולות (skills) שפותחו על ידי מפתחים צד שלישי בחנות של אמזון:

קרדיט: businessinsider

פיתוח יכולת (skill) חדשה לאלקסה - Greeter

במדריך הבא, אנו נפתח יכולת חדשה לאלקסה שתברך אותנו כאשר נבקש זאת מאלקסה.

כאשר נגיד לאלקסה: ״Alexa, tell greeter to greet me״  או ״Alexa, ask greeter to say hello world״.

אלקסה תענה לנו: ״Hello World״.

חשוב לציין שיכולת (skill) זאת חסרה תכונות בסיסיות של Interaction Model של אלקסה, כגון: Help, Cancel ועוד. ואין להשתמש בה כבסיס לפיתוח יכולת שלמה שאמורה לעבור סרטיפיקציה בחנות של אמזון.

בחלק ב׳ של המדריך , אני אדגים יכולת שלמה שיכולה להיות בסיס טוב לפיתוח שלם של Alexa Skill.

דרישות קדם לפיתוח יכולת (skill) לאלקסה

פיתוח יכולת חדשה לאלקסה זה דבר לא מאוד מורכב או מסובך ומפתיע לשמוע, שאפילו לא צריך את המכשיר הפיזי שיהיה ברשותכם, הEcho/Echo Dot, על מנת לעשות כן.

להלן הדרישות:

1. חשבון בAmazon Web Services : https://console.aws.amazon.com

2. חשבון Amazon Developer: https://developer.amazon.com

3. היכרות בסיסית עם שירותי Amazon Web Service.

4. ידע בסיסי בקידוד בשפת פייתון, אך זוהי לא חובה. גם עם ידע בשפה כגון Java או C# אפשר לסיים את המדריך הזה בהצלחה.

5. מכשיר Echo או Echo Dot – אך זהו אינו תנאי הכרחי!

אלטרנטיבות למכשיר Echo/Echo dot

1. ממשק הבדיקות בפורטל המפתחים של אמזון (Amazon developer) – נסקור אפשרות זאת בהמשך המדריך.

2. שימוש באתר: https://echosim.io/

3. שימוש באפליקציית המובייל Reverb:

    a. אנדרואיד: https://play.google.com/store/apps/details?id=agency.rain.android.alexa&hl=en

    b. אייפון: https://itunes.apple.com/us/app/reverb-for-amazon-alexa/id1144695621?mt=8

במהלך המדריך, אנו ניצור פונקציית למבדה – AWS Lambda function.

אני אספק כאן במדריך, הסבר בסיסי בלבד על איך ליצור פונקציה כזאת ואיך לחבר אותה ליכולת החדשה (Skill) שנבנה לאלקסה. אך זהו אינו מדריך לארכיטקטורת ה Serverless של AWS.

*חשוב להזכיר שלא חייבים להשתמש בAWS Lambda function כbackend ליכולות של אלקסה. ניתן להשתמש בשירות משלכם שיקבל את הבקשה של אלקסה בHTTPS  בפורמט JSON  מוגדר מראש ויחזיר תשובה בפורמט JSON מוגדר מראש לפי API.

יצירת ה AWS Lambda Function

המטרה בשלב הזה, היא ליצור את פונקציית הלמבדה שתופעל על ידי שירות האלקסה שנבנה.

1. ביצוע לוגין לAWS Console – Lambda portal : https://console.aws.amazon.com/lambda/home?region=us-east-1

2. AWS Lambda Functions לאלקסה נתמכות כרגע רק באיזורים: US East (N. Virginia)  או

EU (Ireland) לכן יש לוודא שאתם הימצאות באיזור המתאים.

3. לחיצה על כפתור ״Create a function״ :

4. כאן אנחנו נתעלם מהפונקציות המוכנות וניצור פונקציה חדשה – נלחץ על כפתור ״Author from scratch״:

5. כעת אנו נוסיף טריגר ״Alexa Skills Kit״ לפונקציה שלנו:

6. אנחנו אמורים לראות את המסך הבא:

7. כעת נלחץ על כפתור ״Next״:

8. זהו השלב שבו נבצע את הקונפיגורציה לפונקציית הלמבדה שלנו: שם הפונקציה, הסוג (ג׳אווה, פייתון וכו...), כמות הזיכרון, וכמובן, הקוד עצמו.

9. נזין את המידע הבסיסי:

    a. שם הפונקציה (Name): greeterAlexaSkillFunction

    b. תיאור (Description)של הפונקציה: A simple template Lambda function for “Greeter” Alexa skill

    c. שפת הרצה (Runtime): Python 2.7

10. כעת נעבור לחלק העיקרי: הזנת הקוד של פונקציית הLambda  שלנו!

     a. בעזרת דפדפן, נווט לכתובת הבאה: https://github.com/eitansela/alexa-greeter-skill/blob/master/src/lambda_function.py

     b. העתק את תכולת הקובץ והדבק אותה בתיבת טקסט שמתחת ל״Edit Code Inline״:

11. הסברים על קוד הפונקציה.

      כפי שניתן לראות בקוד שהעתקנו, הפונקציה היא למעשה מספר פונקציות שונות. 

      נסקור כעת את הפונקציות העיקריות:

      1. lambda_handler - הפונקציה המרכזית אליה מגיע ה event שנורה כאשר קוראים ליכולת (skill) של האלקסה, היא ה lambda_handler.

         זוהי למעשה ״פונקציית הכניסה״ ללמבדה וממנה נקרא לפונקציות האחרות. פונקציה זאת, אנו נגדיר כנקודת כניסה בשלב הבא. 

    בפונקציה אנו רואים את הפרמטר שמועבר לנו לפונקציה event. הוא יכלול את כל הפרטים על היכולת (Alexa skill) שהפעלנו.

    את הפרמטרים העיקריים שמעניינים אותנו בevent ניתן לראות בשורה 97 ו99 בהתאמה: request type.

    דבר זה מהווה אינדיקציה לסוג הבקשה שאלקסה שלחה לנו:

    • LaunchRequest – “Alexa, open greeter”. 

    • IntentRequest – “Alexa, ask greeter to greet me”.

ישנם עוד מספר סוגי הפעלות, אותם אנו נסקור אותם בהמשך.

    2. on_intent – פונקציה זאת מופעלת מהפונקציה הראשית lambda_handler כאשר מזהים הפעלה שהיא IntentRequest – בקשה ספציפית מאלקסה (לעומת הפעלה ראשונית של היכולת).

    כפי שניתן לראות בקוד, יכולים להיות מספר סוגי Intents. אנו נסקור בהמשך מהם הIntents, אך זהו המקום לתת הסבר קצר.

    Intent זה למעשה מיפוי של מילה אחת או יותר לפונקציונליות מסוימת בתוך היכולת (skill).

    ניקח לדוגמה יכולת של אלקסה לכדורגל ישראלי. אנחנו נרצה מספר פונקציונליות:

     • הקראת טבלת ליגת העל – LeagueTableIntent – שהמילים הבאות ימופו אליו: ״ league table״, ״ standings״.

     • הקראת המשחקים הבאים – NextGamesIntent – שהמילים הבאות ימופו אליו: ״ next games״, ״next fixtures״.

     • ביכולת החדשה שלנו “Greeter”, יהיה לנו Intent אחד ויחיד - ״HelloWorldIntent״  שימופה למילים הבאות: ״greet me״, ״say hello world״ וכו׳.

    3. greet_hello_world – זאת הפונקציה שלמעשה תיצור את הטקסט הדרוש לברך אותנו ותחזיר את הטקסט לאלקסה להקריא לנו.

מה שאנו רואים כאן זה השמה של המשתנה speech_output בטקסט אותו נרצה שאלקסה תקריא ואז פשוט קוראים לפונקציה build_response שבונה לנו את הפלט JSON המוגדר לאלקסה.

   12. כעת נקנפג את ה Handler של הפונקציה וה Role הדרוש להרצתה:

    a. שם מתודת הכניסה שבקוד הפונקציה (Handler): נשאיר את ברירת המחדל.

    b. הרשאות הפונקציה (Role): נבחר ליצור Role חדש – Create new role from template.

    c. שם הRole (Role name): alexaSkillLambdaFunctionRole.

    d.Policy templates – מכיוון שפונקציית ה Lambda שלנו לא תעשה הרב חוץ מלברך, לא נצטרך גישה למשאבי AWS  מיוחדים ולכן אפשר להשאיר ריק.

    13. שמירת הפונקציה – לחץ על כפתור ״Next״ ובמסך האישור לחץ על כפתור ״Create function״:

14. כעת נבדוק שהפונקציה עובדת:

    a. נלחץ על ״Actions״ בפינה הימינית עליונה ונבחר ״Configure test event״:

    b. בעזרת דפדפן, נווט לכתובת הבאה: https://github.com/eitansela/alexa-greeter-skill/blob/master/src/greeter-alexa-skill_test_event.json

    c. העתק את תכולת הקובץ והדבק אותה בתיבת טקסט שמתחת ל ״Hello World״:

    d. לחץ על כפתור ״Save and test״.

    e. אחרי מספר שניות של פעולת הפונקציה, הפלט הבא אמור להופיע:

בלחיצה על ״Details״, אנחנו נראה את התשובה שחוזרת מפונקציית הלמבדה.

מעניין לראות את אלמנט ה ״OutputSpeech״ שהוא למעשה הטקסט שיוקרא על ידי אלקסה, וכולל את הטקסט ״Hello World!״.

יצירת יכולת (skill) האלקסה Greeter

להלן השלבים:

1. ביצוע לוגין Amazon Developer: https://developer.amazon.com

2. מעבר לטאב של Alexa ולחיצה על כפתור ״Get Started״ של Alexa Skills Kit:

3. לחיצה על כפתור ״Add a New Skill״ להוספת היכולת החדשה שלנו:

4. הזנת ״Greeter״ בשם היכולת (skill) ובשם ההפעלה (Invocation Name):

5. לחץ על כפתור ״Save״ ולאחר מכן כפתור ״Next״.

6. שלב פיתוח ״Interaction Model״:

שלב זה הוא החשוב ביותר במהלך הפיתוח של היכולת (skill) והוא למעשה מגדיר את הקליינט שלנו שהוא האלקסה.

בתוכו, ה Interaction Model, הוא ליבת היכולת בפיתוח יכולת חדשה לאלקסה.

בשלב הזה נסקור מספר מושגים:

1. Intent Schema – JSON שמגדיר סטים של Intents אותם היכולת החדשה תוכל לקבל ולעבד. הכוונה כאן היא לפעולות שהיכולת (skill) יכולה לקבל.

לדוגמה: ביכולת (skill) של כדורגל ישראלי יהיו הIntents  הבאים:

• מה מצב הטבלה של ליגת העל?

• מהם המשחקים הבאים של ליגת העל?

• ספר לי על תוצאות של משחקים שעכשיו מתקיימים.

ביכולת החדשה שלנו ״Greeter״, תהיה Intents אחת ויחידה: ״ברך אותי״ - HelloWorldIntent.

2. Sample Utterances – קובץ טקסט שמגדיר את המיפוי של Intents למילים מדוברות.

אילו אוסף המילים – משפט, שכאשר נאמר אותם, בליווי שם היכולת (skill), אלקסה תמפה אותם לפעולה – Intent  שתגיע לפונקציית הלמבדה שלנו ותנותב שם למתודה המתאימה.

לדוגמא, ביכולת החדשה שלנו אנחנו נמפה ל HelloWorldIntent את המשפטים הבאים:

• say hello world

• greet me

• פיתוח Intent Schema:

o בעזרת דפדפן, נווט לכתובת הבאה: https://github.com/eitansela/alexa-greeter-skill/blob/master/speechAssets/IntentSchema.json

o העתק את תכולת הקובץ והדבק אותו בתיבת הטקסט ״Intent Schema״:

• פיתוח Sample Utterances:

o בעזרת דפדפן, נווט לכתובת הבאה: https://github.com/eitansela/alexa-greeter-skill/blob/master/speechAssets/SampleUtterances.txt

o העתק את תכולת הקובץ והדבק אותו בתיבת הטקסט ״Sample Utterances״:

7. קינפוג פונקציית הלמבדה כbackend  ליכולת (skill):

   אם עד עכשיו פיתחנו את הקליינט, קרי יכולת (skill) האלקסה. כעת נמפה את היכולת ל backend – פונקציית ה Lambda  שפיתחנו קודם לכן.

   אנחנו נעתיק את ה arn של פונקציית הלמבדה מדף הפורטל של פונקציות הלמבדה:

8. לחיצה על כפתור ״Next״.

9. שימוש בסימולטור (Service Simulator) על מנת לבדוק את היכולת (skill) שפיתחנו:

כאן נוכל לכתוב את המילים שנרצה שהאלקסה ״תשמע״, בתבנית של ה Sample Utterances:ולקבל את הפלט מהאלקסה, ואפילו לשמוע אותו.

חשוב להבין שהסימולטור עובר דרך הרכיבים הבאים, שהגדרנו קודם לכן:

• Interaction Model – Intent Schema + Sample Utterances

• AWS Lambda Function

הכל עובר עיבוד אמיתי! הדבר היחיד שחסר זה הפעלת היכולת בקול האנושי.

הדגמת של היכולת (skill) החדשה על Echo Dot

כעת, נראה את היכולת (skill) החדשה שפיתחנו, רצה על מכשיר ה Echo Dot:     https://youtu.be/7uUjAvu56as

איתן סלע

לפרטים נוספים ויצירת קשר עם נציג אורקל

תודה הודעתך התקבלה

הודעתך לא התקבלה - נסה שוב מאוחר יותר

איתן סלע

הירשם לרשימת הדיוור של IsraelClouds

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form

מילון מונחיםהשירותים שלנו תנאי שימושהרשמה לניוזלטרמדיניות פרטיות