private async Task <bool> OtpValidatorAsync(PromptValidatorContext <string> promptContext, CancellationToken cancellationToken) { bool valid = false; //Si el prompt reconocio la entrada if (promptContext.Recognized.Succeeded) { //Mando a sacar el objeto de la coversacion donde ya guarde el OTP DataConversation dataConversation = await _botStateService.DataConversationAccessor.GetAsync(promptContext.Context, () => new DataConversation(), cancellationToken); valid = promptContext.Recognized.Value == dataConversation.OTP; if (!valid) { await promptContext.Context.SendActivityAsync( MessageFactory.Text( $"El codigo OTP no es valido. (Recuerda que el codigo es {dataConversation.OTP})"), cancellationToken); } } return(valid); }
public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions) { // Override point for customization after application launch. // If not required for your application you can safely delete this method dataConversation = new DataConversation(); dbmessages = new List <DBMessage>(dataConversation.Start()); return(true); }
private async Task <bool> EsOtpValidoAsync(string texto, ITurnContext context, CancellationToken cancellationToken) { //Mando a sacar el objeto de la coversacion donde ya guarde el OTP DataConversation dataConversation = await _botStateService.DataConversationAccessor.GetAsync(context, () => new DataConversation(), cancellationToken); bool valid = texto == dataConversation.OTP; return(valid); }
/// <summary> /// Metodo en el cual le pido el OTP al usuario /// </summary> /// <param name="stepContext"></param> /// <param name="cancellationToken"></param> /// <returns></returns> private async Task <DialogTurnResult> OtpStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken) { //Extraemos el numero de telefono del paso anterior string telefono = (string)stepContext.Result; stepContext.Values["telefono"] = telefono; DataConversation dataConversation = await _botStateService.DataConversationAccessor.GetAsync(stepContext.Context, () => new DataConversation(), cancellationToken); PerfilDeUsuario perfilDeUsuario = await _botStateService.PerfilDeUsuarioAccessor.GetAsync(stepContext.Context, () => new PerfilDeUsuario(), cancellationToken); //Seteo en numero que el usuario ingreso perfilDeUsuario.NumeroTelefono = telefono; //Si hay un numero valido, lo mando de un solo al reporte sin pasar por el OTP if (perfilDeUsuario.NumerosValidos.Any(y => y.Numero == telefono && y.FechaVencimiento >= DateTime.Now)) { //Marco que el numero actual es valido para que me deje pasar perfilDeUsuario.EsNumeroIngresadoValido = true; await _botStateService.PerfilDeUsuarioAccessor.SetAsync(stepContext.Context, perfilDeUsuario, cancellationToken); return(await stepContext.NextAsync("", cancellationToken)); } else { //Mando a generar el OTP string otpFake = RandomString(8); dataConversation.OTP = otpFake; //Mando a setear al state la nueva data await _botStateService.DataConversationAccessor.SetAsync(stepContext.Context, dataConversation, cancellationToken); await _botStateService.PerfilDeUsuarioAccessor.SetAsync(stepContext.Context, perfilDeUsuario, cancellationToken); //Le solicitamos al usuario que nos diga el OTP return(await stepContext.PromptAsync($"{nameof(ObtenerReporteDialog)}.otp", new PromptOptions() { Prompt = MessageFactory.Text( $"Por favor ingrese el codigo enviado a su telefono (pssst, el codigo es: {otpFake})") }, cancellationToken)); } }
private void LoadGameData() { string filePath = Application.dataPath + gameDataProjectFilePath; if (File.Exists(filePath)) { string dataAsJson = File.ReadAllText(filePath); gameData = JsonUtility.FromJson <DataConversation> (dataAsJson); } else { gameData = new DataConversation(); } }
/// <summary> /// En este paso leemos lo que dijo sobre re intentar o sobre querer un codigo nuevo /// </summary> /// <param name="stepContext"></param> /// <param name="cancellationToken"></param> /// <returns></returns> private async Task <DialogTurnResult> ProcesarRespuestaReintentoStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken) { //Extramos el dato de la opcion anterior string eleccion = ((FoundChoice)stepContext.Result).Value; DataConversation dataConversation = await _botStateService.DataConversationAccessor.GetAsync(stepContext.Context, () => new DataConversation(), cancellationToken); //Verificamos que fue lo que eligio if (eleccion == "Reintentar") { //Le solicitamos al usuario que nos diga el OTP return(await stepContext.PromptAsync($"{nameof(ReintentarOtpDialog)}.otp", new PromptOptions() { Prompt = MessageFactory.Text( $"Muy bien, ingrese el codigo enviado a su telefono (pssst, el codigo es: {dataConversation.OTP})") }, cancellationToken)); //Si pidio reintentar, levanto el dialogo de re intento //return await stepContext.BeginDialogAsync($"{nameof(ReintentarOtpDialog)}.reintentar", null, // cancellationToken); } else { //Mando a generar el OTP string otpFake = RandomString(8); //Seteo el OTP dataConversation.OTP = otpFake; //Mando a setear al state la nueva data await _botStateService.DataConversationAccessor.SetAsync(stepContext.Context, dataConversation, cancellationToken); //Le solicitamos al usuario que nos diga el OTP return(await stepContext.PromptAsync($"{nameof(ReintentarOtpDialog)}.otp", new PromptOptions() { Prompt = MessageFactory.Text( $"Se le reenvio el codigo a su telefono, favor ingresarlo (pssst, el codigo es: {otpFake})") }, cancellationToken)); //Si dijo que quiere un codigo nuevo, se le manda al dialogo de nuevo codigo //return await stepContext.BeginDialogAsync($"{nameof(ReintentarOtpDialog)}.nuevoCodigo", null, // cancellationToken); } }
// Use this for initialization void Start() { if (instance == null) { instance = this; } else { return; } //pega a referencia para os textos do DataController allConversations = FindObjectOfType <DataController> ().allConversations; box = gameObject.transform.GetChild(0).gameObject; sentence = 0; }
private void LoadTextData() { string filePath = Path.Combine(Application.streamingAssetsPath, textDataFileName); if (File.Exists(filePath)) { // Le o JSON e joga todo o texto em uma string string dataAsJson = File.ReadAllText(filePath); //Chama o JsonUyility pra ele transformar a string no Objeto dataText DataConversation loadedText = JsonUtility.FromJson <DataConversation>(dataAsJson); //Joga tudo agora na nossa variavel pública allConversations = loadedText; } else { Debug.Log("Arquivo Not founD."); } }
private void Initialize(LastChatAdapterViewHolder holder, DataConversation item) { try { GlideImageLoader.LoadImage(ActivityContext, item.User.Avatar, holder.ImageAvatar, ImageStyle.CircleCrop, ImagePlaceholders.Drawable); string name = DeepSoundTools.GetNameFinal(item.User); if (holder.TxtUsername.Text != name) { holder.TxtUsername.Text = name; } //If message contains Media files switch (item.GetLastMessage.ApiType) { case ApiType.Text: { holder.LastMessagesIcon.Visibility = ViewStates.Gone; holder.TxtLastMessages.Text = item.GetLastMessage.Text.Contains("http") ? Methods.FunString.SubStringCutOf(item.GetLastMessage.Text, 30) : Methods.FunString.DecodeString(Methods.FunString.SubStringCutOf(item.GetLastMessage.Text, 30)) ?? ActivityContext.GetText(Resource.String.Lbl_SendMessage); break; } case ApiType.Image: { holder.LastMessagesIcon.Visibility = ViewStates.Visible; FontUtils.SetTextViewIcon(FontsIconFrameWork.IonIcons, holder.LastMessagesIcon, IonIconsFonts.Images); holder.TxtLastMessages.Text = Application.Context.GetText(Resource.String.Lbl_SendImageFile); break; } } //last seen time holder.TxtTimestamp.Text = Methods.Time.TimeAgo(Convert.ToInt32(item.GetLastMessage.Time), true); //Check read message if (item.GetLastMessage.ToId != UserDetails.UserId && item.GetLastMessage.FromId == UserDetails.UserId) { if (item.GetLastMessage.Seen == 0) { holder.ImageColor.Visibility = ViewStates.Invisible; holder.TxtUsername.SetTypeface(Typeface.Default, TypefaceStyle.Normal); holder.TxtLastMessages.SetTypeface(Typeface.Default, TypefaceStyle.Normal); } else { holder.ImageColor.Visibility = ViewStates.Invisible; holder.TxtUsername.SetTypeface(Typeface.Default, TypefaceStyle.Normal); holder.TxtLastMessages.SetTypeface(Typeface.Default, TypefaceStyle.Normal); } } else if (item.GetLastMessage.ToId == UserDetails.UserId && item.GetLastMessage.FromId != UserDetails.UserId) { if (item.GetLastMessage.Seen == 0) { holder.TxtUsername.SetTypeface(Typeface.Default, TypefaceStyle.Bold); holder.TxtLastMessages.SetTypeface(Typeface.Default, TypefaceStyle.Bold); if (item.GetCountSeen != 0) { var drawable = TextDrawable.InvokeBuilder().BeginConfig().FontSize(25).EndConfig().BuildRound(item.GetCountSeen.ToString(), Color.ParseColor(AppSettings.MainColor)); holder.ImageColor.SetImageDrawable(drawable); holder.ImageColor.Visibility = ViewStates.Visible; } else { holder.ImageColor.Visibility = ViewStates.Invisible; } } else { holder.ImageColor.Visibility = ViewStates.Invisible; holder.TxtUsername.SetTypeface(Typeface.Default, TypefaceStyle.Normal); holder.TxtLastMessages.SetTypeface(Typeface.Default, TypefaceStyle.Normal); } } } catch (Exception e) { Console.WriteLine(e); } }