gpt4 book ai didi

javascript - 当我在服务器中将 Promise 与 dialogflow 库一起使用时 - 出现错误

转载 作者:行者123 更新时间:2023-11-29 23:13:33 25 4
gpt4 key购买 nike

我尝试在 Firebase Cloud Functions 上执行这段代码

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const firebase_database = require('./conf/firebase');
const { WebhookClient } = require('dialogflow-fulfillment');

exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
function searcheColleagueByName(agent){
var lastname = agent.parameters.lastname;
firebase_database.ref().once('value')
.then(team => {
agent.add("some name " + lastname);
})
.catch(err=>{
agent.add("something wrong");
})
}

当我通过电报向我的机器人发出请求后,我在 firebase 控制台中收到错误消息:

Error: No responses defined for platform: null
at V2Agent.sendResponses_ (/srv/node_modules/dialogflow-fulfillment/src/v2-agent.js:243:13)
at WebhookClient.send_ (/srv/node_modules/dialogflow-fulfillment/src/dialogflow-fulfillment.js:505:17)
at promise.then (/srv/node_modules/dialogflow-fulfillment/src/dialogflow-fulfillment.js:316:38)
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:228:7)

怎么了?为什么当我使用 promise 时,我的代理不能给我答案?

最佳答案

问题是,如果您使用的是异步函数,那么您的意图处理程序还必须返回一个 Promise。将回复作为 then() 子句的一部分发送是不够的,您还必须返回 then() 所属的 Promise。

在您的情况下,这看起来相当简单。在 searchColleagueByName() 函数中,您将返回 then once().then().catch() 结果,这是一个 Promise。 (因为 then()catch() 返回一个 Promise。)

所以它可能看起来像这样:

   return firebase_database.ref().once('value')
.then(team => {
agent.add("some name " + lastname);
})
.catch(err=>{
agent.add("something wrong");
})

关于javascript - 当我在服务器中将 Promise 与 dialogflow 库一起使用时 - 出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53382012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com