public void DeveRetornarMensagemInicialQuandoProvocado() { var _session = Guid.NewGuid().ToString(); var client = new WitClient(WIT_TOKEN); var context = new Dictionary <string, object>(); // enviar a primeira mensagem //context.Add("transporte", "transporte aereo"); var reply1 = client.Converse(_session, "transporte", context); //Assert.IsNotNull(reply1.msg); Assert.IsNotNull(reply1.action); Assert.IsTrue(reply1.action == "getOrgaos"); Assert.IsTrue(reply1.entities.Count > 0); var orgaos = new string[] { "ANAC", "ANVISA", "DPF" }; context.Add("orgaos", string.Join(",", orgaos)); var reply2 = client.Converse(_session, string.Empty, context); Assert.IsNotNull(reply2.msg); Assert.IsNotNull(reply2.entities); var reply3 = client.Converse(_session, "ANAC", context); Assert.IsNotNull(reply3.entities); context.Add("orgao", "ANAC"); var reply4 = client.Converse(_session, string.Empty, context); Assert.IsNotNull(reply4.msg); Assert.IsNotNull(reply4.entities); var reply5 = client.Converse(_session, "O meu problema é mala extraviada", context); Assert.IsNotNull(reply5.msg); Assert.IsNotNull(reply5.entities); }
public IList <string> GetIntentsFromMessage(string fromId, string text) { if (Client == null) { Client = new WitClient(ConnectionStrings["WitAiKey"].ConnectionString); } try { return(Client.Converse(fromId, text)?.entities["intent"].Select(x => x.value.ToString()).ToList()); } catch (KeyNotFoundException ex) { return(new List <string>()); } }
/// <summary> /// POST: api/Messages /// Receive a message from a user and reply to it /// </summary> public async Task <HttpResponseMessage> Post([FromBody] Activity activity) { if (activity.Type == ActivityTypes.Message) { ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl)); var wit = new WitClient("G6AM4AHSKKP4EQYJ35ZWJ723H5DDHTAX"); var msg = wit.Converse(activity.From.Id, activity.Text); var intent = string.Empty; double conf = 0; if (msg.entities["intent"] != null) { foreach (var z in msg.entities["intent"]) { if (z.confidence > conf) { conf = z.confidence; intent = z.value.ToString(); } } } var doc = XDocument.Load(System.Web.HttpContext.Current.Request.MapPath("~/Responses.xml")); var r = (from x in doc.Descendants("Response") where x.Attribute("intent").Value == intent select x).FirstOrDefault(); string res = "Я вас не понимаю..."; if (r != null) { var arr = (from x in r.Descendants("Text") select x.Value).ToArray(); if (arr != null && arr.Length > 0) { var rnd = new Random(); res = arr[rnd.Next(0, arr.Length)]; } } Activity reply = activity.CreateReply(res); await connector.Conversations.ReplyToActivityAsync(reply); } else { HandleSystemMessage(activity); } var response = Request.CreateResponse(HttpStatusCode.OK); return(response); }
/// <summary> /// POST: api/Messages /// Receive a message from a user and reply to it /// </summary> public async Task<HttpResponseMessage> Post([FromBody]Activity activity) { if (activity.Type == ActivityTypes.Message) { ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl)); var Wit = new WitClient("ATE6CNKHWOVA5B6J2U7EI4HIYIIJOAPI"); var msg = Wit.Converse(activity.From.Id, activity.Text); foreach (var x in msg.entities) { Activity reply = activity.CreateReply($"key={x.Key}, value={x.Value.First().value}"); await connector.Conversations.ReplyToActivityAsync(reply); } } else { HandleSystemMessage(activity); } var response = Request.CreateResponse(HttpStatusCode.OK); return response; }
public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable <IMessageActivity> argument) { var message = await argument; var wit = new WitClient("TIFXIBFNFSADNG56RNDJQ7V6VOP5Q554"); var msg = wit.Converse(message.From.Id, message.Text); var intentWord = string.Empty; double conf = 0; try { var intent = msg.entities["intent"].OrderByDescending(x => x.confidence).FirstOrDefault(); if (intent != null) { intentWord = intent.value.ToString(); } } catch (System.Collections.Generic.KeyNotFoundException ex) { } await context.PostAsync($"{this.count++}: You said {message.Text}. Action is {intentWord}"); context.Wait(MessageReceivedAsync); //if (message.Text == "reset") //{ // PromptDialog.Confirm( // context, // AfterResetAsync, // "Are you sure you want to reset the count?", // "Didn't get that!", // promptStyle: PromptStyle.None); //} //else //{ // await context.PostAsync($"{this.count++}: You said {message.Text}"); // context.Wait(MessageReceivedAsync); //} }
/// <summary> /// POST: api/Messages /// Receive a message from a user and reply to it /// </summary> public async Task <HttpResponseMessage> Post([FromBody] Activity activity) { ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl)); switch (activity.Type) { case ActivityTypes.Message: WitClient wit = new WitClient("57O7M43QDRWRDPFTDU7ABTOYYCECYDTO"); var msg = wit.Converse(activity.From.Id, activity.Text); var intent = string.Empty; double conf = 0; try { if (msg.entities["intent"] != null) { foreach (var z in msg.entities["intent"]) { if (z.confidence > conf) { conf = z.confidence; intent = z.value.ToString(); } } } } catch (KeyNotFoundException) { } Activity reply = activity.CreateReply(); switch (intent) { case "cat": reply.Text = "Ловіть котика :)"; reply.Attachments = new List <Attachment>(); //****** INIT var ts = DateTime.Now; reply.Attachments.Add(new Attachment() { ContentUrl = $"http://thecatapi.com/api/images/get?format=src&type=png×tamp=" + $"{ts}", ContentType = "image/png" }); break; case "ЛКП": string searchQuery = ""; activity.Text = activity.Text.ToLower(); if (activity.Text.StartsWith("лкп пошук ")) { searchQuery = activity.Text.Replace("лкп пошук ", ""); } string json = ""; using (WebClient cl = new WebClient()) { json = cl.DownloadString($"http://opendata.city-adm.lviv.ua/api/action/datastore_search?resource_id=b12f1a20-2b1e-4b60-aead-91c1c5b75a85&q={searchQuery}"); } dynamic result = JObject.Parse(json); if (result.success == true) { reply.Text = $"За запитом {result.result.q} ми знайшли такі дані: {result.result.records[0].name}. {result.result.records[0].status} за адресою {result.result.records[0].adress_street} {result.result.records[0].adreess_building}. Директором є {result.result.records[0].director}"; } if (result.result.q == "львівсвітло") { reply.Text += @" Контактні номери: +38 (032) 242-19-33 +38 (067) 341-33-75"; } break; // TODO default: reply.Text = GetReplyFromDb(intent); break; } await connector.Conversations.ReplyToActivityAsync(reply); break; } // return our reply to the user HandleSystemMessage(activity); var response = Request.CreateResponse(HttpStatusCode.OK); return(response); }
/// <summary> /// POST: api/Messages /// Receive a message from a user and reply to it /// </summary> public async Task <HttpResponseMessage> Post([FromBody] Activity activity) { ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl)); switch (activity.Type) { case ActivityTypes.Message: WitClient wit = new WitClient("ZHKXGGSDV7VISTIZDWQOPWJ7DZYQ3APD"); var msg = wit.Converse(activity.From.Id, activity.Text); var intent = string.Empty; double conf = 0; try { var a = msg.entities["intent"]; if (a != null) { foreach (var z in msg.entities["intent"]) { if (z.confidence > conf) { conf = z.confidence; intent = z.value.ToString(); } } } } catch (KeyNotFoundException) { } Activity reply = activity.CreateReply(); switch (intent) { case "статистика вступу": reply.Attachments = new List <Attachment>(); Attachment attachment = new Attachment(); attachment.ContentType = "image/png"; attachment.ContentUrl = @"http://image.prntscr.com/image/ee2502f6a68041e1813f1bcd125a8bb2.png"; Attachment secondAttachment = new Attachment(); secondAttachment.ContentType = "image/png"; secondAttachment.ContentUrl = @"http://image.prntscr.com/image/258aa8e844d74ab7b63447a9f551ecbd.png"; reply.Attachments.Add(attachment); reply.Attachments.Add(secondAttachment); reply.Text = GetReplyFromDb(intent); break; case "фото": var photo = GetRandomPhoto(); reply.Attachments = new List <Attachment>(); Attachment attachment1 = new Attachment(); attachment1.ContentType = "image/png"; attachment1.ContentUrl = photo.photoLink; reply.Attachments.Add(attachment1); reply.Text = photo.descrip; break; default: reply.Text = GetReplyFromDb(intent); break; } await connector.Conversations.ReplyToActivityAsync(reply); break; default: break; } var response = Request.CreateResponse(HttpStatusCode.OK); return(response); }