השירות מגדיר את ממשק השיחה שבו פרויקט הפעולות יכול לקבל של המשתמשים והלוגיקה לעיבוד הקלט, ולבסוף לביצוע הפעולה.
סקירה כללית
מילוי הבקשה מקבל בקשות מ-Assistant, מעבד את הבקשה מגיב. תהליך הבקשה והתגובה הלוך ושוב הזה מוביל עד שבסופו של דבר תמלאו את בקשת המשתמש הראשונית.
בשלבים הבאים מוסבר איך ליצור מילוי הזמנות באמצעות הפעולות ב-SDK עם ספריית הלקוח Java/Kotlin או Node.js:
- לאתחל את האובייקט ActionsSdkApp.
- יצירת פונקציות לטיפול בבקשות בלוגיקת מילוי ההזמנות.
יצירה של תיבות דו-שיח
אתחול האובייקט ActionsSdkApp
הקוד הבא מייצר
ActionsSdkApp
ומבצעת הגדרות קבועות של Node.js מראש ב-Google Cloud Functions:
'use strict'; const {actionssdk} = require('actions-on-google'); const functions = require('firebase-functions'); const app = actionssdk({debug: true}); app.intent('actions.intent.MAIN', (conv) => { conv.ask('Hi!'); }); // More intent handling if needed exports.myFunction = functions.https.onRequest(app);
ResponseBuilder responseBuilder = getResponseBuilder(request).add("Hi!"); return responseBuilder.build();
{ "expectUserResponse": true, "expectedInputs": [ { "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "Hi!" } } ] } }, "possibleIntents": [ { "intent": "actions.intent.TEXT" } ] } ], "conversationToken": "{\"data\":{}}", "userStorage": "{\"data\":{}}" }
יצירת פונקציות לטיפול בבקשות
כשמשתמשים אומרים ביטוי, מתקבלת בקשה מ-Google Assistant. שפת תרגום למלא את הכוונות שמופיעות בבקשות, ליצור פונקציות שמטפלות שהפעיל את ה-Intent.
כדי לטפל בבקשות:
מבצעים כל לוגיקה שנדרשת לעיבוד הקלט של המשתמשים.
קוראים לפונקציה
conv.ask()
ומעבירים את התגובה שרוצים להציג כארגומנט.
הקוד הבא מראה איך לבנות תשובה פשוטה:
conv.ask(`Hi! Say something, and I'll repeat it.`);
ResponseBuilder responseBuilder = getResponseBuilder(request).add("Hi! Say something, and I'll repeat it."); return responseBuilder.build();
{ "expectUserResponse": true, "expectedInputs": [ { "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "Hi! Say something, and I'll repeat it." } } ] } }, "possibleIntents": [ { "intent": "actions.intent.TEXT" } ] } ], "conversationToken": "{\"data\":{}}", "userStorage": "{\"data\":{}}" }
טיפול בכוונות
לאחר שכל הפונקציות לטיפול באובייקטים של Intent מופעלים, צריך להשתמש ב-app.intent
כדי
להקצות handlers ל-Intent.
app.intent('actions.intent.TEXT', (conv) => { // handle text intent. }); app.intent('actions.intent.MAIN', (conv) => { // handle main intent. });
@ForIntent("actions.intent.MAIN") public ActionResponse main(ActionRequest request) { // handle main intent // ... } @ForIntent("actions.intent.TEXT") public ActionResponse text(ActionRequest request) { // handle text intent // ... }
השיחות מסתיימות
אם אתם לא רוצים שתתקבל יותר קלט של משתמשים ותרצו לסיים את השיחה,
קוראים לפונקציה conv.close()
.
הפונקציה הזו מנחה את Google Assistant לומר את הטקסט למשתמש ולסיים את השיחה על ידי סגירת המיקרופון.
טיפול בכוונת ההפעלה העיקרית
כשמשתמשים מפעילים את Intent app.intent.action.MAIN
, בדרך כלל לא מפעילים את ההגדרה הזו
צריך לבצע עיבוד קלט של משתמשים. אם חבילת הפעולות שלכם מכילה הרבה
והיא כוללת תרחישים לדוגמה רבים, כדאי לכוון את המשתמש
להם כמה דברים שהם יכולים לעשות.
- קוראים לפונקציה
conv.ask()
מעבירה את התשובה כארגומנט. Google Assistant אומרת את התשובה שלכם למשתמש ואז ימתין שהמשתמש יפעיל את אחת מהאובייקטים של ה-Intent שציינתם.
הקטע הבא מראה איך לטפל בכוונת הצטרפות פשוטה:
// handle the initialTrigger function handleMainIntent(conv, input) { conv.ask(input); }
private ActionResponse handleMainIntent(ResponseBuilder rb, String input) { return rb.add(input).build(); }
מצב השיחה
אם אתם משתמשים בשיחה מסוג HTTP/JSON webhook API, אפשר לשמור על
את מצב השיחות שלך עם אובייקט בפורמט JSON (conversationToken
)
שמועבר הלוך ושוב ביניכם לבין Google Assistant. אם אתם
באמצעות ספריית הלקוח של Node.js,
יכולים לכתוב ולקרוא מהשדה conv.data
ישירות. השדה הזה
מועבר באופן אוטומטי בין הבקשות והתשובות.
conv.data = {something: 10}; let value = conv.data.something;
ResponseBuilder rb = getResponseBuilder(request); rb.getConversationData().put("something", 10); Object value = rb.getConversationData().get("something");