Syn Bot /OSCOVA 创建意图(4)

实现方式是一个public void的方法,可以带有Context和Result参数。

来看下声明:

[Expression("How is the weather?")]
public void Weather(Context context, Result result)
{
    //Do something.
}

上下文(Context):提供一组信息,包含当前用户的会话上下文,允许修改删除上下文的相关参数,有一个SharedData属性,可以让开发人员存取限定于用户会话的对象。

结果(Result):Oscova框架生成的针对当前用户消息的执行结果,它的Entities属性包含了所有识别到的实体对象,它的CurrentIntent属性表示当前调用的意图对象信息。

 

意图的参数是可选的,以下实现方式都是支持的:

[Expression("How is the weather?")]
public void Weather()
[Expression("How is the weather?")]
public void Weather(Context context)
[Expression("How is the weather?")]
public void Weather(Result result)
[Expression("How is the weather?")]
public void Weather(Context context, Result result)

名称规则

可以使用特性重写:

[Expression("Find a hotel nearby")]
[Intent(Name="nearestHotel")]
public void FindHotel(Context context, Result result)

当没有找到任何匹配的常规意图,使用默认意图来返回一些信息:

[Fallback]
public void DefaultFallback(Context context, Result result)
{
    result.Send("Can you please rephrase that for me?");
}

支持强制调整意图的分数。

[Expression("@sys.positive")]
[Intent(MinScore = 0.7)]
public void CommitToDatabase(Context context, Result result)
{
    //User said "Yes". Do something essential here.
}

支持显式禁用意图

[Trait(Type = "#feedback")]
public void Feedback(Context context, Result result)
{
    //Do something and then...

    //Disable the specified intent for the next 2 requests.
    result.User.DisabledIntents.Add("IntentA", 2);

    //Disable the specified intent permanently for this user.
    result.User.DisabledIntents.Add("IntentB");
}
posted @ 2018-05-24 11:01  道木先生  阅读(120)  评论(0编辑  收藏  举报