Beispiel #1
0
        public JsonResult ValidarIntencion(string nombreIntencion)
        {
            var respuesta = new Intencion();

            try
            {
                var intencion = new Dialogflow.DialogFlow(oIBLSolicitud).ObtenerIntentoDialogFlow(nombreIntencion);

                if (intencion != null)
                {
                    if (nombreIntencion.Equals(intencion.Nombre))
                    {
                        respuesta.ValidacionIntencion = "EXISTE";
                        respuesta.IdDialogFlow        = intencion.Id;
                    }
                }
            }
            catch (Exception ex)
            {
            }

            return(new JsonResult {
                Data = respuesta, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }
Beispiel #2
0
        public AlertModel DeleteIntent(Intencion intencion)
        {
            var intento   = new IntentoModel();
            var resultado = new AlertModel();

            try
            {
                var fileSavePath = System.Web.HttpContext.Current.Server.MapPath("~/Dialogflow.json/") + ConstantesWeb.DialogFlow.FilePrivateKeyIdJson;

                if ((System.IO.File.Exists(fileSavePath)))
                {
                    var cred    = GoogleCredential.FromFile(fileSavePath);
                    var channel = new Channel(SessionsClient.DefaultEndpoint.Host, SessionsClient.DefaultEndpoint.Port, cred.ToChannelCredentials());
                    var client  = IntentsClient.Create(channel);


                    client.DeleteIntent(new IntentName(ConstantesWeb.DialogFlow.ProjectId, intencion.IdDialogFlow));

                    oIBLSolicitud.EliminarIntencionConsulta(intencion.IdDialogFlow);

                    resultado.Mensaje = "DELETE-OK";
                }
            }
            catch (Exception ex)
            {
                resultado.MessageError = "ERROR: " + ex.Message;
                resultado.Mensaje      = "DELETE-ERROR";
            }

            return(resultado);
        }
        public string CodeIntencionById(Intencion obj)
        {
            dbContext.Entry(obj).State = System.Data.Entity.EntityState.Detached;

            var code = dbContext.Intencions.Find(obj.IntencionID).CodigoIntencion;

            return(code);
        }
Beispiel #4
0
    public void Puntuar(string palabra, Intencion intencion)
    {
        int usuario = player1 ? 0 : 1;

        puntaje.SumarPuntaje(intencion, usuario);

        Debug.Log("Puntaje 1: " + puntaje.Usuario1 + "\t| Puntaje 2: " + puntaje.Usuario2);
    }
Beispiel #5
0
    //  Controlador del conjunto de frases.
    //private Patron patron;

    private void Awake()
    {
        contenido = GetComponent <TextMeshPro>();
        espacio   = GetComponentInChildren <Espacio>();

        palabras  = new Posibilidades();
        intencion = Intencion.agresivo;
    }
Beispiel #6
0
    public void Celebrar(string i, Intencion a)
    {
        if (puntaje == null)
        {
            puntaje = GameManager.Instance.gameObject.GetComponent <Puntaje>();
        }

        puntaje.Celebrar(i, a);
    }
Beispiel #7
0
    //  Define la palabra escogible.
    public override void Inicializar(string palabra, Intencion intencion)
    {
        //  Establece la palabra y la intención.
        this.palabra   = palabra;
        this.intencion = intencion;
        //  Muestra la palabra.
        UI.Instance.MostrarPalabra(gameObject, palabra);

        //  La palabra no ha sido escogida.
        escogida = false;
    }
Beispiel #8
0
    public void Celebrar(string i, Intencion a)
    {
        palabraEscogida = true;

        Puntos = Puntuar(intFrase, a);

        bool encadenado = false;

        Celebra = CelebrationType.Descansa;

        if (Puntos == 1)
        {
            Celebra = CelebrationType.Fuerte;
        }
        else if (Puntos == 0.5f)
        {
            if (puntajeAnterior == Puntos)
            {
                Celebra    = CelebrationType.Fuerte;
                encadenado = true;
            }
            else
            {
                Celebra = CelebrationType.Media;
            }
        }
        else if (Puntos == 0.25f)
        {
            if (puntajeAnterior == Puntos)
            {
                Celebra    = CelebrationType.Descansa;
                encadenado = true;
            }
            else
            {
                Celebra = CelebrationType.Breve;
            }
        }

        if (!encadenado)
        {
            puntajeAnterior = Puntos;
        }
        else
        {
            puntajeAnterior = 0;
        }

        //StartCoroutine(Celebracion());

        //Debug.Log("Celebración: " + Celebra);
        //Debug.Log("Encadenado: " + encadenado);
    }
Beispiel #9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="intencionNombre"></param>
        /// <returns></returns>
        public ReturnObject <Intencion> ObtenerIntencion(string intencionNombre)
        {
            ReturnObject <Intencion> obj = new ReturnObject <Intencion>();

            obj.OneResult = new Intencion();

            try
            {
                using (var cnn = MSSQLSERVERCnx.MSSqlCnx())
                {
                    SqlCommand cmd = null;
                    cnn.Open();

                    cmd             = new SqlCommand(SP.GSAV_SP_BUSCAR_INTENCION_X_NOMBRE, cnn);
                    cmd.CommandType = CommandType.StoredProcedure;

                    cmd.Parameters.AddWithValue("@P_INTENCION_NOMBRE", intencionNombre);


                    SqlDataReader rd = cmd.ExecuteReader();
                    if (rd.HasRows)
                    {
                        while (rd.Read())
                        {
                            var intencion = new Intencion();
                            intencion.IdIntencionConsulta = rd.GetInt32(rd.GetOrdinal("IDINTENCIONCONSULTA"));
                            intencion.Nombre                    = (rd.GetValue(rd.GetOrdinal("NOMBRE")) == DBNull.Value) ? string.Empty : rd.GetString(rd.GetOrdinal("NOMBRE"));
                            intencion.IdPadreIntencion          = (rd.GetValue(rd.GetOrdinal("IDPADREINTENCION")) == DBNull.Value) ? 0 : rd.GetInt32(rd.GetOrdinal("IDPADREINTENCION"));
                            intencion.IdDialogFlow              = (rd.GetValue(rd.GetOrdinal("IDDIALOGFLOW")) == DBNull.Value) ? string.Empty : rd.GetString(rd.GetOrdinal("IDDIALOGFLOW"));
                            intencion.FechaCreacion             = rd.GetDateTime(rd.GetOrdinal("FECHACREACION"));
                            intencion.StrFechaCreacion          = FormatearFechaEsp(intencion.FechaCreacion);
                            intencion.DescripcionIntencionPadre = (rd.GetValue(rd.GetOrdinal("DESC_INTENCION_PADRE")) == DBNull.Value) ? string.Empty : rd.GetString(rd.GetOrdinal("DESC_INTENCION_PADRE"));
                            obj.OneResult = intencion;
                        }
                    }

                    obj.Success = true;
                }
            }
            catch (Exception ex)
            {
                obj.Success      = false;
                obj.ErrorMessage = ex.Message;
            }

            return(obj);
        }
Beispiel #10
0
        public ReturnObject <List <Intencion> > ObtenerIntencionesFrecuentes()
        {
            ReturnObject <List <Intencion> > obj = new ReturnObject <List <Intencion> >();

            obj.OneResult = new List <Intencion>();

            try
            {
                using (var cnn = MSSQLSERVERCnx.MSSqlCnx())
                {
                    SqlCommand cmd = null;
                    cnn.Open();

                    cmd             = new SqlCommand(SP.GSAV_SP_BUSCAR_INTENCIONES_FRECUENTES, cnn);
                    cmd.CommandType = CommandType.StoredProcedure;


                    SqlDataReader rd = cmd.ExecuteReader();
                    if (rd.HasRows)
                    {
                        while (rd.Read())
                        {
                            var intencion = new Intencion();
                            intencion.IdIntencionConsulta = rd.GetInt32(rd.GetOrdinal("IdIntencionConsulta"));
                            intencion.Nombre           = (rd.GetValue(rd.GetOrdinal("Nombre")) == DBNull.Value) ? string.Empty : rd.GetString(rd.GetOrdinal("Nombre"));
                            intencion.IdPadreIntencion = (rd.GetValue(rd.GetOrdinal("IdPadreIntencion")) == DBNull.Value) ? 0 : rd.GetInt32(rd.GetOrdinal("IdPadreIntencion"));
                            intencion.IdDialogFlow     = (rd.GetValue(rd.GetOrdinal("IdDialogFlow")) == DBNull.Value) ? string.Empty : rd.GetString(rd.GetOrdinal("IdDialogFlow"));
                            intencion.FechaCreacion    = rd.GetDateTime(rd.GetOrdinal("FechaCreacion"));
                            intencion.StrFechaCreacion = FormatearFechaEsp(intencion.FechaCreacion);
                            obj.OneResult.Add(intencion);
                        }
                    }

                    obj.Success = true;
                }
            }
            catch (Exception ex)
            {
                obj.Success      = false;
                obj.ErrorMessage = ex.Message;
            }

            return(obj);
        }
Beispiel #11
0
        public bool sendEmail(Intencion solicitud, string body)
        {
            bool status = false;

            try
            {
                if (solicitud != null)
                {
                    var senderEmail   = new MailAddress("*****@*****.**", "Itla Puntos Técnologicos");
                    var receiverEmail = new MailAddress(solicitud.Email, solicitud.Nombres + " " + solicitud.Apellidos);
                    var password      = "******";
                    var sub           = "Solicitud Intención Recibida";
                    //var body = "HTML";
                    var smtp = new SmtpClient
                    {
                        Host                  = "smtp.gmail.com",
                        Port                  = 587,
                        EnableSsl             = true,
                        DeliveryMethod        = SmtpDeliveryMethod.Network,
                        UseDefaultCredentials = false,
                        Credentials           = new NetworkCredential(senderEmail.Address, password)
                    };
                    using (var mess = new MailMessage(senderEmail, receiverEmail)
                    {
                        Subject = sub,
                        Body = body,
                        IsBodyHtml = true
                    })
                    {
                        smtp.Send(mess);
                    }
                    //this.Logger("Email Enviado Correctamente"+ solicitud.Email, "ITLA_PE", "EmailSender", "Email status True");
                    status = true;
                    return(status);
                }
            }
            catch (Exception ex)
            {
                // this.Logger(ex.ToString(),"ITLA_PE","EmailSender","Error Email status False"+ solicitud.Email);
                status = false;
            }
            return(status);
        }
Beispiel #12
0
        public Intencion BuscarIntencionConsulta(string intencion)
        {
            var categoria = new Intencion();

            try
            {
                var cnxOracle = ConfigurationManager.ConnectionStrings[ConnectionName].ToString();

                using (var oCnn = new OracleConnection(cnxOracle))
                {
                    OracleCommand oCmd = null;
                    oCnn.Open();
                    oCmd = new OracleCommand("SP_BUSCARINTENCIONCONSULTA", oCnn)
                    {
                        CommandType = CommandType.StoredProcedure
                    };
                    oCmd.Parameters.Add(new OracleParameter("pIntencion", OracleDbType.Varchar2)).Value     = intencion;
                    oCmd.Parameters.Add(new OracleParameter("RESULTADO", OracleDbType.RefCursor)).Direction = ParameterDirection.Output;
                    var rd = oCmd.ExecuteReader();
                    if (rd.HasRows)
                    {
                        if (rd.Read())
                        {
                            categoria = new Intencion()
                            {
                                IdIntencion = rd.GetInt32(rd.GetOrdinal("IDINTENCIONCONSULTA")),
                                NombreBase  = rd.GetString(rd.GetOrdinal("NOMBRE"))
                            };
                        }
                    }
                }

                return(categoria);
            }
            catch (Exception)
            {
                //LogError(ex);
            }

            return(null);
        }
Beispiel #13
0
        public JsonResult EliminarIntencion(string id)
        {
            var resultado = new AlertModel();

            try
            {
                if (!string.IsNullOrEmpty(id))
                {
                    var intencion = new Intencion();
                    intencion.IdDialogFlow = id;
                    resultado = new Dialogflow.DialogFlow(oIBLSolicitud).DeleteIntent(intencion);
                }
            }
            catch (Exception ex)
            {
            }

            return(new JsonResult {
                Data = resultado, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }
Beispiel #14
0
 public Intencion IntencionAdd(ModelIntencion obj)
 {
     //var guid = new Guid();
     try
     {
         Guid guids     = Guid.NewGuid();
         var  solicitud = new Intencion
         {
             Nombres   = obj.Nombres,
             Apellidos = obj.Apellidos,
             GenericID_NivelAcademico = obj.GenericID_NivelAcademico,
             DireccionCalleNumero     = obj.DireccionCalleNumero,
             DireccionidMunicipio     = obj.DireccionidMunicipio,
             Email           = obj.Email,
             FechaNacimiento = obj.FechaNacimiento,
             GenericID_TipoIdentificacion = obj.GenericID_TipoIdentificacion,
             IdentificacionCedula         = obj.IdentificacionCedula.Replace("-", ""),
             ResultadoComentario          = obj.Apellidos,
             TelCelular       = obj.TelCelular,
             TelResidencial   = obj.TelResidencial,
             RowID            = guids,
             ProvinciaId      = obj.ProvinciaId,
             Ingreso_Familiar = obj.Ingreso_Familiar,
             TieneInternet    = obj.TieneInternet,
             TieneLaptopPc    = obj.TieneLaptopPc,
             TieneSubsidio    = obj.TieneSubsidio,
             FechaCreacion    = DateTime.Now,
             CarreraID        = obj.CarreraID
         };
         var result = dbContext.Intencions.Add(solicitud);
         dbContext.SaveChanges();
         // this.Logger("Solicitud Creada correctamente", "ITLA_PE", "SolicitudAdd", "Solicitud Creada para: "+ result.SolicitudID+" "+result.Nombres+" "+result.Apellidos);
         return(result);
     }
     catch (Exception ex)
     {
         // this.Logger(ex.ToString(), "ITLA_PE", "SolicitudAdd", "Error creando solicitud");
         throw ex;
     }
 }
Beispiel #15
0
        public JsonResult ActualizarIntencion(string id, string nombreIntencion, string frases, string respuesta, string idIntencionPadre)
        {
            var resultado = new AlertModel();

            try
            {
                if (!string.IsNullOrEmpty(id))
                {
                    if (id.Equals("NEW"))
                    {
                        var intencion = new Intencion();
                        intencion.IdDialogFlow     = id;
                        intencion.Nombre           = nombreIntencion;
                        intencion.Respuesta        = respuesta;
                        intencion.IdIntencionPadre = idIntencionPadre;

                        var frases_ = JsonConvert.DeserializeObject <List <FraseEntrenamientoModel> >(frases);
                        resultado = new Dialogflow.DialogFlow(oIBLSolicitud).CreateIntent(intencion, frases_);
                    }
                    else
                    {
                        var intencion = new Intencion();
                        intencion.IdDialogFlow     = id;
                        intencion.Respuesta        = respuesta;
                        intencion.IdIntencionPadre = idIntencionPadre;

                        var frases_ = JsonConvert.DeserializeObject <List <FraseEntrenamientoModel> >(frases);
                        resultado = new Dialogflow.DialogFlow(oIBLSolicitud).UpdateIntent(intencion, frases_);
                    }
                }
            }
            catch (Exception ex)
            {
            }

            return(new JsonResult {
                Data = resultado, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }
Beispiel #16
0
        public Intencion BuscarIntencionConsulta(string nombreIntencion)
        {
            var intencion = new Intencion();

            try
            {
                using (var cnn = MSSQLSERVERCnx.MSSqlCnx())
                {
                    SqlCommand cmd = null;
                    cnn.Open();

                    cmd = new SqlCommand(SP.GSAV_SP_BUSCARINTENCIONCONSULTA, cnn)
                    {
                        CommandType = CommandType.StoredProcedure
                    };
                    cmd.Parameters.AddWithValue("@P_INTENCION_NOMBRE", nombreIntencion);

                    SqlDataReader rd = cmd.ExecuteReader();

                    if (rd.HasRows)
                    {
                        if (rd.Read())
                        {
                            intencion.IdIntencion = rd.GetInt32(rd.GetOrdinal("IDINTENCIONCONSULTA"));
                            intencion.NombreBase  = rd.GetString(rd.GetOrdinal("INTENCION_BASE"));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                LogError(ex);
            }

            return(intencion);
        }
Beispiel #17
0
 void LlenarEspacio(string palabra, Intencion intencion)
 {
     text.text = palabra.ToLower();
     //frase.PasarEspacio();
 }
Beispiel #18
0
 /*
  * private void Awake(string palabra)
  * {
  *  this.palabra = palabra;
  * }
  */
 public abstract void Inicializar(string palabra, Intencion intencion);
Beispiel #19
0
        public AlertModel UpdateIntent(Intencion intencion, List <FraseEntrenamientoModel> frases)
        {
            var intento   = new IntentoModel();
            var resultado = new AlertModel();

            try
            {
                var fileSavePath = System.Web.HttpContext.Current.Server.MapPath("~/Dialogflow.json/") + ConstantesWeb.DialogFlow.FilePrivateKeyIdJson;

                if ((System.IO.File.Exists(fileSavePath)))
                {
                    var cred = GoogleCredential.FromFile(fileSavePath);

                    var channel = new Channel(SessionsClient.DefaultEndpoint.Host, SessionsClient.DefaultEndpoint.Port, cred.ToChannelCredentials());

                    var client = IntentsClient.Create(channel);

                    GetIntentRequest getRequest = new GetIntentRequest
                    {
                        IntentName = new IntentName(ConstantesWeb.DialogFlow.ProjectId, intencion.IdDialogFlow),
                        IntentView = IntentView.Full
                    };


                    var intent = client.GetIntent(getRequest);



                    //Actualizar Frases de Entrenamiento
                    intent.TrainingPhrases.Clear();
                    foreach (var frase_ in frases)
                    {
                        var trainingPhrasesParts = new List <string>();
                        trainingPhrasesParts.Add(frase_.Descripcion);
                        var phraseParts = new List <Intent.Types.TrainingPhrase.Types.Part>();
                        foreach (var part in trainingPhrasesParts)
                        {
                            phraseParts.Add(new Intent.Types.TrainingPhrase.Types.Part()
                            {
                                Text = part
                            });
                        }
                        var trainingPhrase = new Intent.Types.TrainingPhrase();
                        trainingPhrase.Parts.AddRange(phraseParts);
                        intent.TrainingPhrases.Add(trainingPhrase);
                    }

                    //Actualizar Respuesta
                    intent.Messages.Clear();
                    var text = new Intent.Types.Message.Types.Text();
                    text.Text_.Add(intencion.Respuesta);
                    var message_ = new Intent.Types.Message()
                    {
                        Text = text
                    };
                    intent.Messages.Add(message_);


                    UpdateIntentRequest updRequest = new UpdateIntentRequest
                    {
                        Intent = intent
                    };
                    Intent response = client.UpdateIntent(updRequest);


                    resultado.DisplayName = response.DisplayName;
                    resultado.Mensaje     = "UPDATE-OK";
                }
            }
            catch (Exception ex)
            {
                resultado.MessageError = "ERROR: " + ex.Message;
                resultado.Mensaje      = "UPDATE-ERROR";
            }

            return(resultado);
        }
Beispiel #20
0
        public static async Task Process(IDialogContext context)
        {
            var activity = context.Activity as Activity;

            Sesion sesion = context.UserData.GetValue <Sesion>("sesion");

            context.UserData.SetValue("Usuario", sesion.Nombre);

            var container = new Container();

            UnityConfig.RegisterTypes(container);

            /* 4.1.4   El Sistema crea una nueva Solicitud Académica con los datos indicados líneas abajo
             *  en la entidad[GSAV_SolicitudAcadémica], generando un código único */

            Solicitud solicitud = new Solicitud();

            if (context.UserData.ContainsKey("solicitud"))
            {
                solicitud = LeerSolicitud(sesion, context, activity, container);

                if (solicitud.Estado != "P")
                {
                    solicitud = CrearNuevaSolicitud(sesion, context, activity, container);
                }
            }
            else
            {
                solicitud = CrearNuevaSolicitud(sesion, context, activity, container);
            }

            try
            {
                DialogEngine handler = container.GetInstance <DialogEngine>();

                Result receivedResult = await handler.GetSpeechAsync(activity, sesion, context);

                IIntencion intencionManager = container.GetInstance <IIntencion>();

                /*
                 * 4.1.5   El Sistema valida si existe una “Intención de Consulta” para la pregunta
                 * ingresada por el alumno a través del Agente de Procesamiento de Lenguaje Natural.
                 * GSAV _RN013 – Tipos de Consultas Académicas
                 */
                if (receivedResult.ExistIntent)
                {
                    /*
                     * 4.1.6   El Sistema valida si la “Intención de Consulta” obtenida tiene una probabilidad
                     * mayor o igual al 80 %.GSAV _RN018– Porcentaje para respuestas certera
                     */

                    var intentScore = receivedResult.Intents.FirstOrDefault().Score;

                    if (receivedResult.ExistValidIntent)
                    {
                        string    intent    = receivedResult.GetValidIntent();
                        Intencion intencion = intencionManager.ObtenerCategoria(intent);

                        context.UserData.SetValue("result", receivedResult);

                        if (string.IsNullOrEmpty(intencion.NombreBase))
                        {
                            intencion.NombreBase = intent;
                        }

                        context.UserData.SetValue("intencion", intencion);

                        if (!string.IsNullOrEmpty(intent))
                        {
                            string dfParams  = receivedResult.Intents[0].Parameters;
                            string dfContext = receivedResult.OutputContexts;
                            Dictionary <string, string> listParams = JsonConvert.DeserializeObject <Dictionary <string, string> >(dfParams);
                            string course     = string.Empty;
                            string assignment = string.Empty;
                            int    number     = 0;

                            if (listParams.Count > 0)
                            {
                                if (listParams.ContainsKey("Curso"))
                                {
                                    course = listParams["Curso"];
                                    context.UserData.SetValue("Curso", course);
                                }

                                if (listParams.ContainsKey("Tarea"))
                                {
                                    assignment = listParams["Tarea"];
                                    context.UserData.SetValue("Tarea", assignment);
                                }

                                if (listParams.ContainsKey("number"))
                                {
                                    int.TryParse(listParams["number"], out number);
                                    context.UserData.SetValue("number", number);
                                }
                            }

                            var message = context.MakeMessage();

                            switch (intencion.NombreBase)
                            {
                            case "ActividadAcademica":
                                message.Text = $"Esta es una consulta de: {intent}";

                                context.PrivateConversationData.SetValue("custom", message.Text);

                                await context.PostAsync(message);

                                await ActualizarSolicitud(context, AppConstant.EstadoSolicitud.ATENDIDO);

                                context.Wait(MenuDialog.MessageReceivedAsync);
                                break;

                            case AppConstant.Intencion.PROGRAMACION:

                                if (receivedResult.Intents[0].AllRequiredParamsPresent)
                                {
                                    string fechaActividad = string.Empty;
                                    int    numberSelected = context.UserData.GetValue <int>("number");

                                    var actividadManager = container.GetInstance <IActividad>();

                                    List <ActivitiesByCourseViewModel> activities = actividadManager.GetActivitiesByCourse(solicitud.IdAlumno);

                                    var filtered = activities.Where(o => o.Curso == course && o.Actividad == assignment);

                                    ActivitiesByCourseViewModel a = new ActivitiesByCourseViewModel();

                                    if (filtered.Count() == 0)
                                    {
                                        //context.Call(new NoRespuestaDialog(), MenuDialog.ResumeAfterDerivedAcademicIntent);

                                        await ActualizarSolicitud(context, AppConstant.EstadoSolicitud.DERIVADA);

                                        context.Wait(MenuDialog.MessageReceivedAsync);

                                        return;
                                    }

                                    if (numberSelected > 0)
                                    {
                                        a = filtered.Where(o => o.NumeroActividad == numberSelected).FirstOrDefault();

                                        fechaActividad = a?.FechaActividad.ToString("dd MMMM yyyy");
                                    }
                                    else
                                    {
                                        a = filtered.Where(o => o.FechaActividad >= DateTime.Now).FirstOrDefault();

                                        fechaActividad = a?.FechaActividad.ToString("dd MMMM yyyy");
                                    }

                                    if (a == null)
                                    {
                                        a = new ActivitiesByCourseViewModel();
                                    }

                                    context.UserData.SetValue("Actividad", a);


                                    if (!string.IsNullOrEmpty(fechaActividad))
                                    {
                                        if (string.IsNullOrEmpty(receivedResult.Speech))
                                        {
                                            string tareaConNumero = assignment;

                                            if (number > 0)
                                            {
                                                tareaConNumero = $"{assignment} {number}";
                                            }

                                            receivedResult.Speech = $"La fecha de actividad de la {tareaConNumero} del Curso {course} es: {fechaActividad}";
                                        }
                                        else
                                        {
                                            receivedResult.Speech = receivedResult.Speech + " " + fechaActividad;
                                        }


                                        context.UserData.SetValue("result", receivedResult);

                                        await context.PostAsync(receivedResult.Speech);

                                        //await context.Forward(new MenuDialog(), MenuDialog.ResumeAfterSuccessAcademicIntent, context, CancellationToken.None);
                                        //context.Wait(MenuDialog.ResumeAfterSuccessAcademicIntent);
                                        //context.Call(new MenuDialog(), MenuDialog.ResumeAfterSuccessAcademicIntent);

                                        await ActualizarSolicitud(context, AppConstant.EstadoSolicitud.ATENDIDO);

                                        context.Wait(MenuDialog.MessageReceivedAsync);
                                    }
                                    else
                                    {
                                        //context.Wait(MenuDialog.ResumeAfterFailedAcademicIntent);
                                        //await context.PostAsync(receivedResult.Speech);
                                        await context.PostAsync("La información ingresada es invalida, ingrese nuevamente su consulta");

                                        //context.Call(new NoRespuestaDialog(), MenuDialog.ResumeAfterDerivedAcademicIntent);

                                        //await ActualizarSolicitud(context, AppConstant.EstadoSolicitud.FALTAINFORMACION);

                                        //context.Wait(MenuDialog.MessageReceivedAsync);

                                        //context.Call(new ProgramacionActividadesDialog(), MenuDialog.ResumeAfterSuccessAcademicIntent);

                                        await ActualizarSolicitud(context, AppConstant.EstadoSolicitud.INVALIDO);

                                        context.Wait(MenuDialog.MessageReceivedAsync);
                                    }
                                }
                                else
                                {
                                    if (string.IsNullOrEmpty(course))
                                    {
                                        var cursoManager = container.GetInstance <ICurso>();

                                        List <CourseByModuleViewModel> studentActiveCourses = cursoManager.GetCourseByModuleActive(solicitud.IdAlumno);

                                        var questions = studentActiveCourses.Select(x => x.Curso).ToList();;

                                        string QuestionPrompt     = "Por favor seleccione el curso?";
                                        string invalidCourseInput = "La información ingresada es invalida, ingrese nuevamente su consulta";

                                        PromptOptions <string> options = new PromptOptions <string>(QuestionPrompt, "", invalidCourseInput, questions, 0);   // Overrided the PromptOptions Constructor.
                                        PromptDialog.Choice(context, MenuDialog.OnCourseSelected, options);
                                    }
                                    else
                                    {
                                        await context.PostAsync(receivedResult.Speech);
                                    }

                                    context.Wait(MenuDialog.MessageReceivedAsync);
                                }

                                break;

                            case AppConstant.Intencion.CREDITOSCUSTOM:
                                if (receivedResult.Intents[0].AllRequiredParamsPresent)
                                {
                                    var actividadManager = container.GetInstance <IActividad>();

                                    List <ActivitiesByCourseViewModel> activities = actividadManager.GetActivitiesByCourse(solicitud.IdAlumno);

                                    var filtered = activities.Where(o => o.Curso == course);


                                    await context.PostAsync(receivedResult.Speech + " " + 0);

                                    //context.Wait(MenuDialog.ResumeAfterSuccessAcademicIntent);
                                    //context.Call(new MenuDialog(), MenuDialog.ResumeAfterSuccessAcademicIntent);
                                    context.Wait(MenuDialog.MessageReceivedAsync);
                                }
                                else
                                {
                                    if (string.IsNullOrEmpty(course))
                                    {
                                        var cursoManager = container.GetInstance <ICurso>();

                                        List <CourseByModuleViewModel> studentActiveCourses = cursoManager.GetCourseByModuleActive(solicitud.IdAlumno);

                                        var questions = studentActiveCourses.Select(x => x.Curso).ToList();;

                                        string QuestionPrompt     = "Por favor seleccione el curso?";
                                        string invalidCourseInput = "La información ingresada es invalida, ingrese nuevamente su consulta";

                                        PromptOptions <string> options = new PromptOptions <string>(QuestionPrompt, "", invalidCourseInput, questions, 0);   // Overrided the PromptOptions Constructor.
                                        PromptDialog.Choice(context, MenuDialog.OnCourseSelected, options);
                                    }
                                    else
                                    {
                                        await context.PostAsync(receivedResult.Speech);
                                    }

                                    context.Wait(MenuDialog.MessageReceivedAsync);
                                }

                                break;

                            case AppConstant.Intencion.CREDITOS:
                            case AppConstant.Intencion.ORGANIZACION:
                            case AppConstant.Intencion.CALENDARIO:
                                //case "OrganizacionAulaVirtual1":
                                //context.Call(new CalendarioDialog(), ResumeAfterSuccessAcademicIntent);
                                message      = context.MakeMessage();
                                message.Text = $"Esta es una consulta de: {intent}";

                                //receivedResult.Speech = message.Text;
                                context.PrivateConversationData.SetValue("custom", message.Text);

                                await context.PostAsync(message);

                                //context.Wait(MenuDialog.MessageReceivedAsync);
                                //context.Call(new MenuDialog(), ResumeAfterSuccessAcademicIntent);
                                //context.Wait(MenuDialog.ResumeAfterSuccessAcademicIntent);
                                //context.Call(new MenuDialog(), MenuDialog.ResumeAfterSuccessAcademicIntent);

                                await ActualizarSolicitud(context, AppConstant.EstadoSolicitud.ATENDIDO);

                                context.Wait(MenuDialog.MessageReceivedAsync);
                                break;

                            //case AppConstant.Intencion.ORGANIZACION:
                            //    context.Call(new OrganizacionDialog(), ResumeAfterSuccessAcademicIntent);
                            //    break;

                            case AppConstant.Intencion.MATRICULA:
                            case AppConstant.Intencion.ASISTENCIA:
                            case AppConstant.Intencion.RETIRO:
                            case AppConstant.Intencion.PROMEDIO:
                                //context.Call(new PreguntasFrecuentesDialog(), MenuDialog.ResumeAfterSuccessAcademicIntent);

                                //if (receivedResult.Speech.Equals(string.Empty))
                                //{
                                //    receivedResult.Speech = "Por favor, canalice su consulta vía Contacto UPC: http://www.upc.edu.pe/servicios/contacto-upc";
                                //}

                                await context.PostAsync(receivedResult.Speech);

                                await ActualizarSolicitud(context, AppConstant.EstadoSolicitud.ATENDIDO);

                                context.Wait(MenuDialog.MessageReceivedAsync);

                                break;

                            //case AppConstant.Intencion.CREDITOS:
                            //    context.Call(new CreditosDialog(), ResumeAfterSuccessAcademicIntent);
                            //    break;
                            case AppConstant.Intencion.DEFAULT:

                                if (receivedResult.Speech.Equals(string.Empty))
                                {
                                    receivedResult.Speech = "Por favor, canalice su consulta vía Contacto UPC: http://www.upc.edu.pe/servicios/contacto-upc";
                                }

                                await context.PostAsync(receivedResult.Speech);

                                await ActualizarSolicitud(context, AppConstant.EstadoSolicitud.INVALIDO);

                                context.Wait(MenuDialog.MessageReceivedAsync);

                                //context.Call(new NoRespuestaDialog(), MenuDialog.ResumeAfterFailedAcademicIntent);
                                break;


                            default:
                                //context.Call(new NoRespuestaDialog(), MenuDialog.ResumeAfterDerivedAcademicIntent);

                                await ActualizarSolicitud(context, AppConstant.EstadoSolicitud.DERIVADA);

                                context.Wait(MenuDialog.MessageReceivedAsync);
                                break;
                            }
                        }
                        else
                        {
                            var userName = context.UserData.GetValue <Sesion>("sesion").Nombre;
                            var message  = context.MakeMessage();
                            message.Text = $"Uhmmm... {userName} estoy entrenándome para ayudarte más adelante con este tipo de dudas.{Environment.NewLine} Pero recuerda que vía Contacto UPC:  http://www.upc.edu.pe/servicios/contacto-upc puedes resolver tus dudas o consultas.";

                            context.PrivateConversationData.SetValue("custom", message.Text);

                            await context.PostAsync(message);

                            await ActualizarSolicitud(context, AppConstant.EstadoSolicitud.INVALIDO);

                            //context.Wait(MenuDialog.ResumeGetAcademicIntent);
                            context.Wait(MenuDialog.MessageReceivedAsync);
                        }
                    }
                    else
                    {
                        //ExistValidIntent = false

                        //context.Call(new SinScoreDialog(), MenuDialog.ResumeAfterDerivedAcademicIntent);

                        var userName = context.UserData.GetValue <Sesion>("sesion").NombreApePaterno;

                        var message = context.MakeMessage();
                        message.Text = $"Uhmmm... {userName} estoy entrenándome para ayudarte más adelante con este tipo de dudas.{Environment.NewLine} Pero recuerda que vía Contacto UPC:  http://www.upc.edu.pe/servicios/contacto-upc puedes resolver tus dudas o consultas.";

                        context.PrivateConversationData.SetValue("custom", message.Text);

                        await context.PostAsync(message);

                        //context.Call(new MenuDialog(), MenuDialog.ResumeAfterUnknownAcademicIntent);
                        await ActualizarSolicitud(context, AppConstant.EstadoSolicitud.INVALIDO);

                        context.Wait(MenuDialog.MessageReceivedAsync);
                    }
                }
                else
                { //ExistIntent = false
                  //await ActualizarSolicitud(context, AppConstant.EstadoSolicitud.INVALIDO);
                  //context.Call(new SinScoreDialog(), MenuDialog.ResumeAfterUnknownAcademicIntent);
                    var userName = context.UserData.GetValue <Sesion>("sesion").NombreApePaterno;

                    string sinScoreDialogSpeech =
                        $"Uhmmm... {userName} estoy entrenándome para ayudarte más adelante con este tipo de dudas.{Environment.NewLine}. Pero recuerda que vía Contacto UPC: http://www.upc.edu.pe/servicios/contacto-upc puedes resolver tus dudas o consultas";

                    await context.PostAsync(sinScoreDialogSpeech);

                    //context.Call(new MenuDialog(), MenuDialog.ResumeAfterUnknownAcademicIntent);

                    await ActualizarSolicitud(context, AppConstant.EstadoSolicitud.INVALIDO);

                    context.Wait(MenuDialog.MessageReceivedAsync);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                BaseData.LogError(ex);
            }
        }
Beispiel #21
0
        public AlertModel CreateIntent(Intencion intencion, List <FraseEntrenamientoModel> frases)
        {
            var intento   = new IntentoModel();
            var resultado = new AlertModel();

            try
            {
                var fileSavePath = System.Web.HttpContext.Current.Server.MapPath("~/Dialogflow.json/") + ConstantesWeb.DialogFlow.FilePrivateKeyIdJson;

                if ((System.IO.File.Exists(fileSavePath)))
                {
                    var cred    = GoogleCredential.FromFile(fileSavePath);
                    var channel = new Channel(SessionsClient.DefaultEndpoint.Host, SessionsClient.DefaultEndpoint.Port, cred.ToChannelCredentials());
                    var client  = IntentsClient.Create(channel);

                    var intent = new Intent();
                    intent.DisplayName = intencion.Nombre;


                    //Actualizar Frases de Entrenamiento
                    intent.TrainingPhrases.Clear();
                    foreach (var frase_ in frases)
                    {
                        var trainingPhrasesParts = new List <string>();
                        trainingPhrasesParts.Add(frase_.Descripcion);
                        var phraseParts = new List <Intent.Types.TrainingPhrase.Types.Part>();
                        foreach (var part in trainingPhrasesParts)
                        {
                            phraseParts.Add(new Intent.Types.TrainingPhrase.Types.Part()
                            {
                                Text = part
                            });
                        }
                        var trainingPhrase = new Intent.Types.TrainingPhrase();
                        trainingPhrase.Parts.AddRange(phraseParts);
                        intent.TrainingPhrases.Add(trainingPhrase);
                    }

                    //Actualizar Respuesta
                    intent.Messages.Clear();
                    var text = new Intent.Types.Message.Types.Text();
                    text.Text_.Add(intencion.Respuesta);
                    var message_ = new Intent.Types.Message()
                    {
                        Text = text
                    };
                    intent.Messages.Add(message_);


                    var newIntent = client.CreateIntent(
                        parent: new ProjectAgentName(ConstantesWeb.DialogFlow.ProjectId),
                        intent: intent
                        );

                    resultado.Id          = newIntent.IntentName.IntentId;
                    resultado.DisplayName = newIntent.DisplayName;
                    oIBLSolicitud.InsertarIntencionConsulta(newIntent.DisplayName, newIntent.IntentName.IntentId, ConvertidorUtil.GmtToPacific(DateTime.Now), intencion.IdIntencionPadre);
                    resultado.Mensaje = "INSERT-OK";
                }
            }
            catch (Exception ex)
            {
                resultado.MessageError = "ERROR: " + ex.Message;
                resultado.Mensaje      = "INSERT-ERROR";
            }

            return(resultado);
        }
Beispiel #22
0
    public void SumarPuntaje(Intencion intPalabra, int usuario)
    {
        Puntos = Puntuar(intFrase, intPalabra);

        puntajes[usuario] += Puntos;
    }
Beispiel #23
0
 public static void CambiarIntFrase(Intencion intencion)
 {
     intFrase = intencion;
 }
Beispiel #24
0
    public float Puntuar(Intencion frase, Intencion palabra)
    {
        switch (frase)
        {
        case Intencion.agresivo:
            if (palabra == Intencion.agresivo)
            {
                return(1f);
            }
            else if (palabra == Intencion.comico)
            {
                return(0.25f);
            }
            else if (palabra == Intencion.ego)
            {
                return(0.5f);
            }
            else
            {
                break;
            }

        case Intencion.comico:
            if (palabra == Intencion.agresivo)
            {
                return(0.5f);
            }
            else if (palabra == Intencion.comico)
            {
                return(1f);
            }
            else if (palabra == Intencion.ego)
            {
                return(0.25f);
            }
            else
            {
                break;
            }

        case Intencion.ego:
            if (palabra == Intencion.agresivo)
            {
                return(0.5f);
            }
            else if (palabra == Intencion.comico)
            {
                return(0.25f);
            }
            else if (palabra == Intencion.ego)
            {
                return(1f);
            }
            else
            {
                break;
            }
        }

        return(0);
    }
Beispiel #25
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="idSolicitud"></param>
        /// <param name="solucion"></param>
        /// <returns></returns>
        public JsonResult EnviarSolucionSolicitud(
            string idSolicitud,
            string intencionPadre,
            string solucion,
            string accion,
            string nombreIntencion,
            string frase1,
            string frase2,
            string solucionIntencion,
            string curso,
            string actividad,
            string idDialogFlow)
        {
            var respuesta = string.Empty;

            try
            {
                if (accion.Equals("NEW"))
                {
                    var intencion = new Intencion();
                    intencion.IdDialogFlow = "NEW";


                    intencion.Nombre           = nombreIntencion;
                    intencion.Respuesta        = solucionIntencion;
                    intencion.IdIntencionPadre = intencionPadre;

                    var frases_ = new List <FraseEntrenamientoModel>();
                    frases_.Add(new FraseEntrenamientoModel {
                        Descripcion = frase1
                    });
                    frases_.Add(new FraseEntrenamientoModel {
                        Descripcion = frase2
                    });
                    var resultado = new Dialogflow.DialogFlow(oIBLSolicitud).CreateIntent(intencion, frases_);
                }

                if (accion.Equals("EDIT"))
                {
                    var intencion = new Intencion();
                    intencion.IdDialogFlow     = idDialogFlow;
                    intencion.Respuesta        = respuesta;
                    intencion.IdIntencionPadre = intencionPadre;

                    var frases_ = new List <FraseEntrenamientoModel>();
                    frases_.Add(new FraseEntrenamientoModel {
                        Descripcion = frase1
                    });
                    frases_.Add(new FraseEntrenamientoModel {
                        Descripcion = frase2
                    });
                    var resultado = new Dialogflow.DialogFlow(oIBLSolicitud).UpdateIntent(intencion, frases_);
                }

                var solicitud = new Solicitud();
                solicitud.IdSolicitud = ConvertidorUtil.ConvertirInt32(idSolicitud);
                solicitud.Solucion    = solucion;

                var objResult    = oIBLSolicitud.EnviarSolucionSolicitud(solicitud);
                var notificacion = objResult.OneResult;

                if (notificacion != null)
                {
                    var email     = new EmailUtil();
                    var sendEmail = email.NotificarSolucionConsultaAcademica(notificacion);

                    if (sendEmail)
                    {
                        respuesta = "SEND_EMAIL_OK";
                    }
                }
            }
            catch (Exception ex)
            {
            }

            return(new JsonResult {
                Data = respuesta, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }