Sala 2 05 tratamento de notificações - rafael prenzier

74
Rafael Prenzier TRATAMENTO DE NOTIFICAÇÕES Software Engineer

description

3º Developers Conference MercadoLibre Brasil

Transcript of Sala 2 05 tratamento de notificações - rafael prenzier

Page 1: Sala 2 05   tratamento de notificações - rafael prenzier

Rafael Prenzier

TRATAMENTO DE NOTIFICAÇÕES

Software Engineer

Page 2: Sala 2 05   tratamento de notificações - rafael prenzier

Tratamento de notificações

Rafael Prenzier dos Santos

Page 3: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Agenda

● Príncipios● Como receber notificações● Erros comuns● Ferramentas● Sugestões de implementação

Page 4: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Mas o que é uma Notificação?

Page 5: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

O que é uma notificação?

É um POST HTTP contendo um JSONO Mercado Livre essa mensagem para a url configurada na sua Aplicação

Pépe, já tirei a vela !

Page 6: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Fluxo de uma notificação

1. Um evento ocorre dentro do MercadoLivre

2. O MercadoLivre envia uma notificação do evento para todas as apps autorizadas no cadastro do usuário

3. As aplicações confirmam o recebimento da notificação

Page 7: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Notificação

Page 8: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Notificação

Page 9: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Notificação

POST

Page 10: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

{ "user_id": "12345678", "resource": "/questions/123456789", "topic": "questions", "received": "2014-02-04T19:00:04+00:00", "sent": "2014-02-04T19:00:45+00:00"}

Notificação

POST

Page 11: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

{ "user_id": "12345678", "resource": "/questions/123456789", "topic": "questions", "received": "2014-02-04T19:00:04+00:00", "sent": "2014-02-04T19:00:45+00:00"}

Notificação

POST

Page 12: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

{ "user_id": "12345678", "resource": "/questions/123456789", "topic": "questions", "received": "2014-02-04T19:00:04+00:00", "sent": "2014-02-04T19:00:45+00:00"}

Notificação

POST

200 OK

Page 13: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Quais eventos disparam notificações?

Qualquer alteração dentro do conteúdo de:● Items;● Questions;● Orders (Vendas);● Payments;

Ex: Uma venda vai gerar notificação de Item, pois diminuiu o estoque, uma notificação de nova venda e também uma notificação de pagamento assim que a venda for paga

Page 14: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Configurar o recebimento de notificações?

http://applications.mercadolibre.com

● Notification Callback URL

● Topics - Items, Orders, Questions e Payments

Page 15: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Page 16: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

http://www.suaurlaqui.com/notification

Page 17: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

http://www.suaurlaqui.com/notification

x

x

x

x

Page 18: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Exemplo notificação de Item

{

"user_id": 1234,

"resource": "/items/MLB139876",

"topic": "items",

"attempts": 1,

"received": "2011-10-19T16:38:34.425Z",

"sent" : "2011-10-19T16:40:34.425Z",

}

Page 19: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

{

"user_id": 1234,

"resource": "/items/MLB139876",

"topic": "items",

"attempts": 1,

"received": "2011-10-19T16:38:34.425Z",

"sent" : "2011-10-19T16:40:34.425Z",

}

Exemplo notificação de Item

Page 20: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

{

"user_id": 1234,

"resource": "/items/MLB139876",

"topic": "items",

"attempts": 1,

"received": "2011-10-19T16:38:34.425Z",

"sent" : "2011-10-19T16:40:34.425Z",

}

Exemplo notificação de Item

Page 21: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

{

"user_id": 1234,

"resource": "/items/MLB139876",

"topic": "items",

"attempts": 1,

"received": "2011-10-19T16:38:34.425Z",

"sent" : "2011-10-19T16:40:34.425Z",

}

Exemplo notificação de Item

Page 22: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

{

"user_id": 1234,

"resource": "/items/MLB139876",

"topic": "items",

"attempts": 1,

"received": "2011-10-19T16:38:34.425Z",

"sent" : "2011-10-19T16:40:34.425Z",

}

Exemplo notificação de Item

Page 23: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

