Как построить выполнение для контекста? - PullRequest
0 голосов
/ 21 января 2019

Пытался следовать примеру кода, как это

app.intent('intent1', (conv) => {
  const lifespan = 5;
  const contextParameters = {
    color: 'red',
  };
  conv.contexts.set('context1', lifespan, contextParameters);
  // ...
});

app.intent('intent2', (conv) => {
  const context1 = conv.contexts.get('context1');
  const contextParameters = context1.parameters;
  // ...
});

app.intent('intent3', (conv) => {
  conv.contexts.delete('context1');
  // ...
});

Вот мой код ...

app.intent('ask_recipe_intent', (conv, {name}) => {
  const term = name.toLowerCase();
  const termRef = collectionRef.doc(term);
  //Set the context to store the parameter information
  const lifespan =5;
  const contextParameters = {
    name: name,
  };
  conv.contexts.set('name', 5, name);

  return termRef.get()
    .then((snapshot) => {
      const {city, name, count} = snapshot.data();
      return termRef.update({count: count+1})
        .then(() => {
          conv.ask(`Here you go, ${name}, ${city}. ` +
            `do you want to check all the Ingredients needed?`);
        });
    }).catch((e) => {
      console.log('error:', e);
      conv.close('Sorry, I did not catch you, can you say again or try another word.');
    });
});

app.intent('yes_list_ingredient_intent', conv => {
  const termRef = conv.contexts.get(name);
  const contextParameters = name.parameters;
  conv.ask(`The ingredients of ${name} includes ${ingredientall}. ` +
            `do you want to add to shopping list or go to steps of cooking?`);
});

app.intent('no_steps2cook_intent', conv => {
  conv.contexts.delete(name);
  conv.ask(`The steps to cook for ${name} as following ${stepsall}. ` +
            `enjoy cooking`);
});

Но получил "Ошибка Webhook (206) Malformed Response"

Что не так с моим кодом и где я могу получить больше примеров для изучения, кроме викторины преобразователя температурыкоторая кажется более старой версией.

1 Ответ

0 голосов
/ 22 января 2019

У вас есть несколько ссылок на переменную name в вашем коде, например

const termRef = conv.contexts.get(name);

, но вы нигде не определяете, что такое name.

Когда вы устанавливаете контекствы устанавливаете его в контекст, который буквально называется «имя», но вы пытаетесь установить его с параметрами, которые хранятся в переменной name, и это не определено:

conv.contexts.set('name', 5, name);

Я предполагаю, что последний должен быть чем-то вроде

conv.contexts.set('name', 5, contextParameters);

, так как вы определяете contextParameters, но никогда не используете их.И что вы хотите назвать свой контекст «имя», так как это имя вы используете для имени в этом вызове.

...