Как перейти к намерению, если запрос на разрешение отклонен - PullRequest
0 голосов
/ 07 июля 2019

У меня есть действие, которое интегрируется с Dialogflow, который как часть диалога запрашивает доступ к местоположению пользователя. Dialgoflow screenshot

Это выполняется через webhook:

app.intent('actions_intent_PERMISSION', async (conv, params, permissionGranted) => {
    if (!permissionGranted) {
        app.intent('actions_intent_PERMISSION - no', (conv, params) => {
            conv.ask('sad face, you said no to my permission request!');
    });
    // conv.ask(`Ok, no worries. I'll have to figure out how to get your postcode. follow-up intent I suppose`);
    } else {
        conv.data.postcode = conv.device.location.zipCode;
        conv.ask(`Ok great - please give me a minute, I have to get data from a few different places.`);

     //use postcode to make some other API calls
    }
});

Все хорошо, когда пользователь дает разрешение, но когда он не дает разрешения, я хотел бы передать намерение, которое запрашивает их местоположение вручную («каков ваш почтовый индекс / почтовый индекс?»).

Согласно скриншоту, я пытался создать намерение actions_intent_PERMISSION, которое называется actions_intent_PERMISSION - no, но это приводит к сбою приложения.

Как лучше всего передать разговор другому человеку, если значение permissionGranted равно false?

1 Ответ

1 голос
/ 08 июля 2019

Ваш вопрос не совсем понятен, как вы его задали. Intents представляют то, что пользователь сказал , а не то, что вы делаете с ним - это то, что ваш webhook делает в Intent Handler. Ничто (технически) не мешает вам отвечать пользователю, запрашивающему его почтовый индекс, просто отвечая по-другому.

Если вы хотите, чтобы пользователи могли запускать некоторые Интенты, если у них есть разрешения, и другие Интенты, если у них их нет, вы можете установить различные Контекст для каждого. Затем вы должны настроить некоторые Intents так, чтобы они запускались только в том случае, если был установлен «разрешенный» контекст, а другие - только в том случае, если был установлен «не разрешенный» контекст.

Однако у вас есть нетехническая проблема для рассмотрения. Если они не дают вам разрешение узнать свое местоположение, почему они сообщают вам свое местоположение? Также вероятно, что рецензенты отклонят его, заявив, что вы должны получать информацию о местоположении через предоставленный API.

...