public override bool CanProcess(PluginContext ctx) { var t = ctx.ReceiveMessage as RecTextMessage; const RegexOptions options = RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace; var notExist = string.IsNullOrEmpty(Pattern); return t != null && (notExist || Regex.IsMatch(t.Content, Pattern, options)); }
/// <summary> /// 将调用转到合适的插件并由找到的插件执行处理。 /// <para>如果没有任何插件接收此次调用,将返回null。</para> /// </summary> /// <param name="context">如果为null,则自动从请求中获取数据</param> /// <returns></returns> public static ResponseMessage Invoke(InvokerContext context = null) { if (context == null) { context = ParseFromContext(); } var msg = context.Message; //接收的消息 var ctx = new PluginContext { ReceiveMessage = msg, Seller = Obtainer == null ? null : Obtainer.Obtain(msg.ToUserName), UserContext = UserContext.Get(msg.ToUserName, msg.FromUserName) }; //需要验证签名 if (RequireCheck && !EntrySign.ParseFromContext().Check(ctx.Seller == null ? null : ctx.Seller.Token)) { return null; } var plugin = Plugins.FirstOrDefault(p => p.CanProcess(ctx)); var rep = plugin == null ? null : plugin.Execute(ctx); //传递PluginContext //触发事件 if (Invoked != null) Invoked(ctx, rep); return rep; }
/// <summary> /// 将调用转到合适的插件并由找到的插件执行处理。 /// <para>如果没有任何插件接收此次调用,将返回null。</para> /// </summary> /// <param name="context">如果为null,则自动从请求中获取数据</param> /// <returns></returns> public static ResponseMessage Invoke(InvokerContext context = null) { if (context == null) { context = ParseFromContext(); } var msg = context.Message; //接收的消息 var ctx = new PluginContext { ReceiveMessage = msg, Seller = Obtainer == null ? null : Obtainer.Obtain(msg.ToUserName), UserContext = UserContext.Get(msg.ToUserName, msg.FromUserName) }; //需要验证签名 if (RequireCheck && !EntrySign.ParseFromContext().Check(ctx.Seller == null ? null : ctx.Seller.Token)) { return(null); } //执行前逻辑 var pre = new PluginInvokingContext(ctx); if (Invoking != null) { Invoking(pre); //如果终止执行则直接返回响应 if (pre.Aborted) { return(pre.Response); } } var plugin = Plugins.FirstOrDefault(p => p.CanProcess(ctx)); var rep = plugin == null ? null : plugin.Execute(ctx); //传递PluginContext //触发事件 if (Invoked != null) { Invoked(ctx, rep); } return(rep); }
public override bool CanProcess(PluginContext ctx) { var msg = ctx.ReceiveMessage; return msg is RecEventMessage && Key.Equals((msg as RecEventMessage).EventKey); }
public virtual ResponseMessage Execute(PluginContext ctx) { return(null); //不会有任何响应。实际上,不会执行到此方法。 }
/// <summary> /// 由此判断,决定是否处理当前请求。 /// <para>比如,如果不同的商家可能启用了不同的插件,可在此判断,当商家没有启动此插件时返回false即可。</para> /// <para>如果商家没有启用此插件但需要给予提示,使得用户催促商家开通此插件的话,可返回true然后在Execute方法下返回提示信息。</para> /// </summary> /// <param name="ctx"></param> /// <returns></returns> public virtual bool CanProcess(PluginContext ctx) { return(false); //不处理任何请求 }
public virtual ResponseMessage Execute(PluginContext ctx) { return null;//不会有任何响应。实际上,不会执行到此方法。 }
/// <summary> /// 由此判断,决定是否处理当前请求。 /// <para>比如,如果不同的商家可能启用了不同的插件,可在此判断,当商家没有启动此插件时返回false即可。</para> /// <para>如果商家没有启用此插件但需要给予提示,使得用户催促商家开通此插件的话,可返回true然后在Execute方法下返回提示信息。</para> /// </summary> /// <param name="ctx"></param> /// <returns></returns> public virtual bool CanProcess(PluginContext ctx) { return false;//不处理任何请求 }
public override bool CanProcess(PluginContext ctx) { var msg = ctx.ReceiveMessage; return(msg is RecEventMessage && Key.Equals((msg as RecEventMessage).EventKey)); }
public override bool CanProcess(PluginContext ctx) { return(_asDefault || base.CanProcess(ctx)); }
public override ResponseMessage Execute(PluginContext ctx) { var seller = ctx.Seller; var rep = ctx.ReceiveMessage.GetTextResponse("系统使用帮助"); return rep; }
public override bool CanProcess(PluginContext ctx) { return _asDefault || base.CanProcess(ctx); }
/// <summary> /// 从基类创建实例,复制基类的值(仅复制引用,这意味着修改参数值将影响到后续的传递) /// </summary> /// <param name="ctx"></param> public PluginInvokingContext(PluginContext ctx) { ReceiveMessage = ctx.ReceiveMessage; Seller = ctx.Seller; UserContext = ctx.UserContext; }