Я использую выполнение диалогового потока для реализации серверной части моего сервиса на основе диалогового потока. Есть момент, когда я использую метод agent.setFollowupEvent(targetIntent)
, для targetIntent
требуется соответствие контекста, назовем его targetContext
.
Я не могу точно сказать, когда он перестал работать (неделю? месяц, может быть?), но он работал и сейчас не работает (и я не думаю, что изменил что-то, что могло бы это объяснить). Выполнение targetIntent
никогда не вызывается, и я вижу в консоли диалогового потока, что это потому, что запрос, инициированный setFollowupEvent
, не соответствует никакому намерению.
Если я уберу требование targetContext
из targetIntent
, это сработает.
Я думаю, что правильно устанавливаю контекст:
agent.context.set(targetContext, null, null);
agent.setFollowupEvent(targetIntent);
Проверяя тело ответа, которое выполнение диалогового потока отправляет в диалоговый поток, я вижу:
{
"outputContexts": [{ "name": "projects/<myprojectid>/agent/sessions/<mysessionid>/contexts/<targetContext>" }],
"followupEventInput": { "name": "<targetIntent>", "languageCode": "it" }
}
Контекст есть, и я думаю, правильный. Любые подсказки? Единственное, о чем я могу думать, это то, что мы изменили тип агента с бесплатного на корпоративный.
Очевидно, я нашел решение сразу после того, как задал вопрос...
Проблема была в сроке жизни контекста, я его не ставил, теперь работает с:
|
V
agent.context.set(targetContext, 1, null);
agent.setFollowupEvent(targetIntent);
Таким образом, вывод становится:
{
"outputContexts": [{ "name": "projects/<myprojectid>/agent/sessions/<mysessionid>/contexts/<targetContext>", "lifespanCount": 1 }],
"followupEventInput": { "name": "<targetIntent>", "languageCode": "it" }
}
Тем не менее, я совершенно уверен, что это работало раньше, может быть, не устанавливая срок службы по умолчанию на 1?