部署 fulfillment (Dialogflow)

构建 webhook 执行方式后,将其部署到生产环境并连接 添加到你的 Action。以下步骤展示了如何设置环境 部署到 Cloud Functions for Firebase 以进行生产托管。不过, 您可以选择任何支持 HTTPS 请求的网站托管平台 来托管您的执行方式。

如果您已将网络钩子部署到网站托管平台,则可以 请跳至将 webhook 连接到您的 Action。请注意,最后一个 根据您使用的是 Dialogflow 还是 Actions SDK。

部署到 Cloud Functions for Firebase

  1. 下载并安装 Node.js
  2. 设置并初始化 Firebase CLI。如果以下命令失败并显示 EACCES 错误,您可能需要 更改 npm 权限

    npm install -g firebase-tools
    
  3. 使用 Google 账号对 Firebase 工具进行身份验证:

    firebase login
    
  4. 前往您的 Action 项目目录,然后初始化 Firebase。你会 要求您选择要为 Actions 项目。选择您可能想要使用的Functions及其他功能。 (例如 Firestore),然后按 Enter 键确认并继续:

    cd <cloud_function_dir>
    firebase init
    
  5. 使用以下方法将 Firebase 工具与 Actions 项目相关联: 按箭头键可浏览项目列表:

  6. 选择项目后,Firebase 工具会开始设置 Functions 询问你要使用什么语言使用箭头键进行选择,然后 按 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 捕获可能出现的 bug 并强制执行样式 输入 YN

    ? 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. 获取 fulfillment 依赖项并部署 fulfillment 函数:

    npm install
    firebase deploy --only functions
    

    部署需要几分钟时间。完成后,您将看到 与以下代码类似。您需要输入函数网址 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

将网络钩子连接到您的 Action

如果您使用的是 Dialogflow:在 Dialogflow 控制台,前往 Fulfillment,将 Webhook 按钮切换为已启用,并将 将 网址 字段中的网址替换为 Function 网址

如果您使用的是 Actions SDK:请创建一个对象 在 conversations 对象内,在 Action 中声明执行方式 软件包:

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