{

"user_id": 1234,

"resource": "/items/MLB139876",

"topic": "items",

"attempts": 1,

"received": "2011-10-19T16:38:34.425Z",

"sent" : "2011-10-19T16:40:34.425Z",

}

Exemplo notificação de Item

Page 24: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

{

"user_id": 1234,

"resource": "/items/MLB139876",

"topic": "items",

"attempts": 1,

"received": "2011-10-19T16:38:34.425Z",

"sent" : "2011-10-19T16:40:34.425Z",

}

Exemplo notificação de Item

Page 25: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Exemplo notificação de Order

{

"user_id": 1234,

"resource": "/orders/139876",

"topic": "orders",

"attempts": 1,

"received": "2011-10-19T16:38:34.425Z",

"sent": "2011-10-19T16:40:34.425Z"

}

Page 26: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Exemplo notificação de Order

{

"user_id": 1234,

"resource": "/orders/139876",

"topic": "orders",

"attempts": 1,

"received": "2011-10-19T16:38:34.425Z",

"sent": "2011-10-19T16:40:34.425Z"

}

Page 27: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Exemplo notificação de Order

{

"user_id": 1234,

"resource": "/orders/139876",

"topic": "orders",

"attempts": 1,

"received": "2011-10-19T16:38:34.425Z",

"sent": "2011-10-19T16:40:34.425Z"

}

Page 28: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

{

"user_id": 1234,

"resource": "/questions/139876",

"topic": "questions",

"attempts": 1,

"received": "2011-10-19T16:38:34.425Z",

"sent" : "2011-10-19T16:40:34.425Z",

}

Exemplo notificação de Question

Page 29: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

{

"user_id": 1234,

"resource": "/questions/139876",

"topic": "questions",

"attempts": 1,

"received": "2011-10-19T16:38:34.425Z",

"sent" : "2011-10-19T16:40:34.425Z",

}

Exemplo notificação de Question

Page 30: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

{

"user_id": 1234,

"resource": "/questions/139876",

"topic": "questions",

"attempts": 1,

"received": "2011-10-19T16:38:34.425Z",

"sent" : "2011-10-19T16:40:34.425Z",

}

Exemplo notificação de Question

Page 31: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

{

"user_id": 1234,

"resource": "/collections/123123123",

"topic": "payments",

"attempts": 1,

"received": "2014-07-21T18:51:28+00:00",

"sent": "2014-07-21T18:51:28+00:00"

}

Exemplo notificação de Payments

Page 32: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

{

"user_id": 1234,

"resource": "/collections/123123123",

"topic": "payments",

"attempts": 1,

"received": "2014-07-21T18:51:28+00:00",

"sent": "2014-07-21T18:51:28+00:00"

}

Exemplo notificação de Payments

Page 33: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Exemplo notificação de Payments

{

"user_id": 1234,

"resource": "/collections/123123123",

"topic": "payments",

"attempts": 1,

"received": "2014-07-21T18:51:28+00:00",

"sent": "2014-07-21T18:51:28+00:00"

}

Page 34: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Recebendo Notificações

Page 35: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Confirmação de recebimento

A confirmação de recebimento é bem simples:

Retornar o status HTTP 200, se a notificação foi recebida com sucesso.

Qualquer status diferente de 200 será considerado falha no recebimento e serão realizadas novas tentativas de envio.

Page 36: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

{

"user_id": 1234,

"resource": "/questions/139876",

"topic": "questions",

"attempts": 2,

"received": "2011-10-19T16:38:34.425Z",

"sent" : "2011-10-19T16:40:34.425Z",

}

Exemplo notificação Repetida

Page 37: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

{

"user_id": 1234,

"resource": "/questions/139876",

"topic": "questions",

"attempts": 3,

"received": "2011-10-19T16:38:34.425Z",

"sent" : "2011-10-19T17:40:34.425Z",

}

Exemplo notificação Repetida

Page 38: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

{

"user_id": 1234,

"resource": "/questions/139876",

"topic": "questions",

"attempts": 4,

"received": "2011-10-19T16:38:34.425Z",

"sent" : "2011-10-19T18:40:34.425Z",

}

Exemplo notificação Repetida

Page 39: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

{

"user_id": 1234,

"resource": "/questions/139876",

"topic": "questions",

"attempts": 5,

"received": "2011-10-19T16:38:34.425Z",

"sent" : "2011-10-19T19:40:34.425Z",

}

