Я использую встроенный редактор DialogFlow, и мне нужно иметь возможность предоставлять разные ответы в зависимости от конкретных значений параметра в последующем намерении.
Через пользовательский интерфейс я могу создать последующее намерение и сослаться на сущность в предыдущем намерении, но я не могу настроить логику, основанную на конкретных значениях этой сущности, поэтому мне нужно иметь возможность сделать это через онлайн-редактор.
Может ли кто-нибудь показать мне пример использования сущности в рамках последующих действий через онлайн-редактор?
Пока что я могу вывести контекст внутри функции (функция 1 ниже), но я не могу использовать сущность, предоставленную пользователем в функции 1, в функции 2, которая использует последующее намерение ,
//function 1:
function fruit(agent) {
const fruit = agent.parameters.FruitValue
agent.add(`what fruit do you like`)
agent.setContext({ name: 'cherries-followup', lifespan: 2, parameters: {FruitValue: fruit}})}
//function 2:
function details(agent) {
const context = agent.getContext('cherries-followup');
const fruit = context.parameters.FruitValue;
agent.add(`Good to know you like ${fruit}!`);
}
intentMap.set('CherriesIntent', fruit);
intentMap.set('CherriesDetailIntent', details);
Изображение того, что я сделал через пользовательский интерфейс, которое я хотел бы воспроизвести в онлайн-редакторе
Обновление (решено):
Теперь я переписал код, чтобы он соответствовал сообщению DF (чтобы его было легче отлаживать: https://dialogflow.com/docs/getting-started/integrate-services)
function languageHandler(agent) {
const language_spoken = agent.parameters.language;
{agent.add(`Wow! Where did you learn ${language_spoken} and for how long?`);
agent.setContext({
name: 'languages-followup',
lifespan: 2,
parameters:{languages: language_spoken}
});
}
}
function languageCustomHandler(agent) {
const context = agent.getContext('languages-followup');
//const allContexts = agent.contexts; // [{ name: 'languages-followup', ...}]
const language_spoken = context.parameters.language;
const country = agent.parameters.country;
const duration = agent.parameters.duration;
agent.add(`Wow! So cool you learned ${language_spoken} in ${country} for about ${duration.amount} ${duration.unit}!`);
}
intentMap.set('Language', languageHandler);
intentMap.set('Language - custom', languageCustomHandler);
Теперь это работает, убедившись, что для параметра продолжительности в пользовательском интерфейсе либо установлено значение duration.original, либо после добавления .amount и .unit к длительности (в противном случае вы получите: «Ух ты! В Китае около [объект объекта]! »Вместо« Ух ты! Так здорово, что ты выучил немецкий в Китае около 1 месяца!
PARAMETER VALUE
country China
duration {"amount":1,"unit":"mo"}