在将比特币信息操作部署到Firebase时无法获取函数URL



我正在根据 https://codelabs.developers.google.com/codelabs/your-first-action-on-google-with-webhook/#0 的说明部署 https://github.com/greenido/bitcoin-info-action

当我使用示例中提供的 Webhook URL 时,它工作正常。当我自己使用 webhook 的代码构建和部署时,它不会生成函数 URL。

以下是步骤:

  1. 克隆 Git 存储库 https://github.com/greenido/bitcoin-info-action
  2. 执行 firebase init 执行 firebase 部署(将所有模块安装 需要)
  3. 我没有更改索引.js,在Google Assistant教程和其他教程中找不到Firebase webhook的功能url中查看了答案。

我已经检查了左侧菜单上的Firebase控制台和功能,但没有找到URL,而是有关部署的说明(与我使用的相同)

以下是 firebase 部署的输出:

[google-tester-mn1:~/soverflow/bitcoin-info-action-master ] $ /Users/google-tester/.nvm/versions/node/v9.3.0/lib/node_modules/firebase-tools/bin/firebase deploy
=== Deploying to 'bitcoininfo-5cb78'...
i  deploying functions, hosting
i  functions: ensuring necessary APIs are enabled...
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  hosting: preparing public directory for upload...
✔  hosting: 2 files uploaded successfully
✔  Deploy complete!
Project Console: https://console.firebase.google.com/project/bitcoininfo-5cb78/overview
Hosting URL: https://bitcoininfo-5cb78.firebaseapp.com

以下是仅部署函数的输出:

Deploying to 'bitcoininfo-5cb78'...
i  deploying functions
i  functions: ensuring necessary APIs are enabled...
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
✔  Deploy complete!
Project Console: https://console.firebase.google.com/project/bitcoininfo-5cb78/overview

目录内容:

[google-tester-mn1:~/soverflow/bitcoin-info-action-master/functions ] $ ls -l ~/soverflow/bitcoin-info-action-master total 96 -rwxr-xr-x@ 1 google-tester google-tester 1642 Nov 16 17:04 CONTRIBUTING.md -rwxr-xr-x@ 1 google-tester google-tester 11325 Nov 16 17:04 LICENSE -rwxr-xr-x@ 1 google-tester google-tester 3255 Nov 16 17:04 README.md -rw-r--r--@ 1 google-tester google-tester 796 May 1 2017 agent.json -rw-r--r--@ 1 google-tester google-tester 3865 Nov 16 17:04 bitcoin-info-io17.zip -rw-r--r-- 1 google-tester google-tester 134 Dec 29 11:42 firebase.json drwxr-xr-x 6 google-tester google-tester 204 Dec 29 12:31 functions -rwxr-xr-x@ 1 google-tester google-tester 4411 Nov 16 17:04 index.js drwxr-xr-x@ 7 google-tester google-tester 238 Dec 29 11:39 intents -rwxr-xr-x@ 1 google-tester google-tester 647 Nov 16 17:04 package.json drwxr-xr-x 4 google-tester google-tester 136 Dec 29 11:42 public -rwxr-xr-x@ 1 google-tester google-tester 2476 Nov 16 17:04 webhook-example-bitcoin.php

Again:

[google-tester-mn1:~/soverflow/bitcoin-info-action-master/functions ]ls -l ~/soverflow/bitcoin-info-action-master/functions/ total 576 -rw-r--r--@ 1 google-tester google-tester 4411 Dec 29 12:23 index.js drwxr-xr-x 124 google-tester google-tester 4216 Dec 29 12:24 node_modules -rw-r--r-- 1 google-tester google-tester 281603 Dec 29 12:24 package-lock.json -rw-r--r-- 1 google-tester google-tester 460 Dec 29 12:24 package.json

包.json的内容:

{ "name": "functions", "description": "Cloud Functions for Firebase", "scripts": { "serve": "firebase serve --only functions", "shell": "firebase experimental:functions:shell", "start": "npm run shell", "deploy": "firebase deploy --only functions", "logs": "firebase functions:log" }, "dependencies": { "actions-on-google": "^1.7.0", "firebase-admin": "~5.4.2", "firebase-functions": "^0.7.1" }, "private": true }

我有所有的节点模块,包括谷歌上的操作。没有关于缺少模块的错误。

问题是代码是为Google Cloud Functions(GCF)编写的(正如Ido在他的评论中指出的那样),而你正在尝试使用Cloud Functions for Firebase(CFF或GCFF)部署它。虽然 CFF 建立在 GCF 之上,但在注册函数本身的方式上存在一些细微差异。

使用GCF,您需要:

  1. 导出函数
  2. 将代码上传到 GCF(使用gcloud命令行工具或使用控制台)
  3. 如果您使用了控制台,请添加函数

使用GCFF时,您需要:

  1. 在代码中需要firebase-functions库(通常使用const functions = require('firebase-functions');之类的内容)
  2. 导出代码中functions.https.onRequest(...)的结果
  3. 使用firebase deploy进行部署

我已经为 Ido 提交了一个拉取请求以更改他的代码 (https://github.com/greenido/bitcoin-info-action/pull/4),或者您可以在 https://github.com/afirstenberg/bitcoin-info-action 时从 master 中提取它。

如果您转到 Firebase 控制台(使用网络浏览器),则履行网址也会显示。

最新更新