Как интегрировать Луиса в конструктор ботов

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

Я хотел бы сделать следующие вещи:

  1. Пользователь вводит фразу, которая интерпретируется с помощью Luis.
  2. Если во фразе указаны не все сущности, построитель форм заполнит пробелы.

Как мне это сделать? Есть ли учебник? Я вижу, как люди говорят о LuisDialogs, но я просто не знаю, с чего начать.


person Aldentev    schedule 26.04.2016    source источник
comment
Я обнаружил, что это хорошая статья: c-sharpcorner.com/article/   -  person PhuocLe    schedule 18.10.2016


Ответы (1)


Короче:

  • Сначала вам нужно создать учетную запись на luis.ai.
  • Затем вам необходимо следовать этой документации: http://docs.botframework.com/sdkreference/csharp/dialogs.html (Начинается с классических диалогов, но заканчивается интеграцией Luis.)

Вот несколько шагов (но вы обязательно должны следовать руководству, которое я дал):

По сути, это класс, который наследует LuisDialog<object>, и вам нужно поместить атрибут поверх него с вашим идентификатором и секретом Luis.

[LuisModel("c413b2ef-382c-45bd-8ff0-f76d60e2a821", "6d0966209c6e4f6b835ce34492f3e6d9")]
[Serializable]
public class SimpleAlarmDialog : LuisDialog<object>
{ [...]

Затем вы добавляете метод в свой класс и украшаете его атрибутом LuisIntent(...).

 [LuisIntent("builtin.intent.alarm.turn_off_alarm")]
 public async Task TurnOffAlarm(IDialogContext context, LuisResult result)
 { [...]

Внутри метода вы можете искать, была ли найдена сущность, используя такой код:

EntityRecommendation title;
if (result.TryFindEntity(Entity_Alarm_Title, out title))
{
    what = title.Entity;
}
else
{
    what = DefaultAlarmWhat;
}

Наконец, чтобы начать диалог, вы должны вызвать это внутри вашего контроллера:

public async Task<Message> Post([FromBody]Message message)
    {
        if (message.Type == "Message")
        {
            // return our reply to the user
            return await Conversation.SendAsync(message, () => new EchoDialog());
        }
        else
        {
            return HandleSystemMessage(message);
        }
    }
person Etienne Margraff    schedule 02.05.2016
comment
Благодарю вас! Я посмотрел на пример PizzaBot, и мне удалось заставить мой код работать :-) - person Aldentev; 02.05.2016
comment
Идеальный! можете ли вы пометить ответ как полезный, чтобы другие люди, у которых есть такой же вопрос, могли положиться на него? :) - person Etienne Margraff; 02.05.2016
comment
Если объект НЕ указан, как я могу предложить пользователю предоставить только информацию об объекте на втором этапе? Нужно ли мне обновлять модель Луиса, чтобы иметь возможность взять всего 1 слово в качестве объекта и связать его с намерением? - person Vikram; 22.09.2016