Teleguiado API Última atualização: 28-06-2020
Bem vindo a API do Teleguiado. Com ela você pode enviar mensagens SMS/WhatsApp e receber status de entrega e respostas dos usuários de forma automática.
Nossa API suporta nativamente o formato: REST
O sistema deve realizar uma chamada enviando os parâmetros por meio de GET ou POST.
O retorno para cada chamada será um JSON cujo formato é detalhado ao longo desta documentação.
Padrão da URL dos Web Services:
Todos as requisições são disponibilizadas via REST pela seguinte url:
{protocolo}://{servidor}:{porta}/{módulo}/rest/api/{serviço}
Dados da url:
- protocolo:
http ou https
- servidor:
{HOST}
- porta:
8080 (8443 para https)
- módulo:
sms-main-module/rest/api
- Exemplo:
https://{HOST}:8443/sms-main-module/rest/api/{serviço}
1.1 Autenticação
Todas as requisições da API do Teleguiado devem utilizar cabeçalhos incluíndo o Token de acesso.
Existem dois tipos de Tokens o baseado no usuário e senha e o Token de login.
Caso haja erro na autenticação, o respectivo código de erro será retornado.
Tokens baseados no usuário e senha:
É formado pela chave Base64 da sua conta e senha. Exemplo para obter o valor, utilizando o comando base64 do linux:
O formato é: usuário:senha
- $ echo -n usuário:senha | base64
Y29udGE6c2VuaGE=
O site base64Encode também faz essa codificação gratuitamente.
Token de Acesso Baseado no login:
É recebido no momento em que o login é efetuado através do serviço de login que será descrito no respectivo item.
O Token é codificado no formato Base64 e criptografado.
Quando a utilização dos serviços for finalizada, ao usar a requisição com o Token baseado no login, pode-se efetuar o logout da aplicação utilizando o serviço de logout. Caso não seja feito o logout, o timeout é de 30 minutos. Caso nenhuma requisição seja feita neste período, o usuário é automaticamente desconectado. E as requisições receberão o código de retorno 419 (Authentication Timeout).
1.2 Envio Simples HTTP (GET)
Esse tipo de envio é controlado pela fila de execução!
Cabeçalho:
- Content-Type:
application/x-www-form-urlencoded
- Token:
ExemploM2MC5uZXQuYnI6dGVzdA== Token de usuário e senha (Base64 => user:password)
Parâmetros:
- phone:
número de telefone a ser enviada a mensagem
- sendmethod:
método de envio (SMS ou WHATSAPP)
- message:
mensagem a ser enviada
Exemplo:
/messages/simple?phone={mobilephone}&sendmethod={sms}&message={message}
JSON da resposta:
{
"statusCode": 0,
"statusDescription": "Message sent",
"messageId": 321654,
"phone": "5551999998888"
}
JSON da resposta em caso de erro:
{
"statusCode": -1,
"statusDescription": "Bad request - parameter error",
"messageId": null,
"phone": null
}
Imagem de exemplo:
1.3 Envio Múltiplo HTTP (POST)
Esse tipo de envio é controlado pela fila de execução!
Cabeçalho:
- Content-Type:
application/json
- Token:
ExemploM2MC5uZXQuYnI6dGVzdA== Token de usuário e senha (Base64 => user:password)
Parâmetros:
- sendMethod:
método de envio (SMS ou WHATSAPP)
- messages:
lista de mensagens contendo o número e o texto da mensagem (Limitado em 500 por requisição)
- phone:
número de telefone a ser enviada a mensagem
- message:
mensagem a ser enviada
- downtime (opcional):
mensagem de renitência
- minutes:
tempo em minutos de espera para enviar a mensagem de renitência
- message:
mensagem de renitência a ser enviada
Exemplo:
JSON da requisição:
{
"sendMethod": "SMS",
"messages": [{
"phone": "51999999999",
"message": "Texto da mensagem 1!"
},{
"phone": 51999999998,
"message": "Texto da mensagem 2!"
}],
"downtime":{
"minutes": 5,
"message": "Texto da mensagem de renitência!"
}
}
JSON da resposta:
{
"“size": 2,
"messageList": [{
"id": 444444,
"phone": "51999999999",
"status": 0
},{
"id": 444445,
"phone": "51999999998",
"status": 0
}]
}
JSON da resposta em caso de erro:
{
"statusCode": -1,
"statusDescription": "Bad request - parameter error",
"messageId": null,
"phone": null
}
Imagem de exemplo:
1.4 Códigos de Status
- Message sent:
0
- Bad request - parameter error:
-1
- Parameter not found - user:
-2
- Parameter not found - password:
-3
- Parameter not found - phone:
-4
- Parameter not found - message:
-5
- Unknown user:
-6
- Blacklist number:
-7
- Message to long:
-8
- Invalid number:
-9
- Invalid IP:
-10
- Unsupported encoding exception:
-11
- Permission denied:
-12
- Amount of message exceeded:
-14
- Unknown error:
99
1.5 Envio de Mensagem Avulsa
Esse tipo de mensagem tem prioridade na fila de execução.
Aviso
A mensagem é igual para todos os números na mesma requisição.
Limite de 10 mensagens por requisição.
Cabeçalho:
- Content-Type:
application/json
- Token:
ExemploLyfbeDLk1VAo1LvBoTc/iOOVEzcBCes= Token de usuário e senha (Base64 => user:password)
Parâmetros:
- sendMethod:
método de envio (SMS ou WHATSAPP)
- phones:
lista contendo os números de telefone para qual a mensagem será enviada (máximo 10).
- text:
mensagem a ser enviada
- downtime (opcional):
mensagem de renitência
- minutes:
tempo em minutos de espera para enviar a mensagem de renitência
- message:
mensagem de renitência a ser enviada
Exemplo:
JSON da requisição:
{
"sendMethod": "SMS",
"phones": ["5551988887777", "51988887777"],
"text": "Mensagem de texto",
"downtime":{
"minutes": 5,
"message": "Texto da mensagem de renitência!"
}
}
JSON da resposta (lista contendo os identificadores de cada mensagem):
{
"[ 5100200 ]"
}
Imagem de exemplo:
1.6 Envio de Campanha Direta
Esse tipo de envio é controlado pela fila de execução!
Cabeçalho:
- Content-Type:
application/json
- Token:
ExemploLyfbeDLk1VAo1LvBoTc/iOOVEzcBCes= Token de usuário e senha (Base64 => user:password)
Parâmetros:
- sendMethod:
método de envio (SMS ou WHATSAPP).
- name:
nome da campanha a ser cadastrada.
- messageInfo:
lista de mensagens a serem enviadas.
- phoneNumber:
número do telefone.
- text:
mensagem a ser enviada.
- downtime (opcional):
mensagem de renitência
- minutes:
tempo em minutos de espera para enviar a mensagem de renitência
- message:
mensagem de renitência a ser enviada
JSON da requisição:
{
"sendMethod": "SMS",
"name": "Contatos 1",
"messageInfo": [{
"phone": "51999999999",
"text": "Texto Livre"
}],
"downtime":{
"minutes": 5,
"message": "Texto da mensagem de renitência!"
}
}
JSON da resposta:
{
"size": 2,
"messageList": [{
"id": 444444,
"phone": "51999999999",
"status": 0
}]
}
Imagem de exemplo:
1.7 Envio de mensagem direta via WhatsApp
Esse tipo de envio não é controlado pela fila de execução!
Sem fila de execução entra na prioridade de envio.
Canal de comunicação WhatsApp
Para efetuar esse tipo de envio é necessário ter um canal de comunicação WhatsApp cadastrado e uma conta do Teleguiado WhatsappBot ativa.
Para enviar imagem, arquivo, áudio ou vídeo basta enviar uma URL do item como texto da mensagem. Não é possível enviar texto e arquivo ao mesmo tempo.
O tempo de intervalo de envio das mensagens deve ser controlada pelo cliente que está integrando.
Dados da URL::
- protocolo:
http ou https
- servidor:
HOST
- porta:
8080 (8443 para https)
- módulo:
/whatsapp/unique
Cabeçalho:
- Content-Type:
application/json
- Token:
ExemploM2MC5uZXQuYnI6dGVzdA== Token de usuário e senha (Base64 => user:password)
Parâmetros:
- sender: {
id: número do whatsapp}.
- recipient: {
id: identificador do canal}.
- message: {
text: texto da mensagem}.
JSON da requisição:
{
"sender": {"id": "51999999999"},
"recipient": {"id": "76DF5becfa3"},
"message": {"text": "Mensagem via Whatsapp"}
}
JSON da resposta:
{
"messageId": 2
}
1.8 Atendimento Offline
1.8.1 Cadastro de Atividade
Cadastro de atividades para o Atendimento Offline.
Caso não for informado o tempo de execução da atividade será atribuído o valor de uma hora (1).
Cabeçalho:
- Content-Type:
application/json
- Token:
ExemploM2MC5uZXQuYnI6dGVzdA== Token de usuário e senha (Base64 => user:password)
Parâmetros:
- department:
Departamento que a atividade será vinculada.
- name:
Nome atribuído para a atividade.
- description:
Descrição da atividade.
- timeToFinish:
Tempo de execução da atividade em horas.
JSON da requisição:
{
"department": {"id": 999},
"name": "Cadastro de Atividade",
"description": "Contactar cliente em 22/12/2020",
"timeToFinish": 3
}
JSON da resposta:
{
"id": 3333,
"account": {"@type": "Company", "id": 222},
"unit": {"id": 111},
"department": {"id": 999},
"name": "Cadastro de Atividade",
"description": "Contactar cliente em 22/12/2020",
"status": "PENDING",
"timeToFinish": 3,
"createdAt": 1593112904720
}
Possíveis erros de retorno:
- UNKNOWN_ACTIVE_NAME:
Envio da atividade sem nome.
- UNKNOWN_DEPARTMENT:
Departamento desconhecido.
- UNKNOWN_TOKEN:
Token não identificado.
- UNKNOWN_USER:
Usário desconhecido.
- DEPARTMENT_NOT_FOUND:
Departamento não encontrado.
Imagem de exemplo:
Imagem de exemplo de uso no teleguiado:
- UNKNOWN_ACTIVE_NAME:
Envio da atividade sem nome.
- UNKNOWN_DEPARTMENT:
Departamento desconhecido.
- UNKNOWN_TOKEN:
Token não identificado.
- UNKNOWN_USER:
Usário desconhecido.
- DEPARTMENT_NOT_FOUND:
Departamento não encontrado.
1.8.2 Consultar Atividade
Consulta de atividade do Atendimento Offline.
A busca é feita pelo ID da atividade informado no momento do cadastro da atividade.
A consulta somente retornará a atividade vinculada à conta em que o usuário está cadastrado.
Cabeçalho:
- Content-Type:
application/x-www-form-urlencoded
- Token:
ExemploM2MC5uZXQuYnI6dGVzdA== Token de usuário e senha (Base64 => user:password)
Parâmetros:
- activityId:
Identificador da atividade.
- departmentId:
Identificador do departamento.
Exemplo:
/activity?activityId={activityID}&departmentId={departmentID}
JSON da resposta:
{
"id": 3333,
"account": {"@type": "Company", "id": 222},
"unit": {"id": 111},
"department": {"id": 999},
"name": "Cadastro de Atividade",
"description": "Contactar cliente em 22/12/2020",
"status": "PENDING",
"timeToFinish": 3,
"finishTime": 1593112904720,
"updatedAt": 1593112904720,
"createdAt": 1593112904720
}
Possíveis erros de retorno:
- PARAMETERS_ERROR:
Erro de parâmetros.
- PARAMETER_ID_NOT_FOUND:
Parâmetro ID não encontrado.
- UNKNOWN_TOKEN:
Token não identificado.
- UNKNOWN_USER:
Usário desconhecido.
- DEPARTMENT_NOT_FOUND:
Departamento não encontrado.
- UNKNOWN_ERROR:
Erro desconhecido.
Imagem de exemplo:
- PARAMETERS_ERROR:
Erro de parâmetros.
- PARAMETER_ID_NOT_FOUND:
Parâmetro ID não encontrado.
- UNKNOWN_TOKEN:
Token não identificado.
- UNKNOWN_USER:
Usário desconhecido.
- DEPARTMENT_NOT_FOUND:
Departamento não encontrado.
- UNKNOWN_ERROR:
Erro desconhecido.
2.1 Blacklist
2.1.1 Cadastro de Número
Cadastro de número na Blacklist.
Cabeçalho:
- Content-Type:
application/json
- Token:
ExemploM2MC5uZXQuYnI6dGVzdA== Token de usuário e senha (Base64 => user:password)
Parâmetros:
- number:
Número
- reason:
Motivo para ter cadastrado o número.
JSON da requisição:
{
"number": "9999999999",
"reason": "Número não registrado na rede."
}
JSON da resposta:
{
"phoneNumber": {
"countryCode": "55",
"regionCode": "51",
"number": "988887777",
"fullNumber": "5551988887777"
},
"number": 5551988887777,
"reason": "Número não registrado na rede."
}
Possíveis erros de retorno:
- UNKNOWN_PHONE_NUMBER:
Parâmetro número não encontrado.
- UNKNOWN_TOKEN:
Token não identificado.
- UNKNOWN_USER:
Usário desconhecido.
- PERMISSION_DENIED:
Sem permissão para cadastro.
- UNKNOWN_ERROR:
Departamento desconhecido.
Imagem de exemplo:
- UNKNOWN_PHONE_NUMBER:
Parâmetro número não encontrado.
- UNKNOWN_TOKEN:
Token não identificado.
- UNKNOWN_USER:
Usário desconhecido.
- PERMISSION_DENIED:
Sem permissão para cadastro.
- UNKNOWN_ERROR:
Departamento desconhecido.
2.1.2 Consultar Número
Consulta de número na blacklist.
Cabeçalho:
- Content-Type:
application/x-www-form-urlencoded
- Token:
ExemploM2MC5uZXQuYnI6dGVzdA== Token de usuário e senha (Base64 => user:password)
Parâmetros:
- phone:
Número do telefone.
Exemplo:
/blacklist?phone={NUMERO}
JSON da resposta:
{
"phoneNumber": {
"countryCode": "55",
"regionCode": "51",
"number": "988887777",
"fullNumber": "5551988887777"
},
"number": 5551988887777,
"createDate": 1616008874383,
"reason": "Número não registrado na rede."
}
Possíveis erros de retorno:
- UNKNOWN_PHONE_NUMBER:
Parâmetro número não encontrado.
- UNKNOWN_TOKEN:
Token não identificado.
- UNKNOWN_USER:
Usário desconhecido.
- PERMISSION_DENIED:
Sem permissão para cadastro.
- UNKNOWN_ERROR:
Departamento desconhecido.
Imagem de exemplo:
- UNKNOWN_PHONE_NUMBER:
Parâmetro número não encontrado.
- UNKNOWN_TOKEN:
Token não identificado.
- UNKNOWN_USER:
Usário desconhecido.
- PERMISSION_DENIED:
Sem permissão para cadastro.
- UNKNOWN_ERROR:
Departamento desconhecido.
3.1 Envio de Template
3.1.1 Múltiplo HTTP (POST)
Esse tipo de envio é controlado pela fila de execução!
Cabeçalho:
- Content-Type:
application/json
- Token:
ExemploM2MC5uZXQuYnI6dGVzdA== Token de usuário e senha (Base64 => user:password)
Parâmetros:
- sendMethod:
método de envio (PROVIDER)
- messages:
lista de mensagens contendo o número e o texto da mensagem (Limitado em 500 por requisição)
- phone:
número de telefone a ser enviada a mensagem
- templateMessageName:
Nome do template a ser enviado
- templateVariables (opcional):
Variáveis do template (Limite de 2 variáveis)
Exemplo:
JSON da requisição:
{
"sendMethod": "PROVIDER",
"messages": [{
"phone": "51999999999",
"templateMessageName": "1633646884341_teste",
"templateVariables": "João;Aprovado"
},{
"phone": 51999999998,
"templateMessageName": "1633646884341_teste",
"templateVariables": "Pedro;Reprovado"
}]
}
JSON da resposta:
{
"“size": 2,
"messageList": [{
"id": 444444,
"phone": "51999999999",
"status": 0
},{
"id": 444445,
"phone": "51999999998",
"status": 0
}]
}
JSON da resposta em caso de erro:
{
"statusCode": -1,
"statusDescription": "Bad request - parameter error",
"messageId": null,
"phone": null
}
Imagem de exemplo:
3.1.2 Mensagem Avulsa
Esse tipo de mensagem tem prioridade na fila de execução.
Aviso
A mensagem é igual para todos os números na mesma requisição.
Limite de 10 mensagens por requisição.
Cabeçalho:
- Content-Type:
application/json
- Token:
ExemploLyfbeDLk1VAo1LvBoTc/iOOVEzcBCes= Token de usuário e senha (Base64 => user:password)
Parâmetros:
- sendMethod:
método de envio (PROVIDER)
- phones:
lista contendo os números de telefone para qual a mensagem será enviada (máximo 10).
- templateMessageName:
Nome do template a ser enviado
- templateVariables (opcional):
Variáveis do template (Limite de 2 variáveis)
Exemplo:
JSON da requisição:
{
"sendMethod": "PROVIDER",
"phones": ["5551988887777", "51988887777"],
"templateMessageName": "ticket_check",
"templateVariables": "Matrículas;11/12/2024"
}
JSON da resposta (lista contendo os identificadores de cada mensagem):
{
"[ 5100200, 5100201 ]"
}