ניהול ההקשרים

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

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

במאמר הזה מוסבר איך לקבל ולהגדיר הקשרים בזמן העיצוב ובזמן הריצה באמצעות Dialogflow Console,‏ API או fulfillment.

מתן שמות להקשרים

הכללים הבאים חלים על הקשרים למתן שמות:

כלל דוגמאות
משתמשים בשמות אלפאנומריים. mycontext1
במקום רווחים, משתמשים ב-- או ב-_. my-context-1
השמות לא תלויי אותיות רישיות. הפונקציות Abc123 ו-abc123 נחשבות שוות ערך.
כשמשתמשים ב-API, כל שמות ההקשרים הם באותיות קטנות. abc123

הגדרת הקשרים בזמן העיצוב

המסוף

  1. עוברים אל מסוף Dialogflow ES.
  2. בוחרים נציג תמיכה.
  3. בתפריט הצדדי הימני, לוחצים על כוונות.
  4. מרחיבים את הקטע Contexts בנתוני הכוונות.
  5. לוחצים על השדה הוספת הקשר לפלט או על השדה הוספת הקשר לקלט בנתוני הכוונה.
  6. מזינים שם להקשר ולוחצים על Return.
  7. בהקשרים של פלט, אפשר ללחוץ על העיגול של משך החיים ולשנות את משך החיים. תמונת מצב של ממשק המשתמש של תוחלת החיים
  8. מוסיפים עוד הקשרים לפי הצורך.
  9. לוחצים על Save.

API

לפרטים נוספים, אפשר לעיין בIntents reference.

הגדרת הקשרים בזמן הריצה

טיפול בהזמנות

כששירות ה-webhook שלכם שולח WebhookResponse, צריך להגדיר את השדה outputContexts להקשרים הפעילים הרצויים.

API

הבקשה לשיחה מסוג SessionsdetectIntent מכילה שדה queryParameters.contexts, שמשמש להגדרת הקשרים הפעילים.

הנה דוגמה ל-JSON של בקשת detectIntent ב-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, שבו מופיעה רשימת ההקשרים הפעילים.

הנה דוגמה לתגובת detectIntent ב-JSON של REST:

{
  "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.