Как запустить Luis Recogniser на ChoicePrompt - PullRequest
0 голосов
/ 24 октября 2019

У меня есть ChoicePrompt с двумя вариантами.

[    {
        value: 'credit',
        synonyms: ['titanium', 'world', 'credit', 'mastercard'],
    },
    {
        value: 'visaPrepaid',
        synonyms: ['platinium', 'visa', 'prepaid', 'prepaid card', 'visa prepaid']
    },]

Пользователь может либо щелкнуть по предложенному действию, либо напрямую ввести текстовое сообщение «Я хочу кредитную карту»

Я хочу запустить распознавание запроса Luis для этого текста и извлечь, хотел ли пользователь кредит или карту предоплаты. Тем не менее, я не знаю, как взаимодействовать с этой строкой.

Я использую WaterfallDialog, чтобы показать приглашение

1 Ответ

0 голосов
/ 24 октября 2019

Существует несколько различных способов создания ChoicePrompt. Я использую ChoiceFactory.forChannel() для этого. Затем я использую imBack, который возвращает выбор в качестве пользовательского ввода текста. В качестве альтернативы, вы можете сделать postBack, который будет действовать как триггер, и захватить отправленное значение.

В моем случае, поскольку выбор возвращается как ввод текста пользователем, я беру текстзначение от деятельности и отправить это в LUIS. Я сопоставляю намерение Greeting, которое в случае успеха возвращает найденное намерение.

Надежда на помощь!

async choiceStep ( stepContext ) {
  const stepResult = stepContext.context.activity.text;

  if ( stepResult ) {
    const message = ChoiceFactory.forChannel(
      stepContext.context, [
        { value: 'Hello', action: { type: 'imBack', title: 'Hello', value: 'Hello' } },
        { value: 'What is the date?', action: { type: 'imBack', title: 'What is the date?', value: 'What is the date?' } }
      ], `Which do you choose?`
    );
    await stepContext.context.sendActivity( message );
  }
  return { status: DialogTurnStatus.waiting };
}

  async choiceLuisStep ( stepContext ) {
  if ( stepContext.context.activity.text ) {
    const stepResults = stepContext.context.activity.text;
    await stepContext.context.sendActivity( `You said: ${ stepResults }` );

    const recognizerResult = await this.recognizer.recognize( stepContext.context );
    let intent = await LuisRecognizer.topIntent( recognizerResult );

    if ( intent === 'Greeting' ) {
      await stepContext.context.sendActivity( `Luis recognized: ${ intent }` );
      return stepContext.next();
    } else {
      await stepContext.context.sendActivity( 'No LUIS intent was found.' );
      return stepContext.next();
    }
  } else {
    await stepContext.context.sendActivity( 'Thanks for visiting!' );
    return stepContext.next();
  }
}

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...