我正在使用内联编辑器测试Dialogflow实现。 我想做的是使用que'request'库的http请求。 这是我正在使用的代码:
const requesthttp = require('request');
requesthttp('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY', { json: true }, (err, res, body) => {
if (err) { return console.log(err); }
console.log(body.url);
console.log(body.explanation);
});
但是它返回了一个找不到的错误。
我还注意到了Dialogflow上的警报,并显示以下消息:
“未配置结算帐户。无法访问外部网络,并且配额受到严格限制。配置结算帐户以消除这些限制。”
所以...很可能如果不配置计费帐户就无法测试这段代码。
我的问题是...是否可以使用网址来测试此代码? 还是我测试此代码的唯一方法是配置一个计费帐户并付款?
预先感谢
答案 0 :(得分:4)
有很多方法可以测试您的代码。
如果您想继续使用Dialogflow的内联编辑器,则需要将Firebase设置为使用付款计划。但是,Blaze plan是基本使用级别后的“随用随付”。此使用级别应足以涵盖该服务的大多数测试(甚至是非常轻量级的)使用,而无需收费。一旦您的操作获得批准,您就可以获得Google Cloud Platform的积分,如果您超过最低水平,该积分可以用于此用途。
您还可以使用Inline Editor所基于的Firebase Cloud Functions和您自己的本地编辑器。这样的优点之一是您可以在本地提供该功能,该功能具有与部署它相同的许多功能,但是没有URL限制(毕竟它是您自己的机器)。您可以使用ngrok之类的工具在测试过程中为您的计算机创建安全的隧道。测试之后,您可以使用付费计划将其部署到Firebase。
您当然可以选择使用任何其他所需的托管方法。 Google和Dialogflow允许您在任何服务器上运行实现Webhook,只要该服务器可以使用有效的非自签名证书提供HTTPS连接即可。如果您使用的是node.js,则可以继续使用这些库。如果您希望使用另一种语言,则需要能够解析并返回JSON,但除此之外没有任何限制。
答案 1 :(得分:1)
有很多创建自己的服务器的方法,例如将NodeJS客户端与Express.JS一起使用,您可以使用NGROK作为实现的Webhook将其公开到互联网上。
从下面的Express.JS的Google Actions代码开始
'use strict';
const {dialogflow} = require('actions-on-google');
const express = require('express');
const bodyParser = require('body-parser');
const app = dialogflow();
app.intent('Default Welcome Intent', conv => {
conv.ask('Hi, Welcome to Assistant by Express JS ');
});
express().use(bodyParser.json(), app).listen(8080);
答案 2 :(得分:0)
由于DF使用Firebase云功能,因此可以像在nodejs中一样使用https
。但是,要求在google / firebase Universe之外的域需要Firebase的付费版本。
const https = require('https');
return new Promise((resolve, reject) => {
const hostname = info.hostname;
const pathname = info.pathname;
let data = '';
const request = https.get(`https://${hostname}${pathname}`, (res) => {
res.on('data', (d) => {
data += d;
});
res.on('end', resolve);
});
request.on('error', reject);
});