我正在设置DialogFlow包装器,并且正在使用DialogFlow JavaScript SDK。但是,出现以下错误:
错误:对浏览器客户端域的请求不安全:dialogflow.googleapis.com
这以前是可行的,但是我不确定为什么突然停止了。
我尝试将所有代码还原为有效的版本。我确定这是DialogFlow错误。
const intentDetectResponse = await sessionClient.detectIntent(request)
Run Code Online (Sandbox Code Playgroud)
完整的错误日志如下:
{ Error: Request unsafe for browser client domain: dialogflow.googleapis.com
at Http2CallStream.call.on (/Users/NewProject/node_modules/@grpc/grpc-js/build/src/client.js:101:45)
at Http2CallStream.emit (events.js:194:15)
at process.nextTick (/Users/NewProject/node_modules/@grpc/grpc-js/build/src/call-stream.js:71:22)
at process.internalTickCallback (internal/process/next_tick.js:70:11)
code: 3,
details:
'Request unsafe for browser client domain: dialogflow.googleapis.com',
metadata:
Metadata {
options: undefined,
internalRepr: Map { 'grpc-server-stats-bin' => [Array] } } }
Run Code Online (Sandbox Code Playgroud) 我有一个 Dialogflow 聊天机器人。在 Dialogflow 内部测试器中一切正常,但在 facebook 上显示的版本中,我无法获得卡片或建议。即使我用另一个工作聊天机器人的代码替换它们。
const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
const {Card, Suggestion, Payload} = require('dialogflow-fulfillment');
var answers = [];
process.env.DEBUG = 'dialogflow:debug'; // enables lib debugging statements
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
const agent = new WebhookClient({ request, response });
function welcome(agent) {
agent.add('Hi! Do you want to discover your lockdown personality?');
agent.add(new Card({
title: '1. How has the COVID-19 crisis',
imageUrl: 'https://ejoy-english.com/blog/wp-content/uploads/2018/08/shutterstock_524250877-e1496428580440.jpg',
text: 'impacted the stability of your life?',
})
);
agent.add(new …Run Code Online (Sandbox Code Playgroud) 我正在使用 Dialogflow 并在特定结构中设置了 x 数量的意图,包括无上下文意图和后续意图。
有了这个,我有 1 个默认的“欢迎意图”,它有一个简单的文本响应。但是,我还有一个 Google 协助响应“基本卡”类型,我希望在默认文本响应之前发出它,并且想知道这是否可能?
或者,我希望能够以一种在触发下一个 Intent 之前不需要用户输入的方式链接 Intent。我已经看到在 Dialogflow 中没有用户输入的情况下触发下一个意图是指 API 或 Webhooks,尽管这似乎需要启用“云功能”或 Webhooks 在 Dialogflow 之外的应用程序上指定端点。我最好将这个逻辑包含在 Dialogflow 中,而不是包含在 Webhooks 中。通过 API,我并不清楚如何处理这个问题,因此任何有关这方面的指导都会有所帮助。
我也知道对此提出了类似的问题,指出意图基于用户输入/意图,但无论这种设计如何,我仍然想知道是否有可能在上述约束范围内?
我们使用google cloud功能作为webhook构建了一个Dialogflow代理,该代理可以正常运行直到昨天晚上。那时,我导出了代理,之后又重新导入,它工作了一段时间。
停止工作的是,即使根据UI和原始API响应设置了上下文,agent.context.get('...');(也agent.getContext('...'))确实会返回undefined。
例如,我有一个意图,该意图具有必需的slot shop,启用了用于填充插槽的webhook。当我测试代理时,命名的意图info正确匹配,并且上下文info_dialog_params_store似乎也存在:
根据原始API响应,这是输出上下文的一部分:
"outputContexts": [
{
"name": "projects/MYAGENTNAME/agent/sessions/0b753e8e-b377-587b-3db6-3c8dc898879b/contexts/info_dialog_params_store",
"lifespanCount": 1,
"parameters": {
"store": "",
"store.original": "",
"kpi": "counts",
"date_or_period": "",
"kpi.original": "trafico",
"date_or_period.original": ""
}
}
Run Code Online (Sandbox Code Playgroud)
在webhook中,我将意图正确地映射到js函数:
let intentMap = new Map();
intentMap.set('info', info);
agent.handleRequest(intentMap);
Run Code Online (Sandbox Code Playgroud)
info函数的第一行如下所示:
function info(agent) {
store_context = agent.context.get('info_dialog_params_store');
}
Run Code Online (Sandbox Code Playgroud)
哪个返回
TypeError: Cannot read property 'get' of undefined
at info (/user_code/index.js:207:36)
at WebhookClient.handleRequest (/user_code/node_modules/dialogflow-fulfillment/src/dialogflow-fulfillment.js:303:44)
at exports.dialogflowFirebaseFulfillment.functions.https.onRequest (/user_code/index.js:382:9)
at cloudFunction (/user_code/node_modules/firebase-functions/lib/providers/https.js:57:9)
at /var/tmp/worker/worker.js:762:7 …Run Code Online (Sandbox Code Playgroud) google-cloud-platform dialogflow-es dialogflow-es-fulfillment
调用DialogFlow v2 detectIntentAPI后,我们会随机收到状态代码为13的内部错误:
Webhook呼叫失败。没有HTTP状态代码的提取失败。状态:状态:URL_REJECTED原因:67
该错误似乎是随机发生的。相同的请求可以成功或失败。有趣的是,自2019年8月23日(星期五)以来,该服务一直在恶化,直到今天几乎所有电话都无法通过。
URL_REJECTED互联网上的DialogFlow或Google 根本找不到任何东西。
但是我们在此页面上找到了状态码13的含义:
内部错误。这意味着基础系统期望的一些不变式已被破坏。该错误代码保留用于严重错误。
我们还检查了我们是否没有禁止Google IP,是否没有弄乱我们的负载平衡(我们想到了这一点,因为随机失败会很有意义)。
Webhook已启动并正在运行,我们可以自己调用它。该问题似乎发生在Google的基础设施中,错误代码13似乎显示出来。
google-cloud-platform dialogflow-es dialogflow-es-fulfillment
我正在使用 webhook 在 dialogflow 上制作一个机器人。我收到一个错误:DEADLINE_EXCEEDED。我的 webhook 需要 5 秒多一点的时间来返回响应。有没有办法允许超过 5 秒的时间?
我收到错误,因为“异步函数”仅在 es8 中可用(使用“esversion 8”)” 我尝试在内联代码 package.json 中放入“esversion:8”,但它不起作用,并且函数未部署。
代码: index.js
'use strict';
'use esversion: 8'; //not working
async function getWeather() {
const city = 'Mumbai';
const OPENWEATHER_API_KEY = '<API KEY>';
const response = await fetch(`http://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${OPENWEATHER_API_KEY}`);
const data = await response.json();
console.log(data);
const { main } = data;
const { temp } = main;
const kelvin = temp;
const celsius = Math.round(kelvin - 273.15);
console.log(celsius);
}
Run Code Online (Sandbox Code Playgroud)
代码package.json
{
"name": "dialogflowFirebaseFulfillment",
"description": "This is the default fulfillment for a …Run Code Online (Sandbox Code Playgroud) javascript node.js google-cloud-functions dialogflow-es dialogflow-es-fulfillment
有没有办法获得用户和代理之间的完整对话。与我通过单击历史标签获得的结果非常相似,但以编程方式获得。重点是将用户和代理之间的交互保存为文本。
提前谢谢各位了!
chatbot node.js api-ai dialogflow-es dialogflow-es-fulfillment
当我离开办公室时,我必须关掉电脑,然后我必须在Ngrok第二天开始工作。令人惊讶的是,它URL给出Ngrok的与昨天给出的不同。所以为了测试Dialogflow我Webhook Fulfillment必须每天都改变URL!那么如何避免这种情况呢?
我想使用 dialogflow 进行注册。例如:我想让机器人问以下问题:
你叫什么名字?你的邮箱是什么?
等等。
我试图实现这一点,但无法正确管理意图。我该怎么做才能实现这一目标?谢谢
使用谷歌新的可视化 DialogFlow CX 构建器,我将参数传递给 Flow。模拟器显示参数已设置,我可以访问它,$session.params.anger
但想知道如何设置会话/页面/意图参数。
还有这些条件块的语法是什么。似乎有一些奇怪的类似 bash 的语法。它似乎if/else/endif有效并且具有基本的语法突出显示,但我只是通过反复试验发现了这一点。有没有这方面的文件?也许它是 ES 的一个共同特征?
https://cloud.google.com/dialogflow/cx/docs/concept/parameter
dialogflow-es ×10
node.js ×3
chatbot ×2
javascript ×2
api-ai ×1
express ×1
ngrok ×1
rich-media ×1
webhooks ×1