Exemplo notificação Repetida

Page 40: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Mas eu vou ficar recebendo as notificações pra sempre?

Page 41: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Intervalo de envio das notificações

A partir do recebimento da primeira notificação em um período de 12 horas serão feitas novas tentativas de entregar as notificações,

Após 12 horas a notificação é descartada!

Page 42: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

{

"user_id": 1234,

"resource": "/questions/2880XXX87",

"topic": "questions",

"attempts": 1,

"received": "2011-10-19T16:38:34.425Z",

"sent" : "2011-10-19T16:40:34.425Z",

}

Recuperando os dados da notificação

Page 43: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

https://api.mercadolibre.com/questions/2880XXX87

Recuperando os dados da notificação

Page 44: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

GET

https://api.mercadolibre.com/questions/2880XXX87

Recuperando os dados da notificação

Page 45: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

{ "id": 2880XXX87, "answer": null, "date_created": "2013-09-23T13:13:52.000-04:00", "deleted_from_listing": false, "hold": false, "item_id": "MLB50XXX993", "last_updated": "2013-09-23T15:52:09.000-04:00", "seller_id": "362XXXX5", "status": "DELETED", "suspected_spam": false, "text": "o jogo vem completo né ?", "from": - { "id": 844XXXX2, "answered_questions": 4, },}

GET

https://api.mercadolibre.com/questions/2880XXX87

Recuperando os dados da notificação

Page 46: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

{ "id": 2880XXX87, "answer": null, "date_created": "2013-09-23T13:13:52.000-04:00", "deleted_from_listing": false, "hold": false, "item_id": "MLB50XXX993", "last_updated": "2013-09-23T15:52:09.000-04:00", "seller_id": "362XXXX5", "status": "DELETED", "suspected_spam": false, "text": "o jogo vem completo né ?", "from": - { "id": 844XXXX2, "answered_questions": 4, },}

GET

https://api.mercadolibre.com/questions/2880XXX87

Recuperando os dados da notificação

Page 47: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Erros Comuns

Page 48: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Portas bloqueadas + Firewall

http://www.minhaurl.com:7846910/notifications

Recomendamos

:80:8080:443

Page 49: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Não confirmação do recebimento

200

Page 50: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Não Selecionar Tópicos

Page 51: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Perdas de notificações

$> Notifications > /dev/null

Page 52: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Ferramentas

Page 53: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Test Notification Url

http://developers.mercadolibre.com/test-notification-url/

Page 54: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

http://developers.mercadolibre.com/api-health-view/

API Status - Delay de notificação

Page 55: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Alternativa - Buscas

/users/$USER_ID/items/search

/orders/search?seller=$USER_ID

/questions/search?seller=$USER_ID

/collections/search?seller=$USER_ID

sort=date_desc

Page 56: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Sugestão de implementação

Page 57: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Guarde sua notificaçãoSalve a Notificação assim que recebe-la

Quebrando o sincronismo você irá trabalhar melhor com essa notificação

Page 58: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Versione a notificação

Page 59: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Sugestão de implementação

Banco de Dados

Page 60: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Sugestão de implementação

Banco de Dados

Page 61: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Sugestão de implementação

Banco de Dados

Page 62: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Sugestão de implementação

Banco de Dados

Page 63: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Sugestão de implementação

Banco de Dados

Page 64: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Sugestão de implementação

Banco de Dados

Page 65: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Sugestão de implementação

Banco de Dados

VISH...

Page 66: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Sugestão de implementação

Banco de Dados

Page 67: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

DOG PILE

Page 68: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Sugestão de implementação

Banco de Dados

Page 69: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Sugestão de implementação

Page 70: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Page 71: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

O que é Importante!

Confirmar o recebimento da notificação com o status HTTP 200

Page 72: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

O que é Importante!

Sua URL de notificação deve ser pública para o Mercado Livre conseguir te enviar as notificações

Por Obséquio

Page 73: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

O que é Importante!

Salve sua notificação

Porque você não salva as notificações?

Page 74: Sala 2 05   tratamento de notificações - rafael prenzier

Developer Conference

Obrigado!