예제 #1
0
        public async Task <string> Dialogflow([FromBody] Richiesta request)
        {
            // url dialogflow
            string url    = "https://api.api.ai/v1/query?v=20150910";
            string apikey = "776c7c6814ee4d5da82a213e673f46a4";
            //Richiesta request;

            bool     status     = false;
            string   dialog_res = "";
            var      response   = new HttpResponseMessage();
            Risposta resp;
            string   res_string;
            content  cont;
            // creazione request
            HttpClient req    = new HttpClient();
            var        values = new Dictionary <string, string>
            {
                { "query", "\"" + request.content + "\"" },
                { "lang", "it" },
                { "sessionId", "somerandomthing" }
            };
            var content = new StringContent(
                JsonConvert.SerializeObject(values, Formatting.Indented),
                Encoding.UTF8,
                "application/json"
                );

            req.DefaultRequestHeaders.Add("Authorization", "Bearer " + apikey);
            //Response ret= new Response("");
            //req.DefaultRequestHeaders.Add("Content-Type", "application/json");
            try
            {
                response = await req.PostAsync(url, content);

                string responseString = await response.Content.ReadAsStringAsync();

                JObject obj = JObject.Parse(responseString);
                dialog_res = obj["result"]["fulfillment"]["speech"].ToString();
                //string diag_int = obj["result"]["metadata"]["intentName"].ToString();

                //ret = new Response(dialog_res);
                status = true;

                List <content> conts = new List <Controllers.content>();
                switch (dialog_res)
                {
                case "news":
                    News n = new News();
                    if (request.user == "")
                    {
                        foreach (News t in n.select())
                        {
                            cont = new content(t.testo, t.news);
                            conts.Add(cont);
                        }
                    }
                    else
                    {
                        foreach (News t in n.selectusernews(request.user))
                        {
                            cont = new content(t.testo, t.news);
                            conts.Add(cont);
                        }
                    }
                    resp       = new Risposta(conts, status);
                    res_string = JsonConvert.SerializeObject(resp);
                    return(res_string);

                    break;

                case "services":
                    Servizio s = new Servizio();
                    if (request.user == "")
                    {
                        foreach (Servizio t in s.select())
                        {
                            cont = new content(t.descrizione);
                            conts.Add(cont);
                        }
                    }
                    else
                    {
                        foreach (Servizio t in s.selectServiziUtente(request.user))
                        {
                            cont = new content(t.descrizione);
                            conts.Add(cont);
                        }
                    }
                    resp       = new Risposta(conts, status);
                    res_string = JsonConvert.SerializeObject(resp);
                    return(res_string);

                    break;

                default:
                    resp       = new Risposta(dialog_res, status);
                    res_string = JsonConvert.SerializeObject(resp);
                    return(res_string);

                    break;
                }
            }
            catch
            {
                status     = false;
                resp       = new Risposta("Servizio non disponibile", status);
                res_string = JsonConvert.SerializeObject(resp);
                return(res_string);
            }
        }
예제 #2
0
        public JsonResult Get()
        {
            Servizio s = new Servizio();

            return(Json(s.select()));
        }