loading-img

Porque escolher a Facilita Móvel?

Há mais de 15 anos entregando milhões de SMS para mais de 3.500 clientes de todo o Brasil, a Facilita está entre as maiores empresas do segmento de mensagens móveis. Daí vem o nome, Facilita Móvel, mensagens móveis.

Criando sua Conta Gratuita

Crie agora mesmo sua conta gratuita na Facilita SMS e ganhe até 15 SMS para testar nossa ferramenta. Você irá precisar de um usuário e senha para seguir neste manual. Crie a conta e obtenha um.

Bem vindo a Integração por HTTP / URL

A Integração usando o formato JSON é um modelo para envio de SMS destinado à utilização por empresas desejam ter uma integração dos seus sistemas com a plataforma de envio de SMS da Facilita Móvel.

Vantagens da Integração por JSON

Usando este tipo de integração da Facilita Móvel, é possível que qualquer sistema que possua acesso à internet possa enviar um ou múltiplos SMS. Através de uma simples adaptação ao sistema já existente você estará apto para enviar SMS a partir do seu sistema, não importa a linguagem de programação que foi construído o sistema, qualquer que seja a linguagem ou tecnologia pode acessar a integração JSON. Para que seja feito o acesso, basta acessar a URL descrita neste manual, que um SMS será disparado através de sua conta e enviado diretamente ao canal de Mensagens de Texto da Operadora.

Funcionamento

A troca de informações (envio de SMS, consulta de créditos, consulta de status, etc.) é realizada através de requisições HTTP para o endereço:

http://api.facilitamovel.com.br/api/< função > (as funções disponíveis são explicadas mais abaixo)

Para cada uma das funções previstas, deverá ser passado um objeto JSON por HTTP, cujos conteúdos devem estar codificados seguindo o padrão descrito em cada um dos métodos abaixo. Clique aqui, caso queira saber mais sobre o padrão JSON.

O resultado destas requisições retornará com o Content-Type igual a text/plain com código Status 200. Devolveremos o retorno da sua chamada em um objeto JSON no corpo da resposta.
Atenção: Mesmo que seja retornado um Erro de Login Inválido, o retorno do request será 200, mas dentro do corpo da requisição você irá ver um JSON com a variável "result": "erro" em casos de que a Facilita encontoru algum erro, ou "result": "success" para requests que foram executados com sucesso.

Acentuação

As operadoras não aceitam acentuações nem emojis neste canal de comunicação. Retire todos caracteres especiais e acentuações da sua mensagem antes de enviar o SMS para a Facilita.
Se por um acaso você enviar um SMS usando um destes caracteres, sua mensagem corre o risco de chegar desconfigurada, ou em alguns casos, não chegar ao celular de destino.

Quebra de Linha

Para utilizar quebra de linha ou ENTER na mensagem, utilize o caractere <br> na string que compõe a sua mensagem.


								{
									"phone": "51999430558",
									"message": "Mensagem de Teste<br>Vammos enviar com Enter",
									"externalkey": "111",
									"flashsms": "1"
								}
							
							

Resultado das requisições

Você irá controlar se foi erro ou não utilizando o atributo ("result": "erro") ou ("result": "success"). Perceba também que todas requisições irão devolver um atributo com o código do retorno, represetantado no no atributo ("code": "106"). Todas requisições que retornarem algum erro, os códigos sempre irão ser acima de 100, abaixo de 100 são os atributos considerado sucesso.

Usando seu usuário e senha

Para fazer a autenticação dos métodos abaixo, você só vai precisar setar no header da sua requisição as variáveis user and password. Veja como ficaria um exemplo em Java setando o header da sua aplicação

Atenção: Quando sua conta vir a ser uma conta ativa em nossa plataforma, você deverá autorizar os Ips dos seus servidores para somente esses IPs fazerem requisições usando seu usuário e senha. Caso você tenha IPs dinâmicos, entre em contato com o nosso suporte e solicite orientação para uma autenticação alternativa.


								public void doPost(HttpServletRequest request, HttpServletResponse response)
									throws ServletException, IOException
									{
										response.addHeader("user", "xx");
										response.addHeader("password", "xx");
										RequestDispatcher view = request.getRequestDispatcher("http://api.facilitamovel.com.br/api/simpleSendJson.ft");
										view.forward(request, response);
									}
							
							

Exemplo usando XMLHttpRequest


								xmlhttp=new XMLHttpRequest();
								var formData = new FormData();
								xmlhttp.open("POST", url);
								xmlhttp.setRequestHeader("user", "xx");
								xmlhttp.setRequestHeader("password", "xx");
								xmlhttp.send(formData);
							
							

Usando o Postman para testar a integração

Toda essa construção de métodos foi devidamente testada usando a ferramenta Postman versão v10.15.2 (Collection v2.1). Deixamos aqui um link que contém o nosso projeto para você entender melhor as funcionalidades, antes de desenvolver seu projeto.

Como setar o HEADER usando o Postman

Envio Simples

Função: simpleSendJson

Method Type: POST

URL:


							http://api.facilitamovel.com.br/api/simpleSendJson.ft
							
							
Atenção: Usuário e Senha devem ser setados no HEADER da Requisição
Parâmetros usados para montar o JSON a ser enviado no corpo da requisição
Parâmetro Tipo de Parâmetro Descrição
phone Obrigatório Destinatário que receberá a mensagem (sempre considerando o DDD)
message Obrigatório Mensagem a ser enviada, sempre considerando a Codificação de URL Encode
externalkey Opcional Qualquer chave fornecida pelo cliente: para pós utilização para consulta de status pela chave fornecida pelo próprio cliente.
flashsms Opcional Envie 1 quando quiser enviar flashsms
day Opcional Agenda a Mensagem para determinado dia, dois dígitos, ex: 02
month Opcional Agenda a Mensagem para determinado mês, dois dígitos, ex: 01
year Opcional Agenda a Mensagem para determinado ano, quatro dígitos, ex: 2013
formHour Opcional Agenda a Mensagem para determinada hora, 00-24h, ex: 23
formMinute Opcional Agenda a Mensagem para determinado minuto, dois dígitos, ex 05

Leia em nosso blog sobre o FlashSMS.

Observação: Caso os parâmetros day, month, year, formHour ou formMinute não forem especificados, ele irá assumir os parâmetros conforme horário de Brasília, entretanto, caso você queira, poderá especificar apenas alguns deles, pois os outros permanecerão no horário de Brasília. Exemplo, você quer agendar uma mensagem para o mês de março, não precisará preencher todos parâmetros, basta preencher o parâmetro month que os outros parâmetros serão assumidos com a data corrente.

Observação 2: Caso seja enviado o código do Brasil 55 + DDD+ celular, o sistema irá tratar retirando o 55 automaticamente, esse tratamento funciona apenas para esse método.

Como ficaria um JSON de Exemplo para este método
							
								 {
									"phone": "11999654008",
									"message": "Exemplo de Mensagem",
									"externalkey": "4577"
								}
							
						
Tabela de ERROS esperados
Código (code) Descrição do Erro (description)
100 Voce deve setar usuario e senha no HEADER da sua chamada
101 Formato JSON Invalido
102 JSON Body esta vindo vazio
103 Parametros faltando
104 Login Invalido
105 Usuario sem creditos
106 Celular Inválido
Exemplo de uma requisição com erro.
							
								{
									"result": "erro",
									"code": "106",
									"description": "Celular [519919430558] Invalido"
								}
							
						
Tabela de SUCESSO esperados
Código (code) Descrição do Sucesso (description)
1 Mensagem Agendada com Sucesso!
2 Mensagem Aceita com Sucesso!
Caso a requisição for bem sucedida, um JSON será devolvido contendo o SMSID (ID Interno do SMS), para você posteriormente consultar o status dele. Caso seja do seu interesse, você pode guardar no seu servidor este ID para futuras consultas.
							
								{
									"result": "success",
									"code": "1",
									"smsid": "68158362",
									"description": "Mensagem Aceita com Sucesso!"
								}
							
						

