#google-cloud-platform #dialogflow-es #dialogflow-es-fulfillment
#google-cloud-platform #dialogflow-es #dialogflow-es-выполнение
Вопрос:
Мы создали агент Dialogflow, используя облачные функции Google в качестве webhook, который работал должным образом до вчерашнего вечера. В то время я экспортировал агент и повторно импортировал его позже, и это работало некоторое время.
Что перестало работать, так это то, что agent.context.get('...');
(также agent.getContext('...')
) возвращает undefined
, даже если контекст задан в соответствии с пользовательским интерфейсом и необработанным ответом API.
В качестве примера у меня есть намерение, в котором есть требуемый слот shop
, включен webhook для заполнения слота. Когда я тестирую агент, указанное намерение 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": ""
}
}
В webhook я правильно сопоставил намерение с функцией 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)
Я совершенно уверен, что я ничего не изменил, что могло бы повлиять на правильное функционирование agent, за исключением некоторого рефакторинга.
Я также попробовал активировать бета-функции, а также деактивировать, поскольку прочитал, что могут быть проблемы со средами, но это ничего не изменило.
Кто-нибудь знает, в каком направлении я могу продолжить расследование?
Ответ №1:
У меня была такая же проблема, я решил ее, обновив dialogflow-выполнение в package.json:
от «dialogflow-fulfillment»: «^ 0.5.0» до «dialogflow-fulfillment»: «^ 0.6.0»
Комментарии:
1. Спасибо за совет. В то время эта версия была недоступна, но, возможно, они исправили что-то, чтобы предотвратить возникновение этой ошибки.
Ответ №2:
Я решил проблему, отключив «Бета-функции», введите описание изображения здесь
Ответ №3:
На самом деле я мог бы исправить это следующими «волшебными» шагами:
- Скопировал мою исходную функцию в текстовый файл
- Скопируйте и вставьте исходный пример кода в редактор кода выполнения GUI (код на GitHub)
- Развернул функцию
- Создал минимальный пример для моей
info
функции:
function info(agent) {
store_context = agent.context.get('info_dialog_params_store');
}
- Протестировал это, и это сработало
- Скопировал обратно мой исходный код
- Все снова было в порядке