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.
        }
    }
  • 相关阅读:
    【HDU 1060】Leftmost Digit
    【HLG 1572】表达式计算(后缀表达式+栈的应用)
    Vue CLI3 开启gzip压缩
    html元素呼吸效果
    前端实现在线预览pdf、word、xls、ppt等文件
    devServer proxy的使用
    7个基础js函数
    前端初中高级面试题1
    模仿头条导航的左右滚动效果
    angular基本入门教程
  • 原文地址:https://www.cnblogs.com/mrtiny/p/9081902.html
Copyright © 2011-2022 走看看