public override bool Match(ReceiveMessage message) { bool result = true; if (!string.IsNullOrEmpty(EventKey)) result &= message.EventKey == EventKey; return result; }
private static string ExecuteMarco(MarcoConfigItem marco, IDbDataSource source, DataRow row, ReceiveMessage message) { if (marco == null) return null; return Expression.Execute(marco, source, row, message); }
private BaseSendMessage CreateDefaultMessage(ReceiveMessage message) { IRule defaultReply; if (!fDefaultTypeMessage.TryGetValue(message.MsgType, out defaultReply)) defaultReply = fDefaultMessage; return defaultReply.Reply(message); }
private static string ExecuteUrl(UrlMacroConfig marco, IDbDataSource source, DataRow row, ReceiveMessage message) { if (marco == null) return null; string content = Expression.Execute(marco, source, row, message); return marco.ToUri(content); }
private static void SaveLocation(ReceiveMessage message) { using (WeixinDataSource source = new WeixinDataSource()) using (UserLocationResolver resolver = new UserLocationResolver(source)) { resolver.Insert(message); } }
public void Log(ReceiveMessage message) { string fileName = DateTime.Now.ToString("yyyyMMdd_hhmmss_ffff", ObjectUtil.SysCulture) + ".xml"; string content = message.WriteXml(); FileUtil.SaveFile(Path.Combine(BasePath, fileName), content, Encoding.UTF8); }
public Article CreateArticle(IDbDataSource source, DataRow row, ReceiveMessage message) { Article result = new Article { Title = ExecuteMarco(Title, source, row, message), Description = ExecuteMarco(Description, source, row, message), PicUrl = ExecuteUrl(PicUrl, source, row, message), Url = ExecuteUrl(Url, source, row, message) }; return result; }
public void Log(ReceiveMessage message) { using (WeixinDataSource source = new WeixinDataSource()) using (MessageResolver resolver = new MessageResolver(source)) { resolver.SetCommands(AdapterCommand.Insert); DataRow row = resolver.NewRow(); message.AddToDataRow(row); row["CreateDate"] = message.CreateTime; resolver.UpdateDatabase(); } }
public BaseSendMessage Reply(ReceiveMessage message) { TkDbContext context; if (string.IsNullOrEmpty(ContextName)) context = DbContextUtil.CreateDefault(); else context = DbContextUtil.CreateDbContext(ContextName); using (EmptyDbDataSource source = new EmptyDbDataSource()) { source.Context = context; string sql = Expression.Execute(Sql, source); SqlSelector.Select(source.Context, source.DataSet, TABLE_NAME, sql); DataTable table = source.DataSet.Tables[TABLE_NAME]; if (table.Rows.Count == 0) { TextSendMessage result = new TextSendMessage(message, EmptyMessage); return result; } else { NewsSendMessage result = new NewsSendMessage(message); int count = 0; if (fFirstArticles.Count > 0) { foreach (var article in fFirstArticles) { result.Add(article); ++count; } } int maxCount = MAX_COUNT; if (FootArticle != null) maxCount--; foreach (DataRow row in table.Rows) { if (++count > maxCount) break; Article article = DataRowArticle.CreateArticle(source, row, message); result.Add(article); } if (FootArticle != null) result.Add(FootArticle); return result; } } }
public void Insert(ReceiveMessage message) { DataRow row = NewRow(); row.BeginEdit(); row["Id"] = Context.GetUniId(TableName); row["OpenId"] = message.FromUserName; row["CreateDate"] = DateTime.Now; row["Latitude"] = message.Latitude; row["Longitude"] = message.Longitude; row["Precision"] = message.Precision; row["CityCode"] = WeDataUtil.GetSXCode(Context, message.Latitude, message.Longitude); row.EndEdit(); SetCommands(AdapterCommand.Insert); UpdateDatabase(); }
public RuleAttribute Match(ReceiveMessage message) { bool isCorpMode = WeixinSettings.Current.Mode == WeixinMode.Corporation; foreach (var attr in fList) { if (isCorpMode) { if (attr.AppId != message.AgentId) continue; } if (attr.Match(message)) return attr; } return null; }
public BaseSendMessage Reply(ReceiveMessage message) { using (EmptyDbDataSource source = WeDataUtil.CreateSource()) using (TableResolver resolver = new CorpAppLogResolver(source)) { resolver.SetCommands(AdapterCommand.Insert); DataRow row = resolver.NewRow(); row.BeginEdit(); row["LogId"] = resolver.CreateUniId(); row["AppId"] = message.AgentId; row["CreateDate"] = message.CreateTime; row["UserId"] = message.FromUserName; row.EndEdit(); resolver.UpdateDatabase(); } return null; }
public BaseSendMessage Reply(ReceiveMessage message) { TkDbContext context = DbContextUtil.CreateDbContext("Weixin"); using (EmptyDbDataSource source = new EmptyDbDataSource() { Context = context}) using (TableResolver resolver = new TableResolver("WE_CORP_APP_LOG", source)) { resolver.SetCommands(AdapterCommand.Insert); DataRow row = resolver.NewRow(); row.BeginEdit(); row["LogId"] = resolver.CreateUniId(); row["AppId"] = message.AgentId; row["CreateDate"] = message.CreateTime; row["UserId"] = message.FromUserName; row.EndEdit(); resolver.UpdateDatabase(); } return null; }
public bool Reply(ReceiveMessage message, out BaseSendMessage replyMessage) { IMessageReplyEngine subEngine = fEngineList[(int)message.MsgType]; RuleAttribute attr = subEngine.Match(message); if (attr != null) { if (attr == RuleAttribute.Empty) replyMessage = null; else { IRule reply = PlugInFactoryManager.CreateInstance<IRule>( RulePlugInFactory.REG_NAME, attr.RegName).Convert<IRule>(); replyMessage = reply.Reply(message); } return true; } else { replyMessage = null; return false; } }
public BaseSendMessage Reply(ReceiveMessage message) { BaseGlobalVariable.Current.BeginInvoke(new Action<ReceiveMessage>(SaveLocation), message); return null; }
internal ImageSendMessage(ReceiveMessage receive, string mediaId) : this(receive.FromUserName, mediaId) { }
internal MusicSendMessage(ReceiveMessage message, string thumbMediaId, string title, string description, string musicUrl, string hqMusicUrl) : this(message.FromUserName, thumbMediaId, title, description, musicUrl, hqMusicUrl) { }
public BaseSendMessage Reply(ReceiveMessage message) { BaseSendMessage result = CreateDefaultMessage(message); return result; }
internal NewsSendMessage(ReceiveMessage message) : this(message.FromUserName) { }
public BaseSendMessage Reply(ReceiveMessage message) { return RuleUtil.Execute(RuleUtil.ProcessCorpUser, false, message.FromUserName); }
public override bool Match(ReceiveMessage message) { return Match(MatchType, Text, message.Content); }
internal VoiceSendMessage(ReceiveMessage receive, string mediaId) : this(receive.FromUserName, mediaId) { }
public void SetData(params object[] args) { fMessage = ObjectUtil.ConfirmQueryObject<ReceiveMessage>(this, args); //TkDebug.AssertNotNull(fMessage, // "宏OpenId需要ReceiveMessage对象,但是没有从外部对象中找到", this); }
public override bool Match(ReceiveMessage message) { if (string.IsNullOrEmpty(Text)) return true; return TextRuleAttribute.Match(MatchType, Text, message.Recognition); }
public BaseSendMessage Reply(ReceiveMessage message) { return RuleUtil.Execute(RuleUtil.ProcessNormalUser, true, message.FromUserName); }
public override bool Match(ReceiveMessage message) { //return string.IsNullOrEmpty(message.EventKey); return true; }
public RuleAttribute Match(ReceiveMessage message) { return RuleAttribute.Empty; }
public BaseSendMessage Reply(ReceiveMessage message) { IRule reply = fConfig.Reply.CreateObject(); return reply.Reply(message); }
public override bool Match(ReceiveMessage message) { return true; }
public abstract bool Match(ReceiveMessage message);
internal TextSendMessage(ReceiveMessage receive, string content) : this(receive.FromUserName, content) { }