Развертывание выполнения (Dialogflow)

Создав вебхук-функцию, разверните его в рабочей среде и подключите к своему действию. Следующие шаги покажут, как настроить среду для развертывания Cloud Functions для Firebase на рабочем хостинге. Однако вы можете выбрать любую платформу веб-хостинга, поддерживающую HTTPS-запросы и ответы, для размещения вашего выполнения.

Если вы уже развернули свой веб-перехватчик на платформе веб-хостинга, вы можете перейти к разделу «Подключение веб-перехватчика к вашему действию» . Обратите внимание, что последние шаги приведенного ниже процесса различаются в зависимости от того, используете ли вы Dialogflow или Actions SDK.

Развертывание в облачных функциях для Firebase

  1. Загрузите и установите Node.js.
  2. Настройте и инициализируйте интерфейс командной строки Firebase. Если следующая команда завершается с ошибкой EACCES , возможно, вам придется изменить разрешения npm .

    npm install -g firebase-tools
    
  3. Аутентифицируйте инструмент Firebase с помощью своей учетной записи Google:

    firebase login
    
  4. Перейдите в каталог проекта Action и инициализируйте Firebase. Вам будет предложено выбрать, какие функции Firebase CLI вы хотите настроить для своего проекта Actions. Выберите Functions и другие функции, которые вы, возможно, захотите использовать, например Firestore, затем нажмите Enter, чтобы подтвердить и продолжить:

    cd <cloud_function_dir>
    firebase init
    
  5. Свяжите инструмент Firebase с вашим проектом Actions, выбрав его с помощью клавиш со стрелками для навигации по списку проектов:

  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. Установите зависимость action-on-google :

    cd <cloud_function_dir>/functions
    npm install actions-on-google
    
  10. Получите зависимости выполнения и разверните функцию выполнения:

    npm install
    firebase deploy --only functions
    

    Развертывание занимает несколько минут. После завершения вы увидите вывод, аналогичный следующему. Вам понадобится URL-адрес функции для входа в Dialogflow.

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

Подключите вебхук к своему действию

Если вы используете Dialogflow: в консоли Dialogflow перейдите в раздел «Выполнение» , переключите кнопку Webhook в положение «ВКЛЮЧЕНО» и замените URL-адрес в поле URL-адресом на 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"
}