Dialogflow es 如何在dialogflow中使用内联编辑器获取外部api数据
我有一个Dialogflow代理,我正在使用Firebase云函数支持的内联编辑器。当我尝试使用RequestPromise native获取外部api数据时,我总是忽略firebase控制台中已完成函数的异常Dialogflow es 如何在dialogflow中使用内联编辑器获取外部api数据,dialogflow-es,actions-on-google,fulfillment,Dialogflow Es,Actions On Google,Fulfillment,我有一个Dialogflow代理,我正在使用Firebase云函数支持的内联编辑器。当我尝试使用RequestPromise native获取外部api数据时,我总是忽略firebase控制台中已完成函数的异常 function video(agent) { agent.add(`You are now being handled by the productivity intent`); const url = "https://reqres.in/api/users?page
function video(agent) {
agent.add(`You are now being handled by the productivity intent`);
const url = "https://reqres.in/api/users?page=2";
return request.get(url)
.then(jsonBody => {
var body = JSON.parse(jsonBody);
agent.add(body.data[0].first_name)
return Promise.resolve(agent);
});
}
内联编辑器使用Firebase。如果您没有Firebase的付费帐户,您将无法访问外部API 内联编辑器使用Firebase。如果您没有Firebase的付费帐户,您将无法访问外部API 您的代码看起来是正确的。本例中的例外情况可能是,您没有使用付费帐户,因此Google之外的网络访问被阻止。通过添加catch块,您可能会看到确切的异常:
function video(agent) {
agent.add(`You are now being handled by the productivity intent`);
const url = "https://reqres.in/api/users?page=2";
return request.get(url)
.then(jsonBody => {
var body = JSON.parse(jsonBody);
agent.add(body.data[0].first_name)
return Promise.resolve(agent);
})
.catch(err => {
console.error('Problem making network call', err);
agent.add('Unable to get result');
return Promise.resolve(agent);
});
}
如果您这样做,您可能希望使用日志中的确切错误更新您的问题。您的代码看起来是正确的。本例中的例外情况可能是,您没有使用付费帐户,因此Google之外的网络访问被阻止。通过添加catch块,您可能会看到确切的异常:
function video(agent) {
agent.add(`You are now being handled by the productivity intent`);
const url = "https://reqres.in/api/users?page=2";
return request.get(url)
.then(jsonBody => {
var body = JSON.parse(jsonBody);
agent.add(body.data[0].first_name)
return Promise.resolve(agent);
})
.catch(err => {
console.error('Problem making network call', err);
agent.add('Unable to get result');
return Promise.resolve(agent);
});
}
如果您这样做,您可能希望使用日志中的确切错误更新您的问题。是的,我理解,您是对的,但我的意思是。。。我的代码完美吗?我的意思是,外部api可以通过这种方式调用吗?您可以使用axios,因为请求没有自己的承诺。他们表示正在使用request-promise-native,它确实返回了一个承诺。这部分看起来是正确的。我对该模块有一些问题,必须在承诺中使用常规请求模块。所以我分享了axios。是的,我理解,你是对的,但我的意思是。。。我的代码完美吗?我的意思是,外部api可以通过这种方式调用吗?您可以使用axios,因为请求没有自己的承诺。他们表示正在使用request-promise-native,它确实返回了一个承诺。这部分看起来是正确的。我对该模块有一些问题,必须在承诺中使用常规请求模块。所以我分享了axios。谢谢你,囚犯,现在我可以继续我的账单部分了。。。然后我会让你知道firebase函数的日志。。。还有一件事我想问一下,我可以使用我的sql数据库进行代理响应吗?我的意思是,这适合在内联编辑器中使用sql,还是我应该使用webhook。通常我会说,作为一个新的StackOverflow问题来提问,这样其他人就可以从问答中受益。但是这个很简单——内联编辑器是一个webhook。这只是一个简单的对话框,您可以在Dialogflow内部进行编辑。如果您对此有后续问题-请发布一个新问题。@当我使用此代码时,我在Firebase日志中遇到此错误:TypeError:无法读取WebhookClient.handleRequest/user\u code/node\u模块/dialogflow fulfillment/src/dialogflow fulfillment.js:48:9中未定义的video/user\u code/index.js:48:9的属性“then”。“可能有什么问题?”Ambigus9-很难说,但也有一些可能性。我建议您发布一个新的StackOverflow问题,显示您正在使用的代码、出现的错误、您正在使用的环境,以及可能有助于诊断问题的任何其他信息。好的,谢谢您,囚犯,现在我可以继续我的计费部分了。。。然后我会让你知道firebase函数的日志。。。还有一件事我想问一下,我可以使用我的sql数据库进行代理响应吗?我的意思是,这适合在内联编辑器中使用sql,还是我应该使用webhook。通常我会说,作为一个新的StackOverflow问题来提问,这样其他人就可以从问答中受益。但是这个很简单——内联编辑器是一个webhook。这只是一个简单的对话框,您可以在Dialogflow内部进行编辑。如果您对此有后续问题-请发布一个新问题。@当我使用此代码时,我在Firebase日志中遇到此错误:TypeError:无法读取WebhookClient.handleRequest/user\u code/node\u模块/dialogflow fulfillment/src/dialogflow fulfillment.js:48:9中未定义的video/user\u code/index.js:48:9的属性“then”。“可能有什么问题?”Ambigus9-很难说,但也有一些可能性。我建议您发布一个新的StackOverflow问题,显示您正在使用的代码、您遇到的错误、您正在使用的环境以及可能有助于诊断问题的任何其他信息。要访问外部api,您需要有一个付费帐户,您的代码看起来正常。要访问外部api,您需要有一个付费帐户,你的代码看起来不错。