zoukankan      html  css  js  c++  java
  • Syn Bot /OSCOVA 表达式和实体(6)

    表达式用来定义用户输入的模式,要使用表达式,请使用Expression 特性标记装饰 Intent。

    一个Intent可以使用多个表达式装饰。

     声明表达式可以用下列的符号,表达式中的其他符号将在归一化处理后被删除。

    TypeDescription
    文字与数字 文本数字混合
    连字符(-) 可能是实体名称,因此有效
    点(.) 存在于系统实体名称内,有效
    &的记号名称(@) 在模板模式(template mode)当作前缀显式使用
    花括号({}) 显式使用用于注解实体的值

     实体

    实体是开发人员想要从用户消息中解析的信息片段。关于如何自定义实体识别器请查看《Syn Bot /OSCOVA实体识别器》一节。

    实体类型的命名方式:@EntityTypeName,举例

    [Expression("Add a reminder for @sys.date")]
    public void ReminderStart(Context context, Result result)
    {
        //Do something
    }

    实体表达式的类型有两类,一类是使用花括号

    [Expression("{open} the garage door")]
    [Expression("{close} the garage door")]
    [Entity("command")]

    如果类型为command的实体类型不是已有,他的识别器将会被框架动态创建。

    另一类是使用模板(Template),通过代码创建的方式如下:

    bot.CreateRecognizer("command", new[] {"open", "close"});

    怎么使用呢?

    [Expression("@command the garage door")]

    需要注意的是,实体类型名称只能包含文字和数字字符,可以使用点和短横线分隔。其他字符是无效的。

    @符号也只用于指定实体类型,别的地方使用就不带@,比如

    Entities.OfType("sys.currency");

    系统预定义了很多实体识别器,要使用系统的实体,从Sys下面查找。

    [Expression("Book an appointment for {tomorrow}")]
    [Entity(Sys.Date)]
    public void Appointment(Context context, Result result)
    {
        //Do Something.
    }

    为表达式命名,注意必须是上下文唯一的。

    [Expression("open @app", Name = "single-app")]
    [Expression("open @app and @app", Name = "multi-app")]
    public void OpenApp(Context context, Result result)
    {
        if (result.CurrentIntent.ExpressionName == "single-app")
        {
            //Do something here.
        }
        else if (result.CurrentIntent.ExpressionName == "multi-app")
        {
            //Do something here.
        }
    }
  • 相关阅读:
    设计模式学习--------8.抽象工厂模式学习
    设计模式学习--------7.工厂方法模式学习
    算法学习---对象类型的数组二分查找实现
    算法学习---基本数据类型的数组二分查找实现
    设计模式学习--------6.单例模式学习
    设计模式学习--------5.适配器模式学习
    tomcat 部署指南
    《Tomcat权威指南》读书笔记
    字典排序
    zabbix agentd错误日志解决办法
  • 原文地址:https://www.cnblogs.com/mrtiny/p/9081902.html
Copyright © 2011-2022 走看看