public CommonOrderItem Add(SingleOrder order, TextRequest t) { if(item == null || item.IsDone()) { item = new CommonOrderItem(); } item.Add(order, t); if (item.IsDone()) { return item; } return null; }
public override AbstractResponse OnTextRequest(TextRequest textRequest) { System.Collections.Generic.IList <ReplyInfo> kefuReplies = ReplyHelper.GetReplies(ReplyType.Kefu); if (!string.IsNullOrEmpty(textRequest.Content) && this.IsOpenManyService() && kefuReplies != null && kefuReplies.Count > 0) { List <string> kefuKeys = new List <string>(); foreach (ReplyInfo item in kefuReplies) { if (item.MatchType == MatchType.Equal) { if (item.Keys == textRequest.Content) { return(this.GotoManyCustomerService(textRequest)); } } else if (item.MatchType == MatchType.Like) { string[] keys = item.Keys.Split(','); kefuKeys.AddRange(keys); } } foreach (var key in kefuKeys) { if (textRequest.Content.Contains(key)) { return(this.GotoManyCustomerService(textRequest)); } } } AbstractResponse keyResponse = this.GetKeyResponse(textRequest.Content, textRequest); if (keyResponse != null) { return(keyResponse); } System.Collections.Generic.IList <ReplyInfo> replies = ReplyHelper.GetReplies(ReplyType.Keys); //if (replies == null || (replies.Count == 0 && this.IsOpenManyService())) //{ // this.GotoManyCustomerService(textRequest); //} if (replies != null && replies.Count > 0) { foreach (ReplyInfo current in replies) { if (current.MatchType == MatchType.Equal && current.Keys == textRequest.Content) { AbstractResponse response = this.GetResponse(current, textRequest.FromUserName); response.ToUserName = textRequest.FromUserName; response.FromUserName = textRequest.ToUserName; AbstractResponse result = response; return(result); } if (current.MatchType == MatchType.Like && current.Keys.Contains(textRequest.Content)) { AbstractResponse response2 = this.GetResponse(current, textRequest.FromUserName); response2.ToUserName = textRequest.FromUserName; response2.FromUserName = textRequest.ToUserName; AbstractResponse result = response2; return(result); } } } return(this.DefaultResponse(textRequest)); }
public static AbstractRequest GetRequestEntity(XDocument doc) { RequestMsgType msgType = MsgTypeHelper.GetMsgType(doc); AbstractRequest entity = null; switch (msgType) { case RequestMsgType.Text: entity = new TextRequest(); break; case RequestMsgType.Image: entity = new ImageRequest(); break; case RequestMsgType.Voice: entity = new VoiceRequest(); break; case RequestMsgType.Video: entity = new VideoRequest(); break; case RequestMsgType.Location: entity = new LocationRequest(); break; case RequestMsgType.Link: entity = new LinkRequest(); break; case RequestMsgType.Event: switch (EventTypeHelper.GetEventType(doc)) { case RequestEventType.Subscribe: entity = new SubscribeEventRequest(); goto Label_00D7; case RequestEventType.UnSubscribe: entity = new UnSubscribeEventRequest(); goto Label_00D7; case RequestEventType.Scan: entity = new ScanEventRequest(); goto Label_00D7; case RequestEventType.Location: entity = new LocationEventRequest(); goto Label_00D7; case RequestEventType.Click: entity = new ClickEventRequest(); goto Label_00D7; case RequestEventType.MASSSENDJOBFINISH: entity = new MassendJobFinishEventRequest(); goto Label_00D7; } throw new ArgumentOutOfRangeException(); default: throw new ArgumentOutOfRangeException(); } Label_00D7: EntityHelper.FillEntityWithXml <AbstractRequest>(entity, doc); Regex regex = new Regex(@"<MsgID>(?<url>\d+)</MsgID>"); if (entity.MsgId == 0L) { Match match = Regex.Match(doc.Root.ToString(), @"<MsgID>(?<msgid>\d+)</MsgID>", RegexOptions.IgnoreCase); if (match.Success) { entity.MsgId = long.Parse(match.Groups["msgid"].Value); entity.CreateTime = DateTime.Now; } } return(entity); }
public static AbstractRequest GetRequestEntity(XDocument doc) { RequestMsgType msgType = MsgTypeHelper.GetMsgType(doc); AbstractRequest textRequest = null; switch (msgType) { case RequestMsgType.Text: { textRequest = new TextRequest(); break; } case RequestMsgType.Image: { textRequest = new ImageRequest(); break; } case RequestMsgType.Voice: { textRequest = new VoiceRequest(); break; } case RequestMsgType.Video: { textRequest = new VideoRequest(); break; } case RequestMsgType.Location: { textRequest = new LocationRequest(); break; } case RequestMsgType.Link: { textRequest = new LinkRequest(); break; } case RequestMsgType.Event: { switch (EventTypeHelper.GetEventType(doc)) { case RequestEventType.Subscribe: { textRequest = new SubscribeEventRequest(); break; } case RequestEventType.UnSubscribe: { textRequest = new UnSubscribeEventRequest(); break; } case RequestEventType.Scan: { textRequest = new ScanEventRequest(); break; } case RequestEventType.Location: { textRequest = new LocationEventRequest(); break; } case RequestEventType.Click: { textRequest = new ClickEventRequest(); break; } default: { throw new ArgumentOutOfRangeException(); } } break; } default: { throw new ArgumentOutOfRangeException(); } } EntityHelper.FillEntityWithXml <AbstractRequest>(textRequest, doc); return(textRequest); throw new ArgumentOutOfRangeException(); }
public virtual AbstractResponse OnTextRequest(TextRequest textRequest) { return(this.DefaultResponse(textRequest)); }
public IActionResult Summarize([FromBody] TextRequest Request) { return(Ok(_repo.Summarize(Request))); }
public IActionResult Stem([FromBody] TextRequest Request) { return(Ok(_repo.Stem(Request))); }
public abstract Task <VoiceRespone> Invork(TextRequest request);
public static AbstractRequest GetRequestEntity(XDocument doc) { AbstractRequest abstractRequest; switch (MsgTypeHelper.GetMsgType(doc)) { case RequestMsgType.Text: abstractRequest = new TextRequest(); break; case RequestMsgType.Image: abstractRequest = new ImageRequest(); break; case RequestMsgType.Voice: abstractRequest = new VoiceRequest(); break; case RequestMsgType.Video: abstractRequest = new VideoRequest(); break; case RequestMsgType.Location: abstractRequest = new LocationRequest(); break; case RequestMsgType.Link: abstractRequest = new LinkRequest(); break; case RequestMsgType.Event: switch (EventTypeHelper.GetEventType(doc)) { case RequestEventType.Subscribe: abstractRequest = new SubscribeEventRequest(); break; case RequestEventType.UnSubscribe: abstractRequest = new UnSubscribeEventRequest(); break; case RequestEventType.Scan: abstractRequest = new ScanEventRequest(); break; case RequestEventType.Location: abstractRequest = new LocationEventRequest(); break; case RequestEventType.Click: abstractRequest = new ClickEventRequest(); break; default: throw new ArgumentOutOfRangeException(); } break; default: throw new ArgumentOutOfRangeException(); } EntityHelper.FillEntityWithXml <AbstractRequest>(abstractRequest, doc); return(abstractRequest); }
/// <summary> /// 从文本信息中, 获取消息数据. /// </summary> /// <param name="weixin"></param> /// <returns></returns> public AbstractRequest ReadMessage(string weixin) { XmlDocument doc = new XmlDocument(); //读取xml字符串 doc.LoadXml(weixin); XmlElement root = doc.DocumentElement; // 获取收到的消息类型。文本(text),图片(image),语音等。 XmlNode MsgType = root.SelectSingleNode("MsgType"); string messageType = MsgType.InnerText; AbstractRequest resultMessage = null; try { switch (messageType) { case MessageType.TextMsgType: if (logger.IsDebugEnabled) { logger.Debug("检测到文本消息,尝试解析.."); } resultMessage = new TextRequest(doc); break; case MessageType.ImageMsgType: if (logger.IsDebugEnabled) { logger.Debug("检测到图片消息,尝试解析.."); } resultMessage = new ImageRequest(doc); break; case MessageType.VoiceMsgType: if (logger.IsDebugEnabled) { logger.Debug("检测到语音消息,尝试解析.."); } resultMessage = new VoiceRequest(doc); break; case MessageType.VideoMsgType: if (logger.IsDebugEnabled) { logger.Debug("检测到视频消息,尝试解析.."); } resultMessage = new VideoRequest(doc); break; case MessageType.LocationMsgType: if (logger.IsDebugEnabled) { logger.Debug("检测到地理位置消息,尝试解析.."); } resultMessage = new LocationRequest(doc); break; case MessageType.LinkMsgType: if (logger.IsDebugEnabled) { logger.Debug("检测到链接消息,尝试解析.."); } resultMessage = new LinkRequest(doc); break; case MessageType.EventMsgType: if (logger.IsDebugEnabled) { logger.Debug("检测到事件消息,尝试解析.."); } resultMessage = eventReader.ReadEvent(weixin); break; default: logger.WarnFormat("检测到了无法识别的信息:{0}", messageType); break; } if (logger.IsDebugEnabled) { logger.DebugFormat("消息解析结果:{0}", resultMessage); } } catch (Exception ex) { logger.Error(ex.Message, ex); } return(resultMessage); }
public void EditTextRequest(TextRequest entity) { GenericEntityWrapper.EditEntity(entity); }
public void AddTextRequest(TextRequest entity) { GenericEntityWrapper.AddEntity(entity); }
public static AbstractRequest GetRequestEntity(XDocument doc) { RequestMsgType msgType = MsgTypeHelper.GetMsgType(doc); AbstractRequest entity = null; // System.IO.File.AppendAllText(@"E:\home\LocalUser\580442\www\humowang\api\type.txt", "msgType:" + msgType + "\r\n"); switch (msgType) { case RequestMsgType.Text: { entity = new TextRequest(); break; } case RequestMsgType.Image: { entity = new ImageRequest(); break; } case RequestMsgType.Voice: { entity = new VoiceRequest(); break; } case RequestMsgType.Video: { entity = new VideoRequest(); break; } case RequestMsgType.Location: { entity = new LocationRequest(); break; } case RequestMsgType.Link: { entity = new LinkRequest(); break; } case RequestMsgType.Event: { switch (EventTypeHelper.GetEventType(doc)) { case RequestEventType.Subscribe: { entity = new SubscribeEventRequest(); //goto Label_00C5; break; } case RequestEventType.UnSubscribe: { entity = new UnSubscribeEventRequest(); //goto Label_00C5; break; } case RequestEventType.Scan: { entity = new ScanEventRequest(); // goto Label_00C5; break; } case RequestEventType.Location: { entity = new LocationEventRequest(); // goto Label_00C5; break; } case RequestEventType.Click: { entity = new ClickEventRequest(); // goto Label_00C5; break; } case RequestEventType.VIEW: { entity = new ViewEventRequest(); break; } default: { throw new ArgumentOutOfRangeException(); // break; } } break; } default: { throw new ArgumentOutOfRangeException(); } } //Label_00C5: EntityHelper.FillEntityWithXml <AbstractRequest>(entity, doc); return(entity); }
public async Task <List <AnalysisResult> > AnalyzeAsync(List <string> input) { var result = new List <AnalysisResult>(); using (var client = new HttpClient()) { string response = default(string); client.BaseAddress = new Uri(BaseUrl); // Request headers. client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", _accountKey); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); Document document = null; var request = new TextRequest() { Documents = new List <Document>() }; for (int i = 1; i <= input.Count; i++) { document = new Document { Id = i.ToString(), Text = input[i - 1] }; request.Documents.Add(document); } var serializedEntity = JsonConvert.SerializeObject(request); byte[] byteData = Encoding.UTF8.GetBytes(serializedEntity); // Detect key phrases: var uri = "text/analytics/v2.0/keyPhrases"; response = await CallEndpoint(client, uri, byteData); var keyPhrases = JsonConvert.DeserializeObject <TextResponse <KeyPhraseResponse> >(response); // Detect sentiment: uri = "text/analytics/v2.0/sentiment"; response = await CallEndpoint(client, uri, byteData); var sentiment = JsonConvert.DeserializeObject <TextResponse <SentimentResponse> >(response); result = request.Documents .Select(i => { var item = new AnalysisResult { Sentiment = sentiment.Documents.Single(j => j.Id == i.Id).Score, KeyPhrases = keyPhrases.Documents.Single(j => j.Id == i.Id).KeyPhrases, OriginalText = i.Text }; return(item); }) .ToList(); } return(result); }
public static AbstractRequest GetRequestEntity(XDocument doc) { AbstractRequest abstractRequest; switch (MsgTypeHelper.GetMsgType(doc)) { case RequestMsgType.Text: abstractRequest = new TextRequest(); break; case RequestMsgType.Image: abstractRequest = new ImageRequest(); break; case RequestMsgType.Voice: abstractRequest = new VoiceRequest(); break; case RequestMsgType.Video: abstractRequest = new VideoRequest(); break; case RequestMsgType.Location: abstractRequest = new LocationRequest(); break; case RequestMsgType.Link: abstractRequest = new LinkRequest(); break; case RequestMsgType.Event: switch (EventTypeHelper.GetEventType(doc)) { case RequestEventType.Subscribe: abstractRequest = new SubscribeEventRequest(); break; case RequestEventType.UnSubscribe: abstractRequest = new UnSubscribeEventRequest(); break; case RequestEventType.Scan: abstractRequest = new ScanEventRequest(); break; case RequestEventType.Location: abstractRequest = new LocationEventRequest(); break; case RequestEventType.Click: abstractRequest = new ClickEventRequest(); break; case RequestEventType.MASSSENDJOBFINISH: abstractRequest = new MassendJobFinishEventRequest(); break; default: throw new ArgumentOutOfRangeException(); } break; default: throw new ArgumentOutOfRangeException(); } EntityHelper.FillEntityWithXml <AbstractRequest>(abstractRequest, doc); Regex regex = new Regex("<MsgID>(?<url>\\d+)</MsgID>"); if (abstractRequest.MsgId == 0L) { Match match = Regex.Match(doc.Root.ToString(), "<MsgID>(?<msgid>\\d+)</MsgID>", RegexOptions.IgnoreCase); if (match.Success) { abstractRequest.MsgId = long.Parse(match.Groups["msgid"].Value); abstractRequest.CreateTime = DateTime.Now; } } return(abstractRequest); }
public override async Task <TextProcessingServiceRespone> Invork(TextRequest textRequest) { var time = DateTime.Now; TextProcessingServiceRespone textProcessingServiceRespone = new TextProcessingServiceRespone() { Id = textRequest.Id.Value }; ApiAiSDK.Model.AIResponse aiResponse; ApiAiSDK.RequestExtras requestExtras; DbClient db = new DbClient(); var context = await db.GetContext(textRequest.Id.Value); if (context != null && !string.IsNullOrWhiteSpace(context.IntentContext)) { requestExtras = JsonConvert.DeserializeObject <ApiAiSDK.RequestExtras>(context.IntentContext); } else { requestExtras = new ApiAiSDK.RequestExtras(); } aiResponse = apiAi.TextRequest(textRequest.TextData, requestExtras); //TODO: Update Exceptions if (aiResponse == null) { throw new Exception("Invalid output message"); } requestExtras.Contexts = new List <ApiAiSDK.Model.AIContext>(); foreach (var outContext in aiResponse.Result.Contexts) { ApiAiSDK.Model.AIContext aIContext = new ApiAiSDK.Model.AIContext { Parameters = new Dictionary <string, string>(), Lifespan = outContext.Lifespan, Name = outContext.Name }; foreach (var param in outContext.Parameters) { string key = param.Key; string value; if (param.Value != null) { value = param.Value.ToString(); aIContext.Parameters.Add(key, value); } } requestExtras.Contexts.Add(aIContext); } if (requestExtras == null) { requestExtras = new ApiAiSDK.RequestExtras(); } if (context == null) { context = new DbModels.UserContext() { Id = textRequest.Id.Value, IntentContext = "", TalkContext = "", TalkReplicCount = 0 } } ; context.IntentContext = JsonConvert.SerializeObject(requestExtras); await db.AddOrUpdateContext(context); requestExtras = null; db.Dispose(); textProcessingServiceRespone.TextData = aiResponse.Result.Fulfillment.Speech; if (!string.IsNullOrWhiteSpace(aiResponse.Result.Action)) { foreach (var parametr in aiResponse.Result.Parameters) { if (!string.IsNullOrWhiteSpace(parametr.Value.ToString())) { textProcessingServiceRespone.Entities.Add(parametr.Key, parametr.Value.ToString()); if (parametr.Value.ToString().Contains("dress")) { textProcessingServiceRespone.WayPoint = "adidas"; } else if (parametr.Value.ToString().Contains("shop")) { textProcessingServiceRespone.WayPoint = "adidas"; } else if (parametr.Value.ToString().Contains("furniture")) { textProcessingServiceRespone.WayPoint = "adidas"; } else if (parametr.Value.ToString().ToLower().Contains("ikea")) { textProcessingServiceRespone.WayPoint = "adidas"; } else if (parametr.Value.ToString().ToLower().Contains("adidas")) { textProcessingServiceRespone.WayPoint = "adidas"; } } } if (aiResponse.Result.Action == "navigation_shops") { textProcessingServiceRespone.WayPoint = "adidas"; } if (aiResponse.Result.Action == "Cheese") { textProcessingServiceRespone.WayPoint = "cheese"; } textProcessingServiceRespone.IntentName = aiResponse.Result.Action; } else { textProcessingServiceRespone.IntentName = "none"; } //DEBUG INFO #region DebugInfo if (SHOW_DEBUG_INFO) { Console.WriteLine("Id: {0} | BOT PARAMS:", textRequest.Id.Value); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("Intent {0}", textProcessingServiceRespone.IntentName); Console.WriteLine("\tName\t\t\t|Value"); Console.ForegroundColor = ConsoleColor.DarkGreen; foreach (var parametr in textProcessingServiceRespone.Entities) { Console.WriteLine("\t{0,-23} |{1}", parametr.Key, parametr.Value); } Console.WriteLine(textProcessingServiceRespone.WayPoint); Console.ForegroundColor = ConsoleColor.Gray; /* * Console.WriteLine("User: "******"Masha: " + outputText); * Console.ForegroundColor = ConsoleColor.DarkMagenta; * Console.WriteLine("BOT CONTEXTS:"); * foreach (var context in aiResponse.Result.Contexts) * { * Console.ForegroundColor = ConsoleColor.DarkCyan; * Console.WriteLine("## {0}", context.Name); * Console.ForegroundColor = ConsoleColor.Gray; * Console.WriteLine("\tName\t\t\t|Value"); * Console.ForegroundColor = ConsoleColor.DarkGreen; * foreach (var parameter in context.Parameters) * Console.WriteLine("\t{0,-23} |{1}", parameter.Key, parameter.Value); * } * Console.ForegroundColor = ConsoleColor.Gray; * * Console.ForegroundColor = ConsoleColor.DarkMagenta; * Console.WriteLine("BOT PARAMS:"); * Console.ForegroundColor = ConsoleColor.Gray; * Console.WriteLine("\tName\t\t\t|Value"); * Console.ForegroundColor = ConsoleColor.DarkGreen; * foreach (var parametr in aiResponse.Result.Parameters) * { * Console.WriteLine("\t{0,-23} |{1}", parametr.Key, parametr.Value); * } * Console.ForegroundColor = ConsoleColor.Gray; */ } #endregion Log.LogInformation(textRequest.Id.Value, 0, this.GetType().ToString(), $"service end work in {(DateTime.Now - time).Milliseconds} ms"); //Console.WriteLine("WayPoint: " + textProcessingServiceRespone.WayPoint); return(textProcessingServiceRespone); } }
public static AbstractRequest GetRequestEntity(XDocument doc) { RequestMsgType msgType = MsgTypeHelper.GetMsgType(doc); AbstractRequest entity = null; switch (msgType) { case RequestMsgType.Text: entity = new TextRequest(); break; case RequestMsgType.Image: entity = new ImageRequest(); break; case RequestMsgType.Voice: entity = new VoiceRequest(); break; case RequestMsgType.Video: entity = new VideoRequest(); break; case RequestMsgType.Location: entity = new LocationRequest(); break; case RequestMsgType.Link: entity = new LinkRequest(); break; case RequestMsgType.Event: switch (EventTypeHelper.GetEventType(doc)) { case RequestEventType.Subscribe: entity = new SubscribeEventRequest(); goto Label_00C5; case RequestEventType.UnSubscribe: entity = new UnSubscribeEventRequest(); goto Label_00C5; case RequestEventType.Scan: entity = new ScanEventRequest(); goto Label_00C5; case RequestEventType.Location: entity = new LocationEventRequest(); goto Label_00C5; case RequestEventType.Click: entity = new ClickEventRequest(); goto Label_00C5; } throw new ArgumentOutOfRangeException(); default: throw new ArgumentOutOfRangeException(); } Label_00C5: EntityHelper.FillEntityWithXml <AbstractRequest>(entity, doc); return(entity); }
public static AbstractRequest GetRequestEntity(XDocument doc) { RequestMsgType msgType = MsgTypeHelper.GetMsgType(doc); AbstractRequest entity = null; switch (msgType) { case RequestMsgType.Text: entity = new TextRequest(); break; case RequestMsgType.Image: entity = new ImageRequest(); break; case RequestMsgType.Voice: entity = new VoiceRequest(); break; case RequestMsgType.Video: entity = new VideoRequest(); break; case RequestMsgType.Location: entity = new LocationRequest(); break; case RequestMsgType.Link: entity = new LinkRequest(); break; case RequestMsgType.Event: //switch (EventTypeHelper.GetEventType(doc)) switch (doc.Root.Element("Event").Value.ToUpper()) { //case RequestEventType.Subscribe: case "SUBSCRIBE"://订阅(关注) entity = new SubscribeEventRequest(); goto Label_00D1; //case RequestEventType.UnSubscribe: case "UNSUBSCRIBE"://取消订阅(关注) entity = new UnSubscribeEventRequest(); goto Label_00D1; //case RequestEventType.Scan: case "SCAN"://二维码扫描 entity = new ScanEventRequest(); goto Label_00D1; //case RequestEventType.Location: case "LOCATION"://地理位置 entity = new LocationEventRequest(); goto Label_00D1; //case RequestEventType.Click: case "CLICK"://菜单点击 entity = new ClickEventRequest(); goto Label_00D1; //case RequestEventType.MASSSENDJOBFINISH: case "MASSSENDJOBFINISH": entity = new MassendJobFinishEventRequest(); goto Label_00D1; case "VIEW": entity = new ViewEventRequest(); goto Label_00D1; //default://其他意外类型(也可以选择抛出异常) // entity = new AbstractRequest(); // goto Label_00D1; } throw new ArgumentOutOfRangeException(); default: throw new ArgumentOutOfRangeException(); } Label_00D1: //EntityHelper.FillEntityWithXml<AbstractRequest>(entity, doc); //修改无法解析完整数据 2017.7.4 EntityHelper.FillEntityWithXml(entity, doc); new Regex(@"<MsgID>(?<url>\d+)</MsgID>"); if (entity.MsgId == 0L) { Match match = Regex.Match(doc.Root.ToString(), @"<MsgID>(?<msgid>\d+)</MsgID>", RegexOptions.IgnoreCase); if (match.Success) { entity.MsgId = long.Parse(match.Groups["msgid"].Value); entity.CreateTime = DateTime.Now; } } return entity; }