zoukankan      html  css  js  c++  java
  • Syn Bot /OSCOVA 上下文(8)

    下文用来表示用户Session的会话状态。用Context 特性标记的Intent将仅在指定的上下文名称与其匹配时才被调用,对从会话上面消除歧义很有用的。

    上下文由名称和生存周期组成。生存周期表示上下文存活的请求数量。默认是5个请求。

    另外,上下文也有自身的生存时间,默认一个上下文将保持活动10分钟,当生存周期或生存时间任一到期,其将被从用户session中移除。

    用法举例,你的应用程序需要让用户确认shutdown指令:

    [Expression("shutdown")]
    public void Shutdown(Context context, Result result)
    {
        //Add a new "shutdown_confirmation" context.
        context.Add("shutdown_confirmation", 2);
    
        result.SendResponse("Are you sure?");
        //Do something.
    }
    [Expression("{yes}")]
    [Entity(Sys.Positive)]
    [Context("shutdown_confirmation")]
    public void ShutdownConfirmed(Context context, Result result)
    {
        //Do something.
    }
    
    [Expression("{no}")]
    [Entity(Sys.Negative)]
    [Context("shutdown_confirmation")]
    public void ShutdownCanceled(Context context, Result result)
    {
        //Do something.
    }
    这里指定了2个用户请求作为傻姑娘下文的生存周期,周期到时会自动被删除,你也可以手动删除。
    context.Remove("shutdown_confirmation");

    添加的上下文在存续期间可以在过程中携带多个唯一参数以携带额外信息。

    [Expression("turn on the air conditioner")]
    public void TurnOnAC(Context context, Result result)
    {
        context.Add("air-con");
        var acContext = context["air-con"];
        acContext.Parameters.Add("temp", "medium");
    }
    或者
    [Expression("{turn on} the air conditioner")]
    [Entity("on")]
    public void TurnOnAC(Context context, Result result)
    {
        var newConItem = context.Create("air-con");
        newConItem.Parameters.Add("temp", "medium");
    }

    有条件的存在,添加上下文时可以使用条件。

    [Expression("Play @movie-name")]
    public void PlayMovie(Context context, Result result)
    {
        //Keep context active until movie is playing.
        context.Add("movie-playback", () =>
        {
            return MoviePlayer.IsPlaying;
        });
        //Do something.
    }


  • 相关阅读:
    尝试搭建springcloud项目(二)客户端client
    IDEA不识别yml
    尝试搭建springcloud项目(一)服务注册中心 Eureka
    curl与XPath
    curl发起网络请求
    Laravel Redis分布式锁的使用
    php 获取excel表格里面的数据
    php+redis实现简单秒杀抢购功能
    微信公众号模板消息推送
    永中,文档预览和转换的第三方平台
  • 原文地址:https://www.cnblogs.com/mrtiny/p/9082090.html
Copyright © 2011-2022 走看看