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>());
            }
        }
Exemple #3
0
        /// <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;
        }
Exemple #5
0
        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);
            //}
        }
Exemple #6
0
        /// <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&timestamp=" + $"{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);
        }
Exemple #7
0
        /// <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);
        }