Почему мои намерения повторяются, когда пользователь ответил на них один раз?Пользователь должен ответить на него снова, и только после этого последует намерение - PullRequest
0 голосов
/ 21 апреля 2019

В настоящее время я использую webhook для вызова каждого намерения после того, как пользователь откликнулся на поток моих намерений.Однако я сталкиваюсь с некоторыми проблемами, когда пользователю придется повторить свой ответ дважды, прежде чем он перейдет к следующему намерению.Я не делаю ничего сложного, мои процессы похожи на такие

1) Создать намерение последующего действия (это автоматически свяжет предыдущее намерение) намерения

2) создать @sys.any для пользователя, чтобы ответить @sys.any

3) в режиме обучения: я просто набираю 'user input here' и связываю его со значением training phrases

4) включить webhook webhook

Независимо от всего этого, у меня есть некоторые намерения, которые пользователь должен будет повторить дважды.У меня нет никаких других проблем с предыдущими намерениями, только два из них. пример симулятора

Я попытался удалить намерение и создать новое продолжение, но проблема все еще сохраняется.

// нет проблем с этим намерением, пользователь ответит один раз, и он перейдет к следующему

 app.intent('questionrespond', (conv, params) => {
  conv.data.positivethinking = params.questionrespond;
  conv.ask(`<speak> <voice gender ="male" variant= "1"> oh <break 
  time="0.5s"/>  so what you are trying to say is <break 
  time="0.5s"/> by thinking of ${conv.data.positivethinking} may 
  <break time="0.3s"/> and may not increase positive thinking for 
  you <break time="0.7s"/> <p> okay <break time="0.7s"/> <s> I am 
  curious <break time="0.4s"/> what concerns you most about 
  yourself? <break time="0.7s"/> </s> </p> </voice> </speak>`);
  });

// не уверен, почему пользователь должен повторить ответ дважды, прежде чем перейти к следующему намерению

app.intent('torespondquestion', (conv, params) => {
 conv.data.toRespondQuestion = params.torespondhere;
 conv.ask(`<speak> <voice gender ="male" variant= "1"> <p> <s> so you said ${conv.data.toRespondQuestion} </s> What experience have you had in that instances? <break time="0.4s"/> <break time="0.4s"/> </p> </voice> </speak>`);
});

// не уверен, почему пользователь должен повторить ответ дважды перед переходом к следующему намерению

app.intent('torespondexperiences', (conv, params) => {
 conv.data.toResondExperiences = params.experienerespond;
 conv.ask(`<speak> <voice gender ="male" variant= "1"> ok <break time="0.8"/> ${conv.data.toResondExperiences} how difficult was it for you to go through it? <break time="0.8"/> </voice> </speak>`);
});

// не уверен, почему пользователь должен повторить ответ дважды перед переходом к следующему намерению

app.intent('ihearyou', (conv, params) => {
 conv.data.hearingYou = params.ihearu;
 conv.ask(`<speak> <voice gender ="male" variant= "1"> i hear you <break time="0.8"/> listening to you describe about your experiences <break time="0.8"/> it sounds like you went through quite a journey <break time="0.8"/> in what ways could you handle the situation differently? </voice> </speak>`);
});

1 Ответ

0 голосов
/ 23 апреля 2019

Если все ваши намерения используют @sys.any, я думаю, что использование нескольких вложенных последующих намерений может создать ненужную сложность в вашем проекте.

Вместо этого вы можете захотеть создать единственное намерение принять @sys.any и создать переменную сеанса conv.data.state. Затем ваш обработчик намерений проверит текущее значение conv.data.state и ответит соответствующим образом, а также установит состояние на следующее значение.

...