javascript 中的方法承诺不会在 dialogflow 上 运行
Methods inside javascript promises not running on dialogflow
所以这是在 dialogflow v2 中使用的 yelp-fusion node.js API 的代码。
问题:
agent.add(response.jsonBody.businesses[0].name);
这应该让机器人说出企业名称实际上 运行 即使代码在那里。
根据研究,其他答案提到需要在此 javascript 承诺中使用粗箭头 =>。
但是,它已经被使用了。 .then() 中的代码不是 运行ning,除了 console.log,它执行 运行.
任何人都可以建议我可以对 javascript 承诺中的 运行 方法做什么吗?
或者其他选择?
非常感激。谢谢!
下面的客户端是yelpAPI客户端。
agent 是 dialogflow 中的一个 webhookclient。 agent.add() 在以下代码之外执行时有效。
client.search({
term:'Four Barrel Coffee',
location: 'san francisco, ca'
}).then(response => {
//res = response.jsonBody.businesses[0].name; //*not assigned!
console.log(response.jsonBody.businesses[0].name);
agent.add(response.jsonBody.businesses[0].name); //*nothing!
}).catch(e => {
console.log(e);
});
你已经成功了一半。与其说是使用粗箭头,不如说是你在处理异步函数(client.search
调用),当你将异步函数与 dialogflow-fulfillment 库一起使用时,你需要使用承诺。
具体来说——您需要 return 一个 Promise,以便调用函数知道它必须等待所有 then()
子句按顺序完成发送回复。
您没有显示整个功能,但您可以通过添加一些 return
语句来实现。可能是这样的:
return client.search({
term:'Four Barrel Coffee',
location: 'san francisco, ca'
}).then(response => {
return agent.add(response.jsonBody.businesses[0].name);
}).catch(e => {
console.log(e);
return Promise.reject( e );
});
所以这是在 dialogflow v2 中使用的 yelp-fusion node.js API 的代码。
问题:
agent.add(response.jsonBody.businesses[0].name);
这应该让机器人说出企业名称实际上 运行 即使代码在那里。
根据研究,其他答案提到需要在此 javascript 承诺中使用粗箭头 =>。
但是,它已经被使用了。 .then() 中的代码不是 运行ning,除了 console.log,它执行 运行.
任何人都可以建议我可以对 javascript 承诺中的 运行 方法做什么吗? 或者其他选择? 非常感激。谢谢!
下面的客户端是yelpAPI客户端。
agent 是 dialogflow 中的一个 webhookclient。 agent.add() 在以下代码之外执行时有效。
client.search({
term:'Four Barrel Coffee',
location: 'san francisco, ca'
}).then(response => {
//res = response.jsonBody.businesses[0].name; //*not assigned!
console.log(response.jsonBody.businesses[0].name);
agent.add(response.jsonBody.businesses[0].name); //*nothing!
}).catch(e => {
console.log(e);
});
你已经成功了一半。与其说是使用粗箭头,不如说是你在处理异步函数(client.search
调用),当你将异步函数与 dialogflow-fulfillment 库一起使用时,你需要使用承诺。
具体来说——您需要 return 一个 Promise,以便调用函数知道它必须等待所有 then()
子句按顺序完成发送回复。
您没有显示整个功能,但您可以通过添加一些 return
语句来实现。可能是这样的:
return client.search({
term:'Four Barrel Coffee',
location: 'san francisco, ca'
}).then(response => {
return agent.add(response.jsonBody.businesses[0].name);
}).catch(e => {
console.log(e);
return Promise.reject( e );
});