Проблема с пользовательскими объектами Oscova

#c# #unity3d #bots #entity #chatbot

#c# #unity3d #боты #сущность #чат-бот

Вопрос:

привет, я работаю над oscova для создания бота-помощника.Я следовал этому руководству, и все было отлично, но режим шаблона не работал, и я хочу захватить ввод «поиск xyz» или «открыть xyz». Все, что после поиска или открытия я хочу захватить, чтобы я мог искать его в Интернете или открывать это приложение.Я создал объекты с командой name и дал в ней поиск и открытие.Затем, чтобы захватить остальные входные данные, я создал пользовательский объект с регулярным выражением, который фиксирует все после команды. Но теперь, когда я спрашиваю «как дела», он тоже фиксирует это и отправляет его в мою функцию intent .Посмотрите мой код и помогите, пожалуйста

     public class searchEntity : IEntity
{
    public searchEntity() { Type = "query"; }
    public string Type { get; set; }
    public string Value { get; set; }
    public int Index { get; set; }
}
public class queryRecognizer : IEntityRecognizer
{
    public string EntityType => "query";

    public EntityCollection Parse(Request request)
    {
        var regex = new Regex(@"s[|a-zA-Z|s]*");
        var entities = new EntityCollection();
        foreach (Match match in regex.Matches(request.NormalizedText))
        {

            var entity = new searchEntity
            {
                Value = match.Value,
                Index = match.Index
            };
            Debug.Log(entity.Value);
            entities.Add(entity);
        }

        return entities;
    }
}
 

### Здесь я использую эти объекты###

 public class BotFunctions : Dialog
{
   
    [Expression(" {open} @query")]
    [Expression("{youtube} @query ")]
    [Expression("{search} @query ")]
    [Expression("please {open} @query")]
    [Expression("please{youtube} @query ")]
    [Expression("please{search} @query ")]
    [Expression("{youtube} @query please ")]
    [Expression("{open} @query please")]
    [Expression("{search} @query please ")]
    [Expression("{ar gallery}")]
    [Expression("{ar cinema}")]
    [Expression("{screenshot}")]
    [Entity("command")]
    [Entity("query")]

    public void userfunction(Context context, Result result)
    {
     
        var searchQuery = result.Entities.OfType("command");
        var funtionQuery = result.Entities.OfType("query");
        
        string word1;
        if (searchQuery.Value.ToLower() == "open")
        {
            result.SendResponse("Opening app");
            word1 = funtionQuery.Value.Trim();
            OpenApplications(word1);
        }
        else if (searchQuery.Value.ToLower() == "search")
        {
            result.SendResponse("starting search");
            word1 = funtionQuery.Value.Replace(' ', ' ');
            word1 = word1.Substring(1);
            Debug.Log(word1);
            SearchInternet(word1);

        }
        else if (searchQuery.Value.ToLower() == "youtube")
        {
            result.SendResponse("starting youtube search");
            word1 = funtionQuery.Value.Replace(' ', ' ');
            word1 = word1.Substring(1);
            Debug.Log(word1);
            searchyoutube(word1);
        }
        else if (searchQuery.Value.ToLower() == "ar gallery")
        {
            result.SendResponse("starting AR Gallery");
            OpenARGallery();
        }
        else if (searchQuery.Value.ToLower() == "ar cinema")
        {
            result.SendResponse("starting AR Cinema");
            OpenARCinema();
        }
        else if (searchQuery.Value.ToLower() == "screenshot")
        {
            result.SendResponse("Taking ScreenShot");
            TakeScreenShot();
        }


    }
}
 

Ответ №1:

Недопустимо использовать @query и затем явно помечать его как объект с [Entity ("query")] помощью. Когда вы указываете имя объекта с помощью @, этот объект должен быть определен средством распознавания объектов.

Если вы пытаетесь захватить некоторый произвольный текст, вам следует использовать объект @sys.text после некоторых конкретных слов

Простой пример

Open App @Sys.Text — Будет соответствовать open app notepad

Комментарии:

1. можете ли вы привести пример @sys.text с каким-либо конкретным словом?

2. @TahaHussain добавил для вас пример.