1

ご覧のとおり、SaveLocation からのコンソール ログ - AskLocationPermissionでは、 location_typeが に 保存されませんconv.dataconv.dataユーザーストレージはうまく機能しますが、 とを正しく使用したいと思いますconv.user.storage会話の例で、パラメーターが満たされていることを確認できますが、に保存されません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
};

このインテントに対する会話の流れをどのように想像したか

4

1 に答える 1