Tutorial
Tutorial para sequência de chamadas para geração de uma notificação.
Para enviar uma notificação deve ser seguida a sequência.
Passo 1 - Rotas de Desenvolvimento e Produção
Será enviado com o uso da plataforma as informações de rotas para testes e uso em ambiente produtivo. As rotas padrão seguem o formato.
DESENVOLVIMENTO
https://api-uns.net/notificacao/dev
PRODUÇÃO
https://api-uns.net/notificacao/prod
Passo 2 - Envio de Notificação Padrão
https://api-uns.net/notificacao/dev/notification?to_tag=<NUMERO DO CARTAO- SOMENTE NUMEROS>
to_tag = cpf para quem se deseja enviar a notificação.
Passo 3 - Acesso e Formatos
Para as todas as funções, no Header deve ser passada a chave de acesso da solução:
Ocp-Apim-Subscription-Key: chave enviada no documento
Authorization: jwt gerado pela rota Auth.
Geração da Chave JWT
Para gerar a chave JWT é necessário chamar a rota auth, conforme exemplo abaixo:
POST https://api-uns.net/notificacao/dev/auth
Body:
{
"app":"app",
"chave":"chave enviada no doc",
"usuario":"livre",
"nome":"livre"
}
Retorno:
{
"app": "app",
"chave": "",
"usuario": "livre",
"nome": "livre",
"celular": null,
"perfil": null,
"tokenJwt": "eyJhbGciOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIsInR5cCI6IkpXVCJ9.eyJVc3VhcmlvIjoiaW50ZWdyYWNhbyIsIk5vbWVVc3VhcmlvIjoiaW50ZWdyYWNhbyIsImRhdGFUb2tlbiI6IjIwMjMtMTEtMTdUMTM6MTc6NTMuNjAzMDgxOC0wMzowMCIsIkJlYXJlciI6IntcImFwcFwiOlwiYXBwLWJlbmVmaWNpYXJpb1wiLFwiY2hhdmVcIjpcIlwiLFwidXN1YXJpb1wiOlwiaW50ZWdyYWNhb1wiLFwibm9tZVwiOlwiaW50ZWdyYWNhb1wiLFwiY2VsdWxhclwiOm51bGwsXCJwZXJmaWxcIjpudWxsLFwidG9rZW5Kd3RcIjpudWxsLFwic3RhdHVzX3JldFwiOm51bGwsXCJlcnJvXCI6bnVsbH0iLCJHcnVwbyI6bnVsbCwiaWRGaWxhVXN1YXJpbyI6IjQ1RjU1NEU0MjE3QjI2NEI2RDZEQTExNTdFNjREMkZGRTIzRUNGNjEwQzIwMDBDODNCQkRCNENDQUQyQUU4MTUifQ.Sj3luUkx0VSK7ZH4UUtM-TaFNxvOexCGIdn-I1hPTkg",
"status_ret": null,
"erro": null
}
Para as funções do tipo POST, o Body deve ser composto da seguinte forma:
O tipo_notificacao segue a logica binária, como você sugeriu. Por enquanto ele só terá 4 bits, mas pode crescer no futuro, sem prejuízo das configurações anteriores. Então a interpretação do tipo é:
0001 = Só mensagem push (valor 1) 0010 - Só SMS (valor 2) 0100 - Só Whatsapp (valor 4) 1000 - Só email Email (valor 8)
- Todas as outras combinações são possíveis, mas não é possível 'ter tipo_notificacao = 0' Os campos data e hora devem ser preenchidos somente se a Notificação tenha que ser disparada após esse horário. Se for disparo imediato, os campos podem vir em branco.
JSON Mínimo - quando não é necessário enviar email (tipo_notificacao <= 7):
Body:
{
"message": "Este é o corpo da mensagem a ser enviada",
"celular": "(21) 99999-88888",
"dataNotificacao": "yyyy-MM-dd",
"horaNotificacao": "HH:mm",
"tipo_notificacao": 7, // (1+2+4)
"jsonEmail":"" // campo tipo string
}
tipo_notificacao acima de 7 são mensagens onde email será enviado. Para. Isso é necessário enviar o jsonEmail preenchido, sendo JSON um string.
No jsonEmail completo, é importante estabelecer os seguintes comentários:
1) atributo "template_id" é obrigatório.
2) O bloco "dynamic_template_data" contem os campos que serão mapeados no template.
3) Dentro do bloco "dynamic_template_data", os campos podem ter qualquer nome, desde que eles tenham paridade com aqueles desenhados no template.
4) Dentro do bloco "dynamic_template_data", o array "items" não pode mudar de nome (precisa ser "items" mesmo), porém os campos dentro de items seguem à mesma regra do ponto "3".
Nesse array, no template podem ser feitos laços de repetição (hoje usamos isso, por exemplo, quando estamos destacando vídeos com suas URLs).
5) Os campos "attachments" é opcional.
Formato do jsonEmail - Quando for enviar um email.
{
"template_id":"[template_id]",
"from": {
"email": "exemplo@exemplo.com.br",
"name": "Descrição do serviço de Telemedicina"
},
"reply_to": {
"email": "exemplo@exemplo.com.br",
"name": "Descrição do serviço de Telemedicina"
},
"subject": "Aqui vai o título do email",
"attachments": [
{
"content": "PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KCiAgICA8aGVhZD4KICAgICAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIj4KICAgICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICAgICAgPHRpdGxlPkRvY3VtZW50PC90aXRsZT4KICAgIDwvaGVhZD4KCiAgICA8Ym9keT4KCiAgICA8L2JvZHk+Cgo8L2h0bWw+Cg==",
"filename": "index.html",
"type": "text/html",
"disposition": "attachment"
}
],
"personalizations": [
{
"to": [
{
"email": "paciente1@example.com",
"name": "Primeiro paciente "
},
{
"email": "paciente2@example.com",
"name": "Segundo paciente"
}
],
"cc": [
{
"email": "medico1@example.com",
"name": "Medico dos pacientes"
}
],
"bcc": [
{
"email": "supervisor@example.com",
"name": "Supervisor do médico"
}
],
"dynamic_template_data":{
"campo1":"R$ 239.85",
"campo2":true,
"campo3":"Também é possível criar campos booleanos, como este acima. O template pode manipular esse tipo de campo para configurar a mensagem",
"campo4":"Rua Qualquer, numero 1234, Bairro XPTO",
"campoN":"Apt. 123",
"items":[
{
"campo1_item":"Primeiro campo, texto puro.",
"campo2_item":"R$ 79.95",
"campoN_item": "Qualquer texto",
},
],
}
},
]
}
Passo 4 - Agendamento de Envio
É possível com o serviço gerar uma notificação com um agendamento, para envio no horário pré-determinado.
POST trigger – Agendamento de Envio
https://api-uns.net/notificacao/dev/notificacao-beneficiario/dev/notification?trigger=true&to_tag=<NUMERO DO CARTAO - SOMENTE NUMEROS>
to_tag = cpf para quem se deseja enviar a notificação.
trigger = caso definida como “true”, o envio da notificação não será instantâneo e sim agendado, utilizando os campos “dataNotificacao” e “horaNotificacao” para definição de quando a notificação será disparada
Passo 5 - Listar os agendamentos
GET aenviar – Listagem de Notificações pendentes de Envio
https://api-uns.net/notificacao/dev/notification?aenviar=true&code=bI00oYQknrCutEti6sCrCioAZC7l/iLBSaOBT1JykoEyZxqYasHxeA==
aenviar = chaveamento para buscar apenas as notificações pendentes de envio.
GET history – Listagem de Notificações Enviadas
https://api-uns.net/notificacao/dev/notification?history=true&code=bI00oYQknrCutEti6sCrCioAZC7l/iLBSaOBT1JykoEyZxqYasHxeA==
history = chaveamento para buscar apenas as notificações já enviadas.
-
Passo 6 - Acompanhamento do Processo
Verificação dos Jobs.
GET https://api.elasticencoder.videolib.live/dev/job
Exemplo de como retorno do comando será gerado o JSON abaixo:
{
"codMensagem": null,
"rows": 1,
"continuationToken": null,
"items": [
{
"guid": "job-2516970584269866335-f92daed3-a6ad-483e-9d11-e67aed51be73",
"application": "videolib-ecine-dev",
"assetIdMezanine": "asset-2516971159162250822-b3f503f5-241d-4c1b-876b-bcaf006e02e3",
"assetIdEncoded": null,
"presetId": "71",
"jobName": "job-001",
"startTime": null,
"finishTime": null,
"jobStatus": 0, -- indica o status do processamento.
"percent": null,
"duration": null,
"message": null,
"errorMessage": null,
"errorCode": null,
"listaMarcacoes": null,
"timestamp": null,
"cod_erro": null,
"status_ret": null,
"erro": null
}
],
"cod_erro": null,
"status_ret": null,
"erro": null
}
onde:
jobStatus - status do Job 0 - aguardando 1 - incluído na fila de processamento 2 - processando 3 - finalizado com sucesso 4 - finalizado com erro startTime - início do processamento finishTime - fim do processamento percent - percentual de processamento duration - duração do vídeo message - log do encoder errorMessage - caso haja erro no processamento. assetIdEncoded - id do novo asset gerado