* smsid é um Id único que a plataforma devolve para o usuário. A função de se ter um Id único devolvido na requisição, é para o armazenamento no sistema do usuário para posteriormente consultar o status da Mensagem (Ver “Consultar Status da Mensagem”)

Envio Múltiplo

Função: multipleSendJson

Method Type: POST

URL:


							http://api.facilitamovel.com.br/api/multipleSendJson.ft
							
							
Atenção: Usuário e Senha devem ser setados no HEADER da Requisição
Parâmetros usados para montar o JSON a ser enviado no corpo da requisição
Parâmetro Tipo de Parâmetro Descrição
messages Obrigatório
Parâmetro Tipo de Parâmetro Descrição
phone Obrigatório Destinatário que receberá a mensagem (sempre considerando o DDD)
messages Obrigatório Mensagem a ser enviada, sempre considerando a Codificação de URL Encode
externalkey Opcional Qualquer chave fornecida pelo cliente: para pós utilização para consulta de status pela chave fornecida pelo próprio cliente.
flashsms Opcional Envie 1 quando quiser enviar flashsms
day Opcional Agenda a Mensagem para determinado dia, dois dígitos, ex: 02
month Opcional Agenda a Mensagem para determinado mês, dois dígitos, ex: 01
year Opcional Agenda a Mensagem para determinado ano, quatro dígitos, ex: 2013
formHour Opcional Agenda a Mensagem para determinada hora, 00-24h, ex: 23
formMinute Opcional Agenda a Mensagem para determinado minuto, dois dígitos, ex 05
O Parâmetro messages é um array contendo os itens descritos na tabela.

Leia em nosso blog sobre o FlashSMS.

Observação: Caso os parâmetros day, month, year, formHour ou formMinute não forem especificados, ele irá assumir os parâmetros conforme horário de Brasília, entretanto, caso você queira, poderá especificar apenas alguns deles, pois os outros permanecerão no horário de Brasília. Exemplo, você quer agendar uma mensagem para o mês de março, não precisará preencher todos parâmetros, basta preencher o parâmetro month que os outros parâmetros serão assumidos com a data corrente.

Observação 2: Caso seja enviado o código do Brasil 55 + DDD+ celular, o sistema irá tratar retirando o 55 automaticamente, esse tratamento funciona apenas para esse método.

Como ficaria um JSON de Exemplo para este método
							
								 {
									"day": "19",
									"month": "12",
									"year": "2023",
									"hour": "11",
									"minute": "10",
									"messages": [
										{
											"phone": "51999460558",
											"message": "mensagem inválida",
											"externalkey": "1",
											"flashsms": "0"
										 }, 
										  {
											"phone": "11999654448",
											"message": "mensagem de teste",
											"externalkey": "111",
											"flashsms": "1"
										 }, 
										  {
											"phone": "12999654441",
											"message": "mensagem de teste",
											"externalkey": "123",
											"flashsms": "1"
										 }
									]
								}
							
						
Tabela de ERROS esperados
Código (code) Descrição do Erro (description)
100 Voce deve setar usuario e senha no HEADER da sua chamada
101 Formato JSON Invalido
102 JSON Body esta vindo vazio
103 Parametros faltando
104 Login Invalido
105 Usuario sem creditos
106 Parametro [messages] nao pode ser nulo
107 Parametro [messages] precisa contar alguma mensagem
Exemplo de uma requisição com erro.
							
								{
									"result": "erro",
									"code": "106",
									"description": "Parametro [messages] nao pode ser nulo"
								}
							
						
Tabela de SUCESSO esperados
Código (code) Descrição do Sucesso (description)
1 Mensagem Agendada com Sucesso!
2 Mensagem Aceita com Sucesso!
Caso a requisição for bem sucedida, um JSON será devolvido contendo os atributos (total-invalidos, total-sms-aceitos e um array dentro do sms-ids-aceitos contendo todos smsid acetios na requisição.
							
								{
									"result": "success",
									"numeros-invalidos": [
										"151999654448"
									],
									"code": "1",
									"total-invalidos": 1,
									"total-sms-aceitos": 2,
									"sms-ids-aceitos": [
										"68158363",
										"68158364"
									],
									"description": "Mensagens Agendada com Sucesso!"
								}
							
						

* smsid é um Id único que a plataforma devolve para o usuário. A função de se ter um Id único devolvido na requisição, é para o armazenamento no sistema do usuário para posteriormente consultar o status da Mensagem (Ver “Consultar Status da Mensagem”)

Consultar Status da Mensagem

Função: dlrStatusJson

Method Type: POST

URL:


							http://api.facilitamovel.com.br/api/dlrStatusJson.ft
							
							
Atenção: Usuário e Senha devem ser setados no HEADER da Requisição
Parâmetros usados para montar o JSON a ser enviado no corpo da requisição
Parâmetro Tipo de Parâmetro Descrição
smsid Obrigatório Quando você envia um SMS usando os métodos simpleSend ou multipleSend, o sistema devolve um SMSID para cada SMS enviado.
Como ficaria um JSON de Exemplo para este método
							
								{
									"smsid": "68158313"
								}
							
						
Tabela de ERROS esperados
Código (code) Descrição do Erro (description)
100 Voce deve setar usuario e senha no HEADER da sua chamada
101 Formato JSON Invalido
102 JSON Body esta vindo vazio
104 Login Invalido
105 Parametro [smsid] nao pode ser nulo
106 [smsid] nao encontrado na base
Exemplo de uma requisição com erro.
							
								{
									"result": "erro",
									"code": "106",
									"description": "[smsid] nao encontrado na base"
								}
							
						
Tabela de SUCESSO esperados
Código (code) Status da Mensagem (status) Descrição do Status (description)
1 1 Mensagem na fila para envio
1 2 Mensagem Agendada
1 3 Mensagem sendo enviada
1 4 Entregue na Operadora com sucesso!
1 5 Mensagem nao enviada devido a erros
Exemplo de uma requisição retornando um JSON de sucesso
							
								{
									"result": "success",
									"code": "1",
									"description": "Mensagem na fila para envio",
									"status": 1
								}
							
						

Consultar Status da Mensagem pela Chave do Cliente

Função: dlrByExternalKeyJson

Method Type: POST

URL:


							http://api.facilitamovel.com.br/api/dlrByExternalKeyJson.ft
							
							
Atenção: Usuário e Senha devem ser setados no HEADER da Requisição
Neste método faremos uso da variável opcional, que é a chave fornecida pelo cliente (externalkey) na hora que foi enviado o SMS previamente.
Parâmetros usados para montar o JSON a ser enviado no corpo da requisição
Parâmetro Tipo de Parâmetro Descrição
externalkeys Obrigatório
Parâmetro Tipo de Parâmetro
key Obrigatório Chave fornecida pelo cliente no envio do SMS.
Como ficaria um JSON de Exemplo para este método
							
								{
									"externalkeys": [
										{
											"key": "321"
										}, 
										{
											"key": "111"
										}, 
										{
											"key": "111222"
										} 
									]
								}
							
						
Tabela de ERROS esperados
Código (code) Descrição do Erro (description)
100 Voce deve setar usuario e senha no HEADER da sua chamada
101 Formato JSON Invalido
102 JSON Body esta vindo vazio
104 Login Invalido
105 Parametro [externalkeys] nao pode ser nulo
106 Nenhuma das chaves passadas foi encontrada em nossa base
107 [key] nao encontrada na base
Exemplo de uma requisição com erro.
							
								{
									"result": "erro",
									"code": "105",
									"description": "Parametro [externalkeys] nao pode ser nulo"
								}
							
						
Caso tenha retornado com SUCESSO esperado, um JSON será devolvido.
Exemplo de uma requisição retornando um JSON de sucesso
							
								[
									{
										"result": "success",
										"code": "1",
										"description": "Mensagem Agendada",
										"key": "111",
										"status": 2
									},
									{
										"result": "success",
										"code": "1",
										"description": "Mensagem Agendada",
										"key": "321",
										"status": 2
									},
									{
										"result": "success",
										"code": "1",
										"description": "Mensagem sendo enviada",
										"key": "111222",
										"status": 3
									}
								]
							
						

Verificando créditos em sua conta

Função: checkCreditJson

Method Type: POST

URL:


							http://api.facilitamovel.com.br/api/checkCreditJson.ft
							
							
Atenção: Usuário e Senha devem ser setados no HEADER da Requisição
A requisição deve ser feita com o BODY vazio, apenas passando usuário e senha no header da requisição.
Tabela de ERROS esperados
Código (code) Descrição do Erro (description)
100 Voce deve setar usuario e senha no HEADER da sua chamada
104 Login Invalido
Exemplo de uma requisição com erro.
									
										{
											"result": "erro",
											"code": "104",
											"description": "Login Invalido"
										}
									
								
Caso a requisição retorne SUCESSO, um JSON com as informações abaixo será devolvido.
A data que os créditos expiram irá sempre vir no formato dd/mm/yyyy
									
										{
											"result": "success",
											"code": "1",
											"credits": 15400,
											"date-expires": "23-06-2023"
										}
									
								

Consultando a Quantidade de Mensagens Agendadas

Função: checkSchedMessagesJson

Method Type: POST

URL:


							http://api.facilitamovel.com.br/api/checkSchedMessagesJson.ft
							
							
Atenção: Usuário e Senha devem ser setados no HEADER da Requisição
A requisição deve ser feita com o BODY vazio, apenas passando usuário e senha no header da requisição.
Tabela de ERROS esperados
Código (code) Descrição do Erro (description)
100 Voce deve setar usuario e senha no HEADER da sua chamada
104 Login Invalido
Exemplo de uma requisição com erro.
									
										{
											"result": "erro",
											"code": "104",
											"description": "Login Invalido"
										}
									
								
Caso a requisição retorne SUCESSO, um JSON com as informações abaixo será devolvido.
									
										{
											"result": "success",
											"code": "1",
											"description": "Retornou um total de 4 mensagens agendadas",
											"agendadas": 4
										}
									
								

Excluir Mensagens Agendadas por SMSID

Função: deleteMsgAgendadasPorIdJson

Method Type: POST

URL:


							http://api.facilitamovel.com.br/api/deleteMsgAgendadasPorIdJson.ft
							
							
Atenção: Usuário e Senha devem ser setados no HEADER da Requisição
Este método passa um Array de JSON de SMSIDs contendo um, ou vários smsid..
Veja um exemplo de como ficaria um JSON de Exemplo para este método
							
								{
									"smsids": [
										{
											"smsid": "68158345"
										 }, 
										  {
											"smsid": "68158344"
										 }
									]
								}
							
						
Tabela de ERROS esperados
Código (code) Descrição do Erro (description)
100 Voce deve setar usuario e senha no HEADER da sua chamada
101 Formato JSON Invalido
102 JSON Body esta vindo vazio
104 Login Invalido
105 Parametro [smsids] nao pode ser nulo
106 Nenhum telefone foi especificado no array [smsids] -> smsid
Exemplo de uma requisição com erro.
							
								{
									"result": "erro",
									"code": "105",
									"description": "Parametro [smsids] nao pode ser nulo"
								}
							
						
Caso a requisição for SUCESSO, o sistema irá executar um delete na base pelos ids que você passou. Se você passou um ID que não existe, ele apenas nãov ai achar, mas vai retornar como operação concluída.
Exemplo de uma requisição retornando um JSON de sucesso
							
								{
									"result": "success",
									"code": "1",
									"description": "Operacao concluida com sucesso."
								}
							
						

Excluir Mensagens Agendadas por telefone

Função: deleteMsgAgendadasPorFoneJson

Method Type: POST

URL:


							http://api.facilitamovel.com.br/api/deleteMsgAgendadasPorFoneJson.ft
							
							
Atenção: Usuário e Senha devem ser setados no HEADER da Requisição
Este método passa um Array de JSON de Telefones contendo um, ou vários telefones (contendo DDD)..
Veja um exemplo de como ficaria um JSON de Exemplo para este método
							
								{
									"phones": [
										{
											"phone": "51999460558"
										 }, 
										  {
											"phone": "151999654448"
										 }, 
										  {
											"phone": "51999654448"
										 }
									]
								}
							
						
Tabela de ERROS esperados
Código (code) Descrição do Erro (description)
100 Voce deve setar usuario e senha no HEADER da sua chamada
101 Formato JSON Invalido
102 JSON Body esta vindo vazio
104 Login Invalido
105 Parametro [phones] nao pode ser nulo
106 Nenhum telefone foi especificado no array [phones] -> phone
Exemplo de uma requisição com erro.
							
								{
									"result": "erro",
									"code": "105",
									"description": "Parametro [phones] nao pode ser nulo"
								}
							
						
Caso a requisição for SUCESSO, o sistema irá executar um delete na base pelos telefones que você passou. Se você passou um telefone que não está como agendado, ele apenas não vai achar, mas vai retornar como operação concluída.
Exemplo de uma requisição retornando um JSON de sucesso
							
								{
									"result": "success",
									"code": "1",
									"description": "Operacao concluida com sucesso
								}
							
						

Consultando Mensagens Respondidas (MO)

Função: readMOJson

Method Type: POST

URL:


							http://api.facilitamovel.com.br/api/readMOJson.ft
							
							
Atenção: Usuário e Senha devem ser setados no HEADER da Requisição
Este método retornará uma lista de mensagens que foram respondidas pelos seus clientes.
Lembre-se que, quando você consultar este método, apenas 50 mensagens irão voltar para você, e essas mensagens passarão a ter status de lida=1 em nossa plataforma, e para continuar lendo as próximas, você deverá fazer várias chamadas até obter o retorno vazio.
Caso você esteja fazendo a integração em ambiente de testes, pode-se se enviar um JSON com a variável ambiente:"teste", neste caso o sistema não irá marcar nenhuma mensagem como lida. Mas atente-se para retirar essa variável quando você passar sua aplicação para produção.
Outra alternativa para marcar as mensagens como não lida, é ir até o painel da Facilita com seu usuário e senha, clique em Listar Mensagens -> Respostas -> Selecionar mensagens e marcar como não lida.
Parâmetro Tipo de Parâmetro Descrição
ambiente Opcional Caso você queira apenas testar este método, sem que o sistema marque as mensagens respondidas para lida, utilize o valor ambiente: "teste", caso contrário, envie um JSON vazio
Como ficaria um JSON de Exemplo para este método, caso você queira apenas testar sem marcar como lido, caso contrário, envie um JSON vazio.
							
								{
									ambiente: "teste"
								}
							
						
Tabela de ERROS esperados
Código (code) Descrição do Erro (description)
100 Voce deve setar usuario e senha no HEADER da sua chamada
101 Formato JSON Invalido
104 Login Invalido
Exemplo de uma requisição com erro.
							
								{
									"result": "erro",
									"code": "101",
									"description": "Formato JSON Invalido"
								}
							
						
Exemplo de uma requisição retornando um JSON de SUCESSO
							
								[
									{
										"telefone": "11999532558",
										"mensagem": "respondido 1",
										"datahora": "2023-06-19 16:45"
									},
									{
										"telefone": "11999598887",
										"mensagem": "respondido 2",
										"datahora": "2023-06-19 16:45"
									}
								]
							
						
O campo datahora irá retornar uma data nos formatos yyyy-MM-dd hh:mm