Невозможно прочитать контекст при выполнении диалогового окна (внезапно не определено)

Мы создали агент Dialogflow, используя облачные функции Google в качестве веб-перехватчика, который исправно работал до вчерашнего вечера. В то время я экспортировал агент, а затем повторно импортировал его, и какое-то время он работал.

Что перестало работать, так это то, что agent.context.get('...'); (также agent.getContext('...')) действительно возвращает undefined, даже если контекст установлен в соответствии с пользовательским интерфейсом и необработанным ответом API.

В качестве примера у меня есть намерение, в котором есть требуемый слот shop, включен веб-перехватчик для заполнения слота. Когда я тестирую агент, намерение с именем info совпадает правильно, а также, похоже, присутствует контекст info_dialog_params_store:

Намерение

А вот часть контекста вывода согласно необработанному ответу API:

"outputContexts": [
      {
        "name": "projects/MYAGENTNAME/agent/sessions/0b753e8e-b377-587b-3db6-3c8dc898879b/contexts/info_dialog_params_store",
        "lifespanCount": 1,
        "parameters": {
          "store": "",
          "store.original": "",
          "kpi": "counts",
          "date_or_period": "",
          "kpi.original": "trafico",
          "date_or_period.original": ""
        }
      }

В веб-перехватчике я правильно сопоставил намерение с функцией js:

let intentMap = new Map();
intentMap.set('info', info);
agent.handleRequest(intentMap);

И первая строка функции info выглядит так:

function info(agent) {
    store_context = agent.context.get('info_dialog_params_store');
}

Что возвращается

TypeError: Cannot read property 'get' of undefined
    at info (/user_code/index.js:207:36)
    at WebhookClient.handleRequest (/user_code/node_modules/dialogflow-fulfillment/src/dialogflow-fulfillment.js:303:44)
    at exports.dialogflowFirebaseFulfillment.functions.https.onRequest (/user_code/index.js:382:9)
    at cloudFunction (/user_code/node_modules/firebase-functions/lib/providers/https.js:57:9)
    at /var/tmp/worker/worker.js:762:7
    at /var/tmp/worker/worker.js:745:11
    at _combinedTickCallback (internal/process/next_tick.js:73:7)
    at process._tickDomainCallback (internal/process/next_tick.js:128:9)

Я совершенно уверен, что не менял ничего, что могло бы повлиять на правильное функционирование агента, кроме некоторого рефакторинга.

Я также пробовал активировать и деактивировать бета-функции, поскольку читал, что могут быть проблемы со средой, но это ничего не изменило.

Кто-нибудь знает, в каком направлении я могу продолжить расследование?


person phngs    schedule 07.03.2019    source источник


Ответы (3)


У меня была такая же проблема, я решил ее, обновив выполнение диалога в package.json:

от "диалогового-выполнения": "^ 0.5.0" до "диалогового-выполнения": "^ 0.6.0"

person Gian Maria Pandolfi    schedule 06.05.2019
comment
Спасибо за совет. В то время эта версия не была доступна, но, возможно, они исправили что-то, чтобы предотвратить появление этой ошибки. - person phngs; 08.05.2019

Я решил проблему, отключив бета-функции. введите здесь описание изображения

person Илья Хоришко    schedule 19.09.2020

На самом деле я мог это исправить, выполнив следующие «волшебные» шаги:

  • Скопировал мою исходную функцию в текстовый файл
  • Скопируйте и вставьте исходный пример кода в редактор кода выполнения графического интерфейса (Код на GitHub)
  • Развернул функцию
  • Создал минимальный пример для моей функции info:
function info(agent) {
    store_context = agent.context.get('info_dialog_params_store');
}
  • Протестировал, и это сработало
  • Скопировал мой исходный код
  • Все снова было хорошо
person phngs    schedule 08.03.2019