מילוי בקשה לפריסה (Dialogflow)

אחרי שמסיימים ליצור את מילוי הבקשה של תגובה לפעולה מאתר אחר (webhook), צריך לפרוס אותה בסביבת הייצור ולחבר אותה לפעולה. בשלבים הבאים מוסבר איך להגדיר את הסביבה כך שתהיה פריסה ב-Cloud Functions for Firebase לצורך אירוח בסביבת ייצור. עם זאת, תוכלו לבחור כל פלטפורמת אירוח באינטרנט שתומכת בבקשות ובתגובות HTTPS לאירוח מילוי הבקשה.

אם כבר פרסתם את ה-webhook בפלטפורמה לאירוח באינטרנט, תוכלו לדלג כדי לחבר את ה-webhook לפעולה שלכם. שימו לב שהשלבים הסופיים בתהליך שלמטה משתנים בהתאם לשימוש ב-Dialogflow או ב-Actions SDK.

פריסה ב-Cloud Functions for Firebase

  1. מורידים ומתקינים את Node.js.
  2. מגדירים ומפעילים את ה-CLI של Firebase. אם הפקודה הבאה נכשלת עם השגיאה EACCES, יכול להיות שתצטרכו לשנות את ההרשאות ל-npm.

    npm install -g firebase-tools
    
  3. מאמתים את כלי Firebase באמצעות חשבון Google:

    firebase login
    
  4. עוברים לספרייה של פרויקט הפעולה ומפעילים את Firebase. תתבקשו לבחור אילו תכונות של ה-CLI של Firebase תרצו להגדיר לפרויקט Actions. בוחרים את Functions ותכונות אחרות שאולי רוצים להשתמש בהן, כמו Firestore, ומקישים על Enter כדי לאשר ולהמשיך:

    cd <cloud_function_dir>
    firebase init
    
  5. משייכים את הכלי Firebase לפרויקט הפעולות על ידי בחירה בו באמצעות מקשי החיצים:

    .
  6. אחרי שבוחרים את הפרויקט, הכלי של Firebase מתחיל את הגדרת הפונקציות ושואל אתכם באיזו שפה להשתמש. בחרו באמצעות מקשי החצים ומקישים על Enter כדי להמשיך.

    === Functions Setup
    A functions directory will be created in your project with a Node.js package pre-configured. Functions can be deployed with firebase deploy. ? What language would you like to use to write Cloud Functions? (Use arrow keys) > JavaScript TypeScript
  7. בוחרים אם להשתמש ב-ESLint כדי לאתר באגים אפשריים ולאכוף הקלדת סגנון Y או N:

    ? Do you want to use ESLint to catch probable bugs and enforce style? (Y/n)
  8. כדי לקבל את יחסי התלות של הפרויקט, מקלידים Y בהנחיה:

    ? Do you want to install dependencies with npm now? (Y/n)

    לאחר השלמת ההגדרה, יוצג פלט הדומה לפלט הבא:

    ✔  Firebase initialization complete!
  9. מתקינים את התלות actions-on-google:

    cd <cloud_function_dir>/functions
    npm install actions-on-google
    
  10. משיגים את יחסי תלות של מילוי הבקשה ופורסים את הפונקציה של מילוי הבקשה:

    npm install
    firebase deploy --only functions
    

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

    ✔  Deploy complete!
    Project Console: https://console.firebase.google.com/project/exampleproject-123/overview Function URL (cloudFunctionName): https://us-central1-exampleproject-123.cloudfunctions.net/cloudFunctionName

חיבור ה-webhook לפעולה

אם משתמשים ב-Dialogflow: במסוף של Dialogflow, נכנסים לקטע Fulfillment, מעבירים את הלחצן Webhook למצב מופעל ומחליפים את כתובת ה-URL שבשדה URL ב-Function URL.

אם משתמשים ב-Actions SDK: צריך ליצור אובייקט בתוך האובייקט conversations כדי להצהיר על מילוי הבקשה בחבילת הפעולות:

{
  "actions": [
    {
      "description": "Default Welcome Intent",
      "name": "MAIN",
      "fulfillment": {
        "conversationName": "myFulfillmentFunction"
      },
      "intent": {
        "name": "actions.intent.MAIN",
        "trigger": {
          "queryPatterns": [
            "talk to myFulfillmentFunction"
          ]
        }
      }
    }
  ],
  "conversations": {
    "myFulfillmentFunction": {
      "name": "myFulfillmentFunction",
      "url": "https://us-central1-myprojectname-ab123.cloudfunctions.net/cloudFunctionName"
    }
  },
  "locale": "en"
}