Как выйти из разговора в DialogFlow Fullfilment для действия

У меня есть действие, которое представляет собой простую игру в слова, и по завершении игры я должен выйти из разговора. Я хочу, чтобы действие поддерживало Google Assistant и устройства на основе громкоговорителей (мобильный телефон и т. Д.), Поэтому я обрабатываю намерение в общем виде.

const {WebhookClient} = require('dialogflow-fulfillment');
...
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
  ...
  function answerIntent(agent) {
     if (gameShouldEnd) {
       agent.end("Your score is 3/5. Cheers! GoodBye!");
     }
  }
  ...
}

Это приводит к ошибке журнала MalformedResponse: 'final_response' must be set

Я тоже попробовал conv api, и это привело к той же ошибке.

const {WebhookClient} = require('dialogflow-fulfillment');
...
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
  ...
  function answerIntent(agent) {
    if (gameShouldEnd) {
      let conv = agent.conv();
      conv.tell("Your score is 3/5. Cheers! GoodBye!");
      agent.add(conv);
    }
  }
  ...
}

Пожалуйста, подскажите, как закрыть Микрофон, когда игра заканчивается и все еще отправляет ответ.


person SanthoshN    schedule 02.11.2018    source источник


Ответы (3)


Похоже, существует проблема с версией 0.5.0 пакета dialogflow-fullfillment в соответствии с зарегистрированной проблемой https://github.com/dialogflow/dialogflow-fulfillment-nodejs/issues/149

Я попытался выполнить обновление до 0.6.0, в котором есть критические изменения, которые решили текущий вопрос, который я опубликовал, но создали проблемы, связанные с контекстом.

person SanthoshN    schedule 02.11.2018

Вы пробовали метод close:

  conv.close("Your score is 3/5. Cheers! GoodBye!");
person quent    schedule 02.11.2018
comment
Это правильно, но у меня возникла проблема, потому что версия dialogflow-fullfilment версии, которая у меня была - person SanthoshN; 03.11.2018

пожалуйста, проверьте, является ли спам вашего намерения 1. После этого вы можете использовать следующую команду:

agent.end ("пока");

person Gustavo Luna    schedule 08.10.2019
comment
Как лучше всего продлить срок жизни намерения? Я попытался выполнить agent.clearOutgoingContexts () до того, как вызвал agent.end (), но он все еще оставляет микрофон открытым для ответа. - person Jake Hall; 06.04.2020