none
Esperar um ação do usuário e recuperar string (WebForm) RRS feed

  • Pergunta

  • Pessoal, tudo bem?
    Uma dúvida, tenho uma aplicação em Desktop que faz integração com o Telegram.

    Em uma classe, tenho uma rotina na qual eu solicito ao telegram um código para que ele libere o uso daquela máquina, para que ela possa enviar mensagens ao seus contatos.

    A rotina é essa:

    public class Telegram
    {
        public virtual async Task<string> LiberarUsoDoSistema(string Api_ID, string Api_Hash, string Celular)
        {
            var store = new TLSharp.Core.FileSessionStore();
            var client = new TLSharp.Core.TelegramClient(Convert.ToInt32(Api_ID), Api_Hash, store, "session");
            if (Celular.Length < 10)
            {
                Celular = "55" + Celular;
            }
    
            await client.ConnectAsync();
            var hash = await client.SendCodeRequestAsync(Celular);
    
    
            var code = Interaction.InputBox("Digite o codigo que recebeu do Telegram:", "", "", 200, 200);
    
            TLUser user = null;
    
            try
            {
                user = await client.MakeAuthAsync(Celular, hash, code);
            }
            catch (CloudPasswordNeededException ex)
            {
                var password = await client.GetPasswordSetting();
                var password_str = "1";//não implementado ainda
    
                user = await client.MakeAuthWithPasswordAsync(password, password_str);
            }
            catch (InvalidPhoneCodeException ex)
            {
                throw new Exception("Código de autenticação não corresponde ao correto!",
                                    ex);
            }
            return Convert.ToString(client.IsUserAuthorized());
        }

    Ou seja, ele esta enviando o pedido, porém, preciso esperar que o usuário receba o código que destrava o uso pelo celular. No caso, no Winforms é tranquilo, por isso uso o código:

     var code = Interaction.InputBox("Digite o codigo que recebeu do Telegram:", "", "", 200, 200);

    Dessa forma eu mostro um inputBox, espero o usuário digitar e continuo a rotina... só que obviamente na versão WEB, isso não funciona.

    Existe alguma forma, de que possa abrir um alert ou coisa do tipo,  esperando que o usuário  digite o código e então, o receba, dentro dessa classe?


    quinta-feira, 11 de maio de 2017 01:44

Respostas

  • Boa tarde Paulo.Sérgio,

    Concordo com a função que o Alcides forneceu.

    Nesse caso, basta quebrar sua rotina em duas partes, vamos separar model de view.

    Primeira rotina porderia ser para gerar o código.

    Segunda rotina, seria para continuar com o processo, fornecendo o cógido que o usuário já colocou.


    Att., Roberto Alves

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 23 de maio de 2017 19:39

Todas as Respostas

  • Use a lib JqueryUI para criar uma caixa de dialogo que apresentará uma

    janela contendo uma caixa de texto para o usuário informar o código e um botão de envio(btnEnviarCodigo).

    Crie um script em jQuery usando ajax que será disparado pelo botão de envio e, no parâmetro URL

    informe a classe que irá receber a requisição.

    Exemplo:

    $('#btnEnviarCodigo').click(function() {

    $.ajax({

            type: "POST",
            url: "exemplo.aspx/recebercodigo", // -- classe e método
            data: param1, // -- Parâmetros se houver
            error: function (XMLHttpRequest, status, error ){
                alert("Código: " + XMLHttpRequest.toString() + "\n\nStatus: " + status+ "\n\nError: " + error)
            },
            complete: function () {
                alert("Código enviado com sucesso!);
            }
        });

    });


     


    quinta-feira, 11 de maio de 2017 03:07
  • Valeu pela dica Alcides!
    Mas, tem um problema, no caso.

    Perceba que eu começo a rotina, preciso que abra no meio dessa rotina esse item esperando, os dados.

    No exemplo, pelo que entendi, ele funciona como um input comum (ou seja, depois que atribui).
    quinta-feira, 11 de maio de 2017 03:52
  • Boa tarde Paulo.Sérgio,

    Concordo com a função que o Alcides forneceu.

    Nesse caso, basta quebrar sua rotina em duas partes, vamos separar model de view.

    Primeira rotina porderia ser para gerar o código.

    Segunda rotina, seria para continuar com o processo, fornecendo o cógido que o usuário já colocou.


    Att., Roberto Alves

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 23 de maio de 2017 19:39
  • Bom dia,

    Por falta de retorno esta thread esta encerrada !

    Por gentileza, caso necessário abra uma nova thread.

    Atenciosamente,


    Guilherme Macedo S

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    TechNet Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 30 de maio de 2017 16:04
    Moderador