如您所见:Console Log from SaveLocation - AskLocationPermission
不会将 location_type 保存到conv.data
。虽然用户存储效果很好,但我想正确使用conv.data
和conv.user.storage
。您可以在Example of conversation中看到已满足参数,但没有将其保存到conv.data
中。
应该如何工作是当用户说要将此位置保存为他的住所或工作时,如果住所或工作得到满足,则应调查conv.user.storage
。如果没有请求允许并添加他的位置,否则它应该询问他是否确定要覆盖它。
app.intent('SaveLocation - AskLocationPermission', (conv, {location_type}) => {
if (storage.isLocationAlreadySaved(conv, location_type)) {
return fun.talkAsk(conv, i18n.__("LOCATIONS.SAVE_OVERRIDE", location_type))
}
storage.setSaveLocationType(conv, location_type);
console.log("SaveLocation - AskLocationPermission");
console.log(storage.getLocationType(conv));
return conv.ask(new Permission({
context: i18n.__("PERMISSION_LOCATION.SAVE_LOCATION", location_type),
permissions:
['DEVICE_PRECISE_LOCATION'],
}));
});
app.intent('SaveLocation - PermissionHandler', (conv, params, permissionGranted) => {
if (!permissionGranted) return fun.talkAsk(conv, i18n.__("ERROR.PERMISSION_NOT_GRANTED", storage.getLocationType(conv)))
storage.setUserLocation(conv);
storage.saveLocation(conv);
return fun.talkAsk(conv, i18n.__("LOCATIONS.SAVE_COMPLETE", storage.getLocationType(conv)))
});
app.intent('SaveLocation - Yes', (conv) => {
console.log("SaveLocation - Yes");
console.log(storage.getLocationType(conv));
return conv.ask(new Permission({
context: i18n.__("PERMISSION_LOCATION.SAVE_LOCATION", storage.getLocationType(conv)),
permissions:
['DEVICE_PRECISE_LOCATION'],
}));
});
app.intent('SaveLocation - No', (conv) => {
return fun.talkAsk(conv, i18n.__("LOCATIONS.SAVE_DENIED", storage.getLocationType(conv)))
});
存储文件:
let setSaveLocationType = function (conv, locationType) {
conv.data.locationType = locationType;
};
let getLocationType = function (conv) {
return conv.data.locationType;
};
let isLocationAlreadySaved = function (conv, locationType) {
console.log("isLocationAlreadySaved");
if (locationType === "work") {
console.log(getWorkLocationLat(conv))
return getWorkLocationLat(conv) !== 0.0
} else if (locationType === "home") {
console.log(getHomeLocationLat(conv));
return getHomeLocationLat(conv) !== 0.0
}
return false
};
let saveLocation = function (conv) {
let locationType = getLocationType(conv);
if (locationType === "work") {
conv.user.storage.workLocationLatitude = getUserLatitude(conv);
conv.user.storage.workLocationLongitude = getUserLongitude(conv);
} else if (locationType === "home") {
conv.user.storage.homeLocationLatitude = getUserLatitude(conv);
conv.user.storage.homeLocationLongitude = getUserLongitude(conv);
}
};
let getWorkLocationLat = function (conv) {
return conv.user.storage.workLocationLatitude
};
let getWorkLocationLng = function (conv) {
return conv.user.storage.workLocationLongitude
};
let getHomeLocationLat = function (conv) {
return conv.user.storage.homeLocationLatitude
};
let getHomeLocationLng = function (conv) {
return conv.user.storage.homeLocationLongitude
};
答案 0 :(得分:0)
看起来您实际上没有定义“ setUserLocation”函数,但是您尝试从“ SaveLocation-PermissionHandler”意图处理程序中调用它。