google-places-api - Google 响应超时的 Dialogflow v2 操作
问题描述
嗨,我有一个超时问题来获取 json 响应;我正在使用 google places API 来寻找最近的位置。
谁能帮我解决这个问题?谢谢。
const PlaceSearch = require("./node_modules/googleplaces/lib/NearBySearch.js");
const PlaceDetailsRequest = require("./node_modules/googleplaces/lib/PlaceDetailsRequest.js");
app.intent('Ask Location', conv => {conv.ask(new Permission({context: 'To start',permissions: 'DEVICE_PRECISE_LOCATION',}));});
app.intent('geolocation.intent', (conv,params,granted) =>{
if(granted){
var coordinates = conv.device.location.coordinates;
var location = [coordinates.latitude, coordinates.longitude];
var searchParameters = {
location: location,
name:'Store Name',
radius:10000
};
var config = {
apiKey:'#####',
outputFormat:'json'
};
var placeSearch = new PlaceSearch(config.apiKey, config.outputFormat);
var placeDetailsRequest = new PlaceDetailsRequest(config.apiKey, config.outputFormat);
placeSearch(searchParameters, function (error, search_response) {
if(search_response.status === 'OK'){
placeDetailsRequest({reference: search_response.results[0].reference}, function (error, details_response) {
conv.ask(`Your closest store is at ${details_response.result.formatted_address}.`);
});
}
});
}
});
解决方案
我通过 URL 使用对 Google API 的请求解决了这个问题;并使用承诺。
const request = require("request");
app.input("geolocation.intent", conv => {
return new Promise((resolve, reject) => {
...
request(options, (error, response, body) => {
...
if (error) {
...
reject(...);
} else {
...
resolve(...);
}
}).then(result => {
const address = result.address;
conv.ask('Your closest store is...');
}).catch(error => {
conv.close('Error in Promise');
});
});
我了解到的是,在 Dialogflow API v2 中,您需要在发出请求时使用 Promise。
推荐阅读
- python - 缺少天气预报输出数据的卷积网络
- python - 如何使用 iPython 7.x 中使用的 prompt_toolkit 实现双引号、括号、括号的自动关闭?
- c++ - 使用存储在 C++ 文件中的变量中的值
- python - 在间隔之间强制 scipy.stats.cauchy
- wordpress - 如何设置下拉菜单以在结帐 woocommerce 中选择运输区域
- django - Django 模型对 postgres 外部表的引用 (clickhouse_fdw)
- node.js - 身份验证中间件 express typescript 错误
- linux - Getting the permanent address of an ethernet device
- jsp - 在 VS CODE 中为 Java 扩展运行 Tomcat 时更新 JSP
- python - 给定列的唯一索引值的新列