Как использовать параметр из последующего намерения в Inline Editor в DialogFlow - PullRequest
0 голосов
/ 17 января 2019

Я использую встроенный редактор 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);

Изображение того, что я сделал через пользовательский интерфейс, которое я хотел бы воспроизвести в онлайн-редакторе Picture of what I did via the UI which i would like to replicate in the Online Editor


Обновление (решено):

Теперь я переписал код, чтобы он соответствовал сообщению 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"}
...