Как проверить приложение диалогового потока в консоли, когда бэкэнд использует обещания? - PullRequest
0 голосов
/ 06 сентября 2018

Бэкэнд для моего приложения диалогового потока использует action-on-google sdk.И это делает запрос на другой сервер.Итак, мне пришлось вернуть обещания.Он отлично работает с помощником Google, но диалоговая консоль не может справиться с этим.Aws-sam-cli тоже не может этого сделать (мой бэкэнд - это лямбда-функция aws).

-> Как добиться того, чтобы я мог тестировать свою функцию локально и в консоли диалогового потока, не разрушая ее?для помощника Google?

Пример:

return myAsyncTask(conv).then(() => {
    conv.ask(new SimpleResponse('Hello World');
});

В консоли диалогового потока поле ответа содержит «недоступно».Ответ таков:

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "MyText",
              "displayText": "MyDisplayText"
            }
          }
        ]
      },
      "userStorage": "{\"data\":{}}"
    }
  },
  "outputContexts": [
    ...
  ]
}

Поле выполнения не заполнено.Это тоже может быть ошибкой.Но я не знаю, как его заполнить.

В aws-cli я получаю эту ошибку:

(узел: 1) UnhandledPromiseRejectionWarning: необработанное отклонение обещания (идентификатор отклонения:1): TypeError: Невозможно преобразовать неопределенное или нулевое значение в объект

, а ответ равен нулю.

1 Ответ

0 голосов
/ 06 сентября 2018

Прежде всего - не имеет значения, используете ли вы Promise или нет. На самом деле, вы должны использовать их, так что вы на шаг впереди.

Поскольку он работает с симулятором действий в Google, это означает, что ваш код может отправлять обратно результаты, которые являются действительными и имеют смысл.

Отчасти проблема заключается в том, что отправляемая информация относится только к помощнику Google, а не к тестеру Dialogflow. Поэтому неудивительно, что вы отправляете обратно контент, специфичный для Assistant, но ничего такого, с чем не может справиться универсальный инструмент тестирования Dialogflow. Это, вероятно, означает, что вы используете библиотеку actions-on-google node.js, и это не проблема.

Ошибка с aws-cli говорит о том, что вы не отправляете действительный запрос в ходе тестирования, поэтому ваш код (или, что более вероятно, библиотека actions-on-google) срабатывает из-за плохо отформатированного вход. Чтобы отладить это, проверьте журналы aws-lambda, чтобы увидеть, какие ошибки вызываются, и, возможно, также зарегистрируйте запрос, который вы получаете в функции.

...