• 0
Sign in to follow this  
maiconkkl

Notificações

Question

Boa noite a todos, gostaria de uma ajuda sobre as notificações, eu fiz um script para receber notificações e inserir no banco de dados, ele funciona perfeitamente e só que não vejo chegar notificações, já usei o simulador de noticiações para testar pra ver se ta funcionando e ta tudo ok, ele simplesmente funcionou um tempo depois parou. 

 

Alguém sabe o que fazer nesses casos ? 

Share this post


Link to post
Share on other sites

13 answers to this question

Recommended Posts

  • 0

Consegui!!!!! =D

Seguinte, sim, obviamente que no dotNet (C# MVC 5) tem como pegar este valor. É só saber como. rs

O que eu fiz foi criar uma classe Controller que herda de ApiController.

O meu método post nesta classe ficou (ainda não fiz tratamento nenhum, apenas recuperei a informação enviada e gravei no banco para confirmar):
 

public HttpResponseMessage Post(HttpRequestMessage request)
{
        var mlData = request.Content.ReadAsStringAsync().Result;
        MLCallbackModel cModel = JsonConvert.DeserializeObject<MLCallbackModel>(mlData);
        HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, nva);

        return response;
}

Além disso é preciso incluir uma route no RouteConfig:

routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

Para testar localmente eu criei um outro projeto console application e fiz a seguinte chamada:
 

static void Main(string[] args)
{
    using (var client = new WebClient())
    {
        client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
        var data = @"{""user_id"":1234,""resource"":""\/items\/MLB123123"",""topic"":""items"",""received"":""2014-12-18T17:33:54+00:00"",""sent"":""2014-12-18T17:33:54+00:00""}";
        var result = client.UploadString("http://localhost:63715/api/MLCallback", "POST", data);
        Console.WriteLine(result);
    }
}

E depois que funcionou localmente, publiquei no meu servidor e fiz o teste utilizando a tool de testes do ML http://developers.mercadolibre.com/test-notification-url/. Verifiquei no banco de dados no server e gravou OK.

Agora é só fazer o tratamento correto e acertar minha app aqui do ML.

Muito obrigado galera!!

 

 

Share this post


Link to post
Share on other sites
  • 0
Guest Prenzier

Olá, 

 

Na sua aplicação, você configurou para receber todas as notificações?

A sua URL pública para receber as notificações utiliza alguma porta diferente da 80? o Mercado Livre tem uma limitação e não envia notificações para outras portas.

 

Quanto utiliza test notification, http://developers.mercadolibre.com/test-notification-url/ retorna o https status 200?

 

att.

Share this post


Link to post
Share on other sites
  • 0

Sim, sim... Não sei exatamente o que aconteceu mas depois que eu alterei a url para receber notificações o sistema voltou a funcionar e estou recebendo notificações que nem agua.... nem sei o que fazer com todas...

Mas muito obrigado pela atenção.

Share this post


Link to post
Share on other sites
  • 0

filtra!!!

Uma coisa é identificar para que serve e outra é se já foi tratada.

 

Grave as infos como ID e resource, para não tratar 2 vezes a mesma coisa.

 

Outra coisa para não ter chuva de notificações que não quer tratar é só configurar o que você deseja receber.

Numa venda você é notificado da venda, do item e posteriormente do pagamento.

Se o item encerra é só do item.
Se o pagamento é executado após 5 dias é só do pagamento.

 

Mas será que precisa de todos?

Eu não preciso.

 

Até mais

Rodrigo

Share this post


Link to post
Share on other sites
  • 0

Pessoal, estou com uma dificuldade de entender como deveria ser esta tela de callback. O que ela deveria ter? Vocês tem um exemplo simples de codigo (em dotNet - se possivel MVC) para que eu possa usar para começar?

Imagino que o ML faça uma chamada para a url que eu passei enviando dados via post, mas não sei direito como receber estes dados no meu sistema para trata-los e nem como verificar se veio direito e etc.

Obrigado

(vou continuar pesquisando por aqui. Caso descubra algo antes, posto aqui) =)

Share this post


Link to post
Share on other sites
  • 0

Os resultados vem em json, e sim ele chama uma página que você configurou em applications \ notifications.

 

{ "user_id:1364444484","resource:/orders/813444432","topic:orders","received:2013-03-24T02:33:38.935Z","application_id:8501444444444441359","sent:2013-03-24T02:33:39.068Z","attempts:0")}

 

a informação acima é um retorno de php://input

sendo assim você separa o objeto json e trabalha como quiser

Para PHP você pode pegar assim: 

 

$retorno = file_get_contents('php://input');

$r = json_decode($retorno);
$cv = explode('/', $r->resource);
unset($r);
unset($retorno);
 
Onde $cv será um array com as informações apenas do "resource";
 
I see you later Alligator!
 

Pessoal, estou com uma dificuldade de entender como deveria ser esta tela de callback. O que ela deveria ter? Vocês tem um exemplo simples de codigo (em dotNet - se possivel MVC) para que eu possa usar para começar?

Imagino que o ML faça uma chamada para a url que eu passei enviando dados via post, mas não sei direito como receber estes dados no meu sistema para trata-los e nem como verificar se veio direito e etc.

Obrigado

(vou continuar pesquisando por aqui. Caso descubra algo antes, posto aqui) =)

Share this post


Link to post
Share on other sites
  • 0

Então, mas este json vem em forma de uma variavel? Tem nome? Porque estou vendo aqui no dotNet e, pelo que achei até agora, precisaria de um nome para eu conseguir pegar. Estou procurando uma forma de pegar todo o contexto, mas ainda não consegui.

Se eu conseguir pegar esse json, está resolvido o problema...

Obrigado novamente!

Share this post


Link to post
Share on other sites
  • 0

Pessoal, tenho muitas com relação a isso, também preciso fazer isso no MVC, o mercado livre vai dar um POST na minha página que irei configurar no app manager, e até agora não entendi o que codificar na linha abaixo:
 

[HttpPost]
public ActionResult Callback()
{
return View();
}
No caso pensei em criar uma ActionResult Callback e colocar um botão do tipo submit para testar, rola?

Alguém pode me ajudar?

Obrigado,
 
Alexandre

Share this post


Link to post
Share on other sites
  • 0

Pessoal, peguei algumas dicas acima e implementei com sucesso, estou pegando o post e gravando em banco de dados.

[HttpPost]
[AllowAnonymous]
[ActionName("Index")]
public JsonResult Notification()
{
	NotificacaoMLApp notificacaoMLApp = new NotificacaoMLApp();

	var reader = new StreamReader(Request.InputStream);
	string notification_received = reader.ReadToEnd();

	var notification = JsonConvert.DeserializeObject<Notification>(notification_received);

	var _notificacaoML = new NotificacaoML();

	_notificacaoML.AplicacaoId = notification.application_id;
	_notificacaoML.UsuarioId = Convert.ToInt64(notification.user_id);
	_notificacaoML.TipoNotificacao = notification.topic;
	_notificacaoML.Notificacao = notification.resource;
	_notificacaoML.Tentativas = notification.attempts;
	_notificacaoML.DataEnviada = Convert.ToDateTime(notification.sent);
	_notificacaoML.DataRecebida = Convert.ToDateTime(notification.received);
	_notificacaoML.NotificacaoRecebida = notification_received;
	_notificacaoML.DataNotificacao = DateTime.Now;

	notificacaoMLApp.Adicionar(_notificacaoML);

	var result = new
	{
		Send = notification_received
	};

	return Json(result, JsonRequestBehavior.AllowGet);
}

Share this post


Link to post
Share on other sites
  • 0

Saludos, espero me puedan ayudar, con respecto a los notificaciones hago el test de prueba, recibo y grabo en la BD sin problemas (utilizando una url publica y capturando con .php), pero hasta ahora no recibo notificaciones de mercadolibre a pesar que desde otro usuario me hago preguntas, utilizo el test de prueba y si funciona.

 

Ahora bien, reviso el historico de las notificaciones en el siguiente enlac,e colocando el AppId (https://api.mercadolibre.com/myfeeds?app_id=) de la aplicacion y segun esto, las ultimas notificaciones fueron el 07-04-2016 rechazandola el servidor por tener configurado en la url "localhost", no se si por esto fue bloqueada las notificaciones de mercadolibre, pero no encuentro manera de saber que es lo que pasa.

 

Gracias de antemano

Share this post


Link to post
Share on other sites
  • 0

Estou com uma duvida minha aplicacao vai rodar mais de uma conta, o mercado livre gerencia as notificações ?

Porque o url de notificação é uma só, então ele vai receber todas as notificações num lugar só, teria que estar logado para receber a notificação e gravala no banco ?

Ou consigo gerenciar as notificações q a api recebe e gravala no seu respectivo banco?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this