כדי להעביר מידע לאפליקציית האינטרנט, צריך לשלוח תשובה מסוג Canvas
מלוגיקת השיחה. התשובה Canvas
יכולה לבצע את אחת מהפעולות הבאות:
- רינדור אפליקציית האינטרנט במסך מלא במכשיר של המשתמש
- העברת נתונים לצורך עדכון של אפליקציית האינטרנט
בקטעים הבאים מוסבר איך להחזיר תגובה על קנבס במקרה הזה.
הפעלת לוח שיתופי אינטראקטיבי
צריך להגדיר את הפעולה בדרך ספציפית כדי להשתמש בלוח הציור האינטראקטיבי.
כדי ליצור פעולה שמשתמשת בלוח הציור האינטראקטיבי צריך להוסיף
בקונסולה ל-Actions (וגם, ב-Actions SDK, שינויים ב-
קובץ settings.yaml
שלך). כדי לראות את התהליך המלא ליצירה
כדי להגדיר פעולה אינטראקטיבית של לוח הציור באמצעות Actions SDK:
יוצרים פרויקט.
כשמשתמשים ב-Actions Builder, מבצעים את השלבים הבאים כדי להפעיל את האינטראקטיבי קנבס:
- אם לא בחרת בכרטיס משחק באיזה סוג של פעולה שרוצים ליצור?, לוחצים על Deploy בתפריט הניווט העליון. בקטע מידע נוסף, בוחרים באפשרות משחקים ו כיפית. לוחצים על Save (שמירה).
- לוחצים על פיתוח בסרגל הניווט העליון במסוף הפעולות.
- בתפריט הניווט הימני, לוחצים על לוח שיתופי אינטראקטיבי.
- בקטע האם ברצונך שהפעולה תשתמש בלוח הציור האינטראקטיבי?, בוחרים באחת מהאפשרויות
הבאים:
- הפעלת לוח הציור האינטראקטיבי עם מילוי ה-webhook של השרת. האפשרות הזו
מסתמכת על התגובה לפעולה מאתר אחר (webhook) כדי לגשת לתכונות מסוימות,
onUpdate()
כדי להעביר נתונים לאפליקציית האינטרנט. כשהאפשרות מופעלת, התאמות Intent הן מטופלות בסצנות, ואפשר לבחור להפעיל את ה-webhook לפני המעבר לסצנה אחרת או לסיום השיחה. - הפעלת לוח שיתופי אינטראקטיבי עם מילוי הזמנות של הלקוח. האפשרות הזו מאפשרת
להעביר את הלוגיקה של מילוי הזמנות לפעולה מאתר אחר (webhook) לאפליקציית האינטרנט, ולהגביל את האפשרויות האלה
התגובה לפעולה מאתר אחר (webhook) מפעילה רק את תכונות השיחה שמחייבות אותה.
כמו קישור חשבונות. כשהאפשרות מופעלת, אפשר להשתמש ב-
expect()
כדי רושמים handlers של Intent בצד הלקוח.
- הפעלת לוח הציור האינטראקטיבי עם מילוי ה-webhook של השרת. האפשרות הזו
מסתמכת על התגובה לפעולה מאתר אחר (webhook) כדי לגשת לתכונות מסוימות,
- אופציונלי: מזינים את כתובת ה-URL של אפליקציית האינטרנט בקטע הגדרת כתובת ה-URL של אפליקציית האינטרנט המשמשת כברירת מחדל
השדה הזה. הפעולה הזו מוסיפה תשובת ברירת מחדל
Canvas
עם שדה כתובת ה-URL כדי בהפעלה הראשית שלכם. - לוחצים על שמירה.
כשמשתמשים ב-Actions SDK, צריכים לבצע את השלבים הבאים כדי להפעיל את האינטראקטיבי קנבס:
- צריך להגדיר את השדה
category
בקובץsettings.yaml
בתורGAMES_AND_TRIVIA
כדי לתאר את הפעולה ולעזור למשתמשים לגלות אותה בצורה הטובה ביותר. - צריך להגדיר את השדה
usesInteractiveCanvas
בקובץsettings.yaml
בתורtrue
.
בדיקת היכולות של הפלטפורמה
ה-framework של לוח הציור האינטראקטיבי פועל רק במכשירים עם Assistant שמספקים
ממשק ויזואלי, לכן הפעולה צריכה לחפש את INTERACTIVE_CANVAS
יכולות במכשיר של המשתמש. כשמגדירים הנחיות ב-Actions Builder,
אפשר לציין רשימה של יכולות המכשיר בשדה selector
של
אובייקט candidates
. בורר ההנחיות בוחר את ההצעה לפעולה המתאימה ביותר
המתאימה ליכולת המכשיר של המשתמש.
כדי לקבל תשובה מסוג Canvas
, הלוגיקה של הפעולה צריכה לכלול את הדברים הבאים:
- בדיקת המכשיר של המשתמש שיש תמיכה ביכולת של
INTERACTIVE_CANVAS
. אם המיקום היא תשלח למשתמש תגובתCanvas
. - אם היכולת של לוח הציור האינטראקטיבי לא זמינה, צריך לבדוק אם
המכשיר תומך ביכולת
RICH_RESPONSE
. אם כן, יש לשלוח למשתמש תגובה עשירה. - אם היכולת של תגובה מתקדמת לא זמינה, שולחים למשתמש תגובה פשוטה.
קטעי הקוד הבאים מחזירים את התגובה המתאימה על סמך היכולות במכשיר של המשתמש:
YAML
candidates: - selector: surface_capabilities: capabilities: - INTERACTIVE_CANVAS canvas: url: 'https://example.web.app' - selector: surface_capabilities: capabilities: - RICH_RESPONSE content: card: title: Card title text: Card Content image: url: 'https://example.com/image.png' alt: Alt text button: name: Link name open: url: 'https://example.com/' - first_simple: variants: - speech: Example simple response.
JSON
{ "candidates": [ { "selector": { "surface_capabilities": { "capabilities": [ "INTERACTIVE_CANVAS" ] } }, "canvas": { "url": "https://example.web.app" } }, { "selector": { "surface_capabilities": { "capabilities": [ "RICH_RESPONSE" ] } }, "content": { "card": { "title": "Card title", "text": "Card Content", "image": { "url": "https://example.com/image.png", "alt": "Alt text" }, "button": { "name": "Link name", "open": { "url": "https://example.com/" } } } } }, { "first_simple": { "variants": [ { "speech": "Example simple response." } ] } } ] }
Node.js
const supportsRichResponse = conv.device.capabilities.includes("RICH_RESPONSE"); const supportsInteractiveCanvas = conv.device.capabilities.includes("INTERACTIVE_CANVAS"); if (supportsInteractiveCanvas) { // Respond with a Canvas response conv.add(new Canvas({ url: 'https://example.web.app', })); } else if (supportsRichResponse) { // Respond with a rich response conv.add(new Card({ title: 'Card title', image: new Image({ url: 'https://example.com/image.png', alt: 'Alt text', }), button: new Link({ name: 'Link name', open: { url: 'https://example.com/', }, }), })); } else { // Respond with a simple response conv.add('Example simple response.'); }
עיבוד של אפליקציית האינטרנט
פעולה שמשתמשת בלוח שיתופי אינטראקטיבי כוללת אפליקציית אינטרנט עם רכיבים חזותיים שאתם שולחים למשתמשים כתגובה. אחרי שאפליקציית האינטרנט מעובדת, המשתמשים ממשיכים לקיים איתו אינטראקציה באמצעות קול, טקסט או מגע עד השיחה הסתיימה.
התשובה הראשונה של Canvas
חייבת להכיל את כתובת ה-URL של אפליקציית האינטרנט. הסוג הזה של
התשובה Canvas
מנחה את Google Assistant לעבד את אפליקציית האינטרנט בכתובת הזו
במכשיר של המשתמש. בדרך כלל, שולחים את התשובה הראשונה (Canvas
)
מיד לאחר שהמשתמש מפעיל את הפעולה. כשאפליקציית האינטרנט נטענת,
ספריית הקנבס האינטראקטיבית נטענת, ואפליקציית האינטרנט רושמת handler של קריאה חוזרת
באמצעות Interactive Canvas API.
ניתן לציין את כתובת ה-URL של אפליקציית האינטרנט ב-Actions Builder כפי שמוצג ב- צילום המסך הבא:
אם יוצרים הנחיה שכוללת תשובת Canvas
אחרי שמציינים את
כתובת ה-URL של אפליקציית האינטרנט, Actions Builder מאכלס באופן אוטומטי את שדה כתובת ה-URL של התשובה Canvas
. לקבלת מידע נוסף
על הגדרת כתובת ה-URL של אפליקציית האינטרנט במסוף,
הפעלת לוח שיתופי אינטראקטיבי.
קטעי הקוד הבאים מראים איך לבנות Canvas
תשובות במהירות
אפליקציית האינטרנט גם ב-Actions Builder וגם ב-webhook:
YAML
candidates: - first_simple: variants: - speech: >- Welcome! Do you want me to change color or pause spinning? You can also tell me to ask you later. canvas: url: 'https://your-web-app.com'
JSON
{ "candidates": [ { "first_simple": { "variants": [ { "speech": "Welcome! Do you want me to change color or pause spinning? You can also tell me to ask you later." } ] }, "canvas": { "url": "https://your-web-app.com" } } ] }
Node.js
app.handle('welcome', (conv) => { conv.add('Welcome! Do you want me to change color or pause spinning? ' + 'You can also tell me to ask you later.'); conv.add(new Canvas({ url: `https://your-web-app.com`, })); });
JSON
{ "session": { "id": "session_id", "params": {} }, "prompt": { "override": false, "firstSimple": { "speech": "Welcome! Do you want me to change color or pause spinning? You can also tell me to ask you later.", "text": "Welcome! Do you want me to change color or pause spinning? You can also tell me to ask you later." }, "canvas": { "data": [], "suppressMic": false, "url": "https://your-web-app.com" } } }
העברת נתונים לצורך עדכון של אפליקציית האינטרנט
אחרי ששולחים את התשובה הראשונית של Canvas
, אפשר להשתמש באפשרויות נוספות של Canvas
תגובות כדי לספק עדכונים לגבי data
, שמבוסס על הלוגיקה המותאמת אישית של אפליקציית האינטרנט שלך
כדי לבצע שינויים באפליקציית האינטרנט. כששולחים תשובה של Canvas
שעוברת
לנתוני אפליקציית האינטרנט, מתרחשים השלבים הבאים:
- כשמתבצעת התאמה בין ה-Intent בסצנה, האירוע מפעיל אירוע והתשובה
Canvas
שמכיל את השדהdata
עם מטען ייעודי (payload) של JSON, נשלח בחזרה כתגובה. - השדה
data
מועבר לקריאה חוזרת (callback) שלonUpdate
ומשמש לעדכון בדפדפן. פעולת השיחה יכולה לשלוח תשובה חדשה של
Canvas
ולספק מידע השדהdata
כדי לשלוח עדכונים חדשים או לטעון מצבים חדשים.
יש שתי דרכים להעביר נתונים לאפליקציית האינטרנט:
- באמצעות Actions Builder הכלי ליצירת פעולות מאכלס באופן אוטומטי את השדה
data
ב- התשובהCanvas
עם המטא-נתונים הנדרשים לעדכון אפליקציית האינטרנט. - באמצעות webhook אם יש לכם תגובה לפעולה מאתר אחר (webhook), אתם יכולים להגדיר נתונים בהתאמה אישית
מטען ייעודי (payload) לעדכון אפליקציית האינטרנט בתשובה של
Canvas
.
בקטעים הבאים מתואר איך להעביר נתונים דרך 'הכלי ליצירת פעולות', webhook.
איך משתמשים ב-Actions Builder כדי להעביר נתונים
בעזרת Actions Builder לא צריך להגדיר webhook כדי לנהל את המטא-נתונים
שנשלח לאפליקציית האינטרנט שלך. במקום זאת, כשמגדירים את ה-handler של Intent
בממשק המשתמש של Actions Builder, אפשר לכלול את התשובה Canvas
. א'
השדה data
מאוכלס באופן אוטומטי במטא-נתונים הנדרשים לעדכון
אפליקציית האינטרנט שלכם, למשל שם ה-Intent, פרמטרים שתועדו מהקלט של המשתמש,
לסצנה הנוכחית.
לדוגמה, ה-handler הבא של Intent Guess
מציין שאתם רוצים לכלול Canvas
.
תגובה:
YAML
candidates: - canvas: send_state_data_to_canvas_app: true
JSON
{ "candidates": [ { "canvas": { "send_state_data_to_canvas_app": true } } ] }
אפשר גם לצרף את קטע הקוד הבא ל-Intent כדי לשלוח הודעת TTS:
...
- first_simple:
variants:
- speech: Optional message.
הכלי Actions Builder מרחיב באופן אוטומטי את התשובה Canvas
עם מטא-נתונים ל-
מעדכנים את אפליקציית האינטרנט, כמו שמוצג בקטעי הקוד הבאים. במקרה הזה, המשתמש
ניחשו את האות "a" במשחק חיזוי מילים:
YAML
candidates: - canvas: data: - google: intent: params: letter: resolved: a original: a name: guess scene: Game sendStateDataToCanvasApp: true
JSON
{ "candidates": [ { "canvas": { "data": [ { "google": { "intent": { "params": { "letter": { "resolved": "a", "original": "a" } }, "name": "guess" }, "scene": "Game" } } ], "sendStateDataToCanvasApp": true } } ] }
התשובה הזו מעדכנת את אפליקציית האינטרנט בתשובה של המשתמש ועוברת אל את הסצנה המתאימה.
שימוש ב-webhook כדי להעביר נתונים
אפשר להגדיר באופן ידני את השדה data
של Canvas
תשובות ב-webhook
עם פרטי המצב הנדרשים כדי לעדכן את אפליקציית האינטרנט. בגישה הזאת
מומלץ אם צריך לכלול מטען ייעודי (payload) מותאם אישית של data
בתשובה של Canvas
במקום להעביר רק את המטא-נתונים הטיפוסיים הנדרשים לעדכון אפליקציית האינטרנט.
קטעי הקוד הבאים מראים איך להעביר נתונים בתגובה Canvas
תגובה לפעולה מאתר אחר (webhook):
Node.js
app.handle('start_spin', (conv) => { conv.add(`Ok, I'm spinning. What else?`); conv.add(new Canvas({ data: { command: 'SPIN', spin: true, }, })); });
JSON
{ "session": { "id": "session_id", "params": {} }, "prompt": { "override": false, "firstSimple": { "speech": "Ok, I'm spinning. What else?", "text": "Ok, I'm spinning. What else?" }, "canvas": { "data": { "command": "SPIN", "spin": true }, "suppressMic": false, "url": "" } } }
הנחיות והגבלות
חשוב לזכור את ההנחיות וההגבלות הבאות לגבי תשובות מסוג Canvas
במהלך יצירת הפעולה:
- כל handler של webhook למילוי הזמנות צריך לכלול
Canvas
. אם התגובה לפעולה מאתר אחר (webhook) התשובה לא כוללת אתCanvas
, אפליקציית האינטרנט שלך נסגרת. - עליך לכלול את כתובת ה-URL של אפליקציית האינטרנט רק בתשובה הראשונה (
Canvas
) ששולחים למשתמש. - כתובת ה-URL של התשובה
Canvas
צריכה להיות חוקית והפרוטוקול שלה חייב להיות HTTPS. - גודל התשובה
Canvas
חייב להיות 50KB לכל היותר.