Я новичок в фреймворке Луиса и бота. До сих пор я узнал, как вызвать диалог с помощью намерения, распознанного Луисом. но я не знаю, как отправить сообщение Луису в диалоговом окне. Я хочу использовать метод builder.EntityRecognizer.findEntity. Я почти уверен, что мой builder.prompts.text в результате дает мне только чистый текст, а не намерения и сущности этого текста, распознаваемые LUIS. но я не могу найти решение, как я могу отправить один запрос к luis, чтобы вернуть объект luis-json, который, как мне кажется, необходим для метода findEntity.

bot.dialog('reklamation',[
function(session){
    session.send('Gerne kümmere ich mich um Ihre Reklamation.');
    builder.Prompts.text(session, 'Bitte nennen Sie mir Ihr Anliegen.');
},
function(session, results){
    session.dialogData.reklamation = results.response;
    session.send('Ich habe Ihre Mitteilung aufgenommen.');
    builder.Prompts.text(session, 'Bitte geben Sie mir eine E-Mail-Adresse, unter der wir Ihnen den aktuellen Stand Ihrer Reklamation mitteilen können.');
},
function(session, results){
    var email = builder.EntityRecognizer.findEntity(results.entities, 'email');
    session.dialogData.email = email;
    session.send('Ok! Ich habe folgende Informationen gespeichert:');
    session.send('Reklamationsgrund: ' + session.dialogData.reklamation);
    session.send('E-Mail: ' + session.dialogData.email);
    session.endDialog('Wir werden uns schnellstmöglich mit Ihnen in Verbindung setzen. Vielen Dank für Ihre Anfrage!');
}]).triggerAction({
matches: 'reklamation'});

Я ценю любое предложение.

0
Christian Gehn 31 Июл 2017 в 11:07

1 ответ

Лучший ответ

Сущности извлекаются на первом этапе водопада. Намерение в основном определяется в матчах. Таким образом, ваш код будет запущен, если ваше приложение LUIS намерено "рекламировать"

Затем вам нужно обновить подпись первой функции, чтобы:

bot.dialog('reklamation', [
    function (session, args, next) {

Тогда вы можете использовать:

builder.EntityRecognizer.findEntity(args.intent.entities, 'email');

Если вы хотите вызвать LUIS вручную после первого шага водопада, вы можете попробовать:

builder.LuisRecognizer.recognize("your input", modelUrl, (err, intents, entities) { ... }

Взгляните на образец LUIS Node.js для дополнительной информации.

2
Ezequiel Jadib 1 Авг 2017 в 13:35
Значит, это означает, что я не могу использовать luis для распознавания нового сообщения внутри диалога? мой план следующий (пример короткого текста внутри чат-бота): я: У меня проблема! бот (Луис обнаруживает проблему и запускает диалог о проблеме): сообщите мне свой адрес электронной почты. я: мой адрес электронной почты: бот abc@gmail.com (должен распознавать abc@gmail.com как объект): хорошо! я узнал следующий почтовый адрес: abc@gmail.com. пожалуйста, опишите вашу проблему ... ... ... но для последнего пункта мне нужно признание Луиса.
 – 
Christian Gehn
31 Июл 2017 в 14:16
Вовсе нет, наверное, я неправильно понял ваш вопрос. Есть 2 варианта: 1) вызвать luis вручную 2) попробовать следующее builder.LuisRecognizer.recognize(actionModel.userInput, modelUrl, (err, intents, entities) {
 – 
Ezequiel Jadib
31 Июл 2017 в 16:11
Без проблем. Я пишу по-английски, как по-немецки. Может, я просто недостаточно разборчиво писал. но это именно то, что я хотел знать. как я могу позвонить Луису вручную? Вы мне очень помогли, пока не пришли сюда. если ты сможешь мне это объяснить, ты будешь моим героем на все времена ... по крайней мере, на 2 недели. :)
 – 
Christian Gehn
31 Июл 2017 в 16:28
Вы пробовали строку кода, которую я отправил в предыдущем комментарии?
 – 
Ezequiel Jadib
31 Июл 2017 в 16:37
1
Извини, вчера в школе не было. Я попробовал вашу строку кода сейчас, и она действительно отлично сработала. большое спасибо!!! :)
 – 
Christian Gehn
1 Авг 2017 в 10:52