ברוב המקרים, מגדירים את ההקשרים בזמן העיצוב (כשמפתחים סוכן). לדוגמה, אם יש לכם ביטוי לאימון כמו: "אני רוצה להוסיף פיצה לעגלת הקניות שלי".
במקרים מתקדמים מסוימים, יכול להיות שתרצו גם לכתוב קוד שמקבל ומגדיר הקשרים מסוימים בזמן ריצה (במהלך שיחה פעילה). לדוגמה, זיהית מיקום של מכשיר והוספת אותו להקשר, כדי שתוכל להתייחס למיקום הזה במועד מאוחר יותר.
במאמר הזה מוסבר איך לקבל ולהגדיר הקשרים בזמן העיצוב ובזמן הריצה באמצעות Dialogflow Console, API או fulfillment.
מתן שמות להקשרים
הכללים הבאים חלים על הקשרים של השמות:
| כלל | דוגמאות |
|---|---|
| משתמשים בשמות אלפאנומריים. | mycontext1 |
במקום רווחים, משתמשים ב-- או ב-_. |
my-context-1 |
| השמות לא תלויי אותיות רישיות. | הפונקציות Abc123 ו-abc123 נחשבות שוות ערך. |
| כשמשתמשים ב-API, כל שמות ההקשרים הם באותיות קטנות. | abc123 |
הגדרת הקשרים בזמן העיצוב
המסוף
- עוברים אל מסוף Dialogflow ES.
- בוחרים נציג תמיכה.
- בתפריט הצדדי הימני, בוחרים באפשרות כוונות.
- מרחיבים את הקטע Contexts בנתוני הכוונות.
- לוחצים על השדה הוספת הקשר לפלט או על השדה הוספת הקשר לקלט בנתוני הכוונה.
- מזינים שם להקשר ולוחצים על Return.
- בהקשרים של פלט, אפשר ללחוץ על העיגול של משך החיים ולשנות את משך החיים.

- מוסיפים עוד הקשרים לפי הצורך.
- לוחצים על Save.
API
לפרטים נוספים עיינו במפרט של השיטה ב-Intents reference.
הגדרת הקשרים בזמן הריצה
טיפול בהזמנות
כששירות ה-webhook שלכם שולח WebhookResponse, צריך להגדיר את השדה outputContexts להקשרים הפעילים הרצויים.
API
הבקשה לשיחה מסוג SessionsdetectIntent מכילה שדה queryParameters.contexts, שמשמש להגדרת הקשרים הפעילים.
הנה דוגמה לבקשת detectIntent ב-JSON של REST:
POST https://dialogflow.googleapis.com/v2/{session=projects/*/agent/sessions/*}:detectIntent
{
"queryInput": {
"text": {
"languageCode": "en-US",
"text": "I would like to add pizza to my shopping cart."
}
},
"queryParams": {
"contexts": [{
"name": "projects/project-id/agent/sessions/session-id/contexts/product-chosen",
"lifespanCount": 5,
"parameters": {
"product": "Pizza",
"device-location" "@52.3377871,4.8698096,17z"
}
}]
}
}
בכל שלב, אפשר גם להפעיל את השיטות create, delete ו-update בסוג Contexts.
קבלת הקשרים בזמן הריצה
טיפול בהזמנות
כששירות ה-webhook מקבל WebhookRequest, השדה queryResult.outputContexts מכיל את ההקשרים הפעילים.
API
התשובה לקריאה מסוג Sessions detectIntent מכילה שדה queryResult.outputContexts, שמספק את רשימת ההקשרים הפעילים.
הנה דוגמה לתגובת JSON של REST ל-detectIntent:
{
"responseId": "response-id",
"queryResult": {
"queryText": "I would like to add pizza to my shopping cart.",
"parameters": {
"product": "pizza"
},
"allRequiredParamsPresent": true,
"fulfillmentText": "The product has been added.",
"fulfillmentMessages": [
{
"text": {
"text": [
"The product has been added."
]
}
}
],
"outputContexts": [
{
"name": "projects/project-id/agent/sessions/session-id/contexts/product-chosen",
"lifespanCount": 5,
"parameters": {
"product": "Pizza",
"device-location" "@52.3377871,4.8698096,17z"
}
}
],
"intent": {
"name": "projects/project-id/agent/intents/intent-id",
"displayName": "buy-product"
},
"intentDetectionConfidence": 0.8057143,
"languageCode": "en",
}
}
בכל שלב, אפשר גם להפעיל את השיטות get ו-list בסוג Contexts.