Cada pedido realizado terá de incluir no respetivo cabeçalho do pedido http a autenticação do cliente. Tal é feito usando uma autenticação de acesso básico HTTP.
O cabeçalho da autorização é construído combinando a combinação utilizador:apiPassword e codificando-a em base64. A esta combinação antepõe-se Authorization: Basic
Por exemplo, para o utilizador username e palavra-passe apiPassword o cabeçalho resultante seria:
Authorization: Basic dXNlcm5hbWU6YXBpUGFzc3dvcmQ=
Campanhas
SMS
Envio SMS
POST{{DASHBOARD_HOST}}/api/rest/sms
curl -X POST '{{DASHBOARD_HOST}}/api/rest/sms'\-H'Content-Type: application/json'\-H'Authorization: Basic YOUR_AUTH_TOKEN'\-d'{
"to": ["34666555444"],
"from": "TEST",
"message": "SMS text message"
}'
Texto da mensagem. O máximo de caracteres permitidos são 160 se não for especificado que a mensagem é multipartes. (Veja parâmetro parts). O texto deverá receber a codificação UTF-8.
to
array
Sim
Número do telefone móvel destinatário da mensagem. Deve-se incluir o prefixo do país destinatário. (Exemplo Brasil 5511966778899). Pode-se especificar diversos destinatários através deste parâmetro.
from
string
Sim
Nome do remetente da mensagem, este parâmetro é formado por 15 caracteres numéricos ou 11 caracteres alfanuméricos. Não é permitida a utilização de caracteres especiais.
encoding
string
Não
Os valores possíveis são 'gsm', 'gsm-pt' e 'utf-16'. O valor gsm deve ser utilizado para envios convencionais na codificação GSM7 com até 160 caracteres por mensagem. O valor utf-16 deve ser utilizado para envios com caracteres especiais na codificação UCS2 (UTF16) com até 70 caracteres por mensagem. O valor padrão deste parâmetro é gsm.
scheduleDate
string
Não
Data de envio das mensagens no UTC. Para envios de mensagens programadas, é possível especificar a data e hora do envio no formato YYYYmmddHHiiss (Exemplo: 20130215142000 seria 15 de fevereiro de 2013 às 14:20). Para envios imediatos, não especifique este parâmetro.
expirationDate
string
Não
Data de validade das mensagens no UTC. Formato YYYYmmddHHiiss (Exemplo: 20130215142000 seria 15 de fevereiro de 2013 às 14:20).
parts
integer
Não
Este parâmetro indica o número máximo de partes que a mensagem terá no momento do envio. O valor padrão deste parâmetro é 1. Caso este parâmetro não seja especificado, ao enviar uma mensagem com mais de 160 caracteres em codificação GSM ou 70 caracteres na codificação UTF16, o processamento da mensagem falhará. É preciso ter em conta que mensagens concatenadas em GSM são fracionadas em partes com até 153 caracteres cada e em UTF16 em 67. Cada parte será processada e tarifada distintamente, mas ao destinatário chegará como uma única mensagem com a indicação de paginação de acordo com as limitações de cada operadora local. Nosso servidor utilizará o mínimo de partes necessárias para processar a mensagem mesmo que seja indicado um valor alto de partes no parâmetro, caso o número indicado seja inferior ao necessário, o envio falhará e será retornado o código 105. O número máximo de partes permitidas é 15.
notificationUrl
string|array
Não
URL que será feita a chamada GET com os parâmetros desejados de resposta.
trans
integer
Não
Os valores disponíveis são 1 ou 0. Ao indiciar o valor 0 (este é o valor padrão caso o parâmetro não seja especificado) o servidor não realizará nenhuma alteração nos caracteres especiais da mensagem. Com o valor 1 indicado, o servidor fará a alteração dos caracteres especiais a caracteres comuns de acordo com a seguinte regra de tradução: 'á' => 'a', 'í'=>'i', 'ó'=>'o', 'ú'=>'u', 'ç'=>'Ç', 'Á'=>'A', 'Í'=>'I', 'Ó'=>'O', 'Ú'=>'U', 'À'=>'A', 'È'=>'E', 'Ì'=>'I', 'Ò'=>'O', 'Ù'=>'U', 'º' => '', 'ª' => '', 'Õ' => 'O', 'õ' => 'o', 'â' => 'a', 'ê' => 'e', 'î'=>'i', 'ô'=>'o', 'û'=>'u', 'Â'=>'A', 'Ê'=>'E', 'Î'=>'I', 'Ô'=>'O', 'Û'=>'U', 'ã' => 'a', 'Ã' => 'A'.
campaignName
string
Não
Nome da campanha Se especificado, uma campanha será criada com o nome indicado no painel que conterá as estatísticas de envio. Se uma campanha com este nome já existe, as estatísticas de entrega serão adicionadas à campanha existente.
tags
array
Não
campaignName é necessário se este parâmetro for especificado. Lista de tags para adicionar à campanha. As tags podem ser usadas para filtrar as estatísticas no painel.
certified
boolean
Não
Se for especificado como true, a mensagem será enviada como certificado. * Mensagens certificadas têm custo adicional
sub
array
Não
array com variáveis de substituição que serão aplicadas à mensagem.
splitParts
boolean
Não
Para mensagens que excedem o tamanho máximo do SMS, o servidor dividirá a mensagem em vários SMS, em vez de usar o SMS concatenado. O valor padrão é false.
flash
boolean
Não
Um flash SMS é uma mensagem que aparece diretamente na tela do dispositivo. Dependendo do modelo e do sistema operacional, é possível armazená-lo na caixa de entrada e enviar mensagens concatenadas.
availableTimes
array
Não
Indique as horas em que o SMS será enviado. Os objetos json são definidos na forma:
[{"day": 1, "from": "09:00", "to": "21:00"}]
day: é indicado um dia no intervalo de segunda a domingo, deve ser um número entre 1 e 7. Opcional: Se não for especificado, o intervalo se aplicará a todos os dias da semana. from: hora que define o início do intervalo de tempo no formato UTC de 24 horas. to: hora que define o fim do intervalo de tempo no formato UTC de 24 horas.
otpConfig
object
Não
No caso de adicionar a variável {OTP_CODE} dentro do parâmetro "message" os parâmetros do código OTP podem ser especificados. Por exemplo:
{"alpha": true, "length": 5}
alpha: indique se o código é alfanumérico ou numérico. O valor padrão é false. length: tamanho do código. O valor mínimo é 3 e o valor máximo é 10. O valor padrão é 4. maxAttempts: número máximo de tentativas. O valor mínimo é 1 e o valor máximo é 10. O valor padrão é 3. maxSecondsValidity: número máximo de segundos entre a criação e validação do código. O valor mínimo é 30 e o valor máximo é 600. O valor padrão é 60. appId: o mesmo telefone ou e-mail pode ser validado ao mesmo tempo, desde que seja com um appId diferente. O valor padrão é "". rejectIfPendingCode: impede a geração de um novo código OTP se existir um anterior em estado pendente. O valor por defeito é false.
Variáveis de substituição
Ao usar o sub-parâmetro, a matriz deve conter tantos itens quanto os destinatários de envio.
Variáveis personalizadas podem ser indicadas no corpo da mensagem. Essas variáveis serão substituídas pelas variáveis personalizadas do contato ou pelas variáveis indicadas no parâmetro sub.
Vários URLs de notificação
Ao usar vários URLs de notificação, a matriz deve conter tantos itens quanto os destinatários de envio.
{"from":"TEST","to":["34666555444","34666555333"],"message":"SMS text message","notificationUrl":["https://example.com/first-notification-url","https://example.com/second-notification-url"]}
É possível especificar um URL de notificação diferente por destinatário.
Para isso você tem que usar um array para o parâmetro notificationUrl. A matriz deve conter tantos elementos quantos os destinatários de envio.
Filtros variáveis personalizados
É possível adicionar os seguintes filtros às variáveis personalizadas.
Filtro
Descrição
Ejemplo
Resultado
lower
Retornar texto em minúsculas.
{name|lower}
my name
upper
Retornar texto em maiúsculas.
{name|upper}
MY NAME
capitalize
Retorne o texto com a primeira letra da primeira palavra em maiúsculas.
{name|capitalize}
My name
capitalizeAll
Retorne o texto com a primeira letra de cada palavra em maiúsculas.
{name|capitalizeAll}
My Name
formatDotComma
Retorna o número com um ponto como separador de milhares y vírgula como separador de decimais.
{number|formatDotComma}
1.234,56
formatCommaDot
Retorna o número com uma vírgula como separador de milhares y ponto como separador de decimais.
{number|formatCommaDot}
1,234.56
shorten
Retorna um url encurtado. Deve ser um URL válido.
{url|shorten}
https://sms.tl/xxxxxx
Avisos de recebimento/DLR
Se desejar receber os avisos de recebimento / dlr em tempo real, é necessário especificar o parâmetro notificationUrl e em seu valor indicar a URL para onde nosso servidor enviará os dados de cada envio.
O funcionamento consiste na especificação de cada envio, a URL onde é desejado receber a requisição GET do nosso servidor com o DLR do envio assim que o recebemos da operadora.
Nosso servidor enviará as variáveis através do método GET. Cada variável deverá conter caracteres de escape que será substituído com o seu devido valor. A formação desses caracteres de escape é formada por "%" seguido de uma letra. Cada letra possui seu valor correspondente. Veja abaixo um exemplo de URL:
%y data do DLR da mensagem no formato YYYY-MM-DD HH:MM, exemplo: 2020-09-21 14:19
%n número da parte (mensagens concatenadas).
%C identificador de campanha.
%S identificador de envio.
Veja abaixo um exemplo de URL a ser especificada no parâmetro para que o nosso servidor possa fazer as substituições dos caracteres de escape a sua URL e também um exemplo de envio de mensagem com a solicitação do Aviso de recebimento/DLR
{"data":[{"id":"XXXXXXXXXXXXX","from":"SAMPLE","to":"34666555444","message":"SMS text message","campaignId":123456,"sendingId":234567,"isDelivered":true,"isClicked":false,"events":[{"type":"sent","date":"2021-07-19T15:00:33+00:00","isMobile":false,"browser":"","os":""},{"type":"delivered","date":"2021-07-19T15:00:33+00:00","isMobile":false,"browser":"","os":""}],"customFields":{"email":"test@test.com","phone":"34666555444","name":"Name"},"links":{"self":"{{DASHBOARD_HOST}}/api/rest/sms/XXXXXXXXXXXXX"}}]}
Error response (HTTP 404)
{"error":{"code":404,"description":"Resource not found"}}
Parâmetro
Tipo
Obrigatório
Descrição
id
string
Sim
Identificador da mensagem retornada na resposta à chamada para api/rest/sms no campo id. É possível especificar vários identificadores separados por vírgulas.
Corpo do email em formato HTML com codificação UTF-8. Obrigatório sem templateId.
templateId
integer
Não
ID do modelo legacy para enviar como o corpo do email. Necessário sem body. Este ID refere-se a modelos criados a partir da versão anterior ({{DASHBOARD_HOST}}) da aplicação {{NAME}}. Recomenda-se a utilização do parâmetro templateV2Id sempre que possível.
templateV2Id
integer
Não
ID do modelo para enviar como o corpo do email. Necessário sem body. Este ID refere-se à versão atual ({{HOST}}) da aplicação {{NAME}}.
to
array
Sim
Emails destinatários do envio. É permitido indicar múltiplos destinatários.
cc
array
Não
Emails destinatários em cópia do envio. É permitido indicar múltiplos destinatários.
bcc
array
Não
Emails destinatários em cópia oculta do envio. É permitido indicar múltiplos destinatários.
fromEmail
string
Sim
Email remetente. O email indicado deve estar validado na plataforma {{NAME}}.
subject
string
Sim
Breve resumo sobre o assunto da mensagem.
fromName
string
Não
Nome do remetente do envio.
replyTo
string
Sim
Direção de e-mail para onde os destinatários poderão responder. O email indicado deve estar validado na plataforma {{NAME}}.
scheduleDate
string
Não
Data de envio das mensagens. Para envios de mensagens programadas, é possível especificar a data e hora do envio no formato YYYYmmddHHiiss (Exemplo: 20130215142000 seria 15 de fevereiro de 2013 às 14:20). Para envios imediatos, não especifique este parâmetro.
campaignName
string
Não
Nome da campanha Se especificado, uma campanha será criada com o nome indicado no painel que conterá as estatísticas de envio. Se uma campanha com este nome já existe, as estatísticas de entrega serão adicionadas à campanha existente.
tags
array
Não
campaignName é necessário se este parâmetro for especificado. Lista de tags para adicionar à campanha. As tags podem ser usadas para filtrar as estatísticas no painel.
certified
boolean
Não
Se for especificado como true, a mensagem será enviada como certificado. * Mensagens certificadas têm custo adicional
sub
array
Não
array com variáveis de substituição que serão aplicadas à mensagem.Los archivos adjuntos tienen coste adicional
attachments
array
Não
Anexos do email. Uma array de objetos é definido da seguinte maneira:
name: nome do arquivo. content: conteúdo do arquivo em base64. contentType: Content type do arquivo.
* Os anexos têm um custo adicional
trackOpens
boolean
Não
Adicione um pixel para obter estatísticas de abertura. O valor padrão é true.
trackClicks
boolean
Não
Rastreie os links para obter estatísticas de clique. O valor padrão é true.
otpConfig
object
Não
No caso de adicionar a variável {OTP_CODE} dentro do parâmetro "body" os parâmetros do código OTP podem ser especificados. Por exemplo:
{"alpha": true, "length": 5}
alpha: indique se o código é alfanumérico ou numérico. O valor padrão é false. length: tamanho do código. O valor mínimo é 3 e o valor máximo é 10. O valor padrão é 4. maxAttempts: número máximo de tentativas. O valor mínimo é 1 e o valor máximo é 10. O valor padrão é 3. maxSecondsValidity: número máximo de segundos entre a criação e validação do código. O valor mínimo é 30 e o valor máximo é 600. O valor padrão é 60. appId: o mesmo telefone ou e-mail pode ser validado ao mesmo tempo, desde que seja com um appId diferente. O valor padrão é "". rejectIfPendingCode: impede a geração de um novo código OTP se existir um anterior em estado pendente. O valor por defeito é false.
Variáveis de substituição
Ao usar o sub-parâmetro, a matriz deve conter tantos itens quanto os destinatários de envio.
Variáveis personalizadas podem ser indicadas no corpo da mensagem. Essas variáveis serão substituídas pelas variáveis personalizadas do contato ou pelas variáveis indicadas no parâmetro sub.
Voz
Envio de pedido de Voz
POST{{DASHBOARD_HOST}}/api/rest/voice
curl -X POST '{{DASHBOARD_HOST}}/api/rest/voice'\-H'Content-Type: application/json'\-H'Authorization: Basic YOUR_AUTH_TOKEN'\-d'{
"to": ["34666666666"],
"message": "Esto es un test de mensaje de voz",
"gender": "F",
"language": "es_ES"
}'
<?php$curl=curl_init();curl_setopt_array($curl,array(CURLOPT_URL=>'{{DASHBOARD_HOST}}/api/rest/voice',CURLOPT_RETURNTRANSFER=>true,CURLOPT_CUSTOMREQUEST=>'POST',CURLOPT_POSTFIELDS=>'{
"to": ["34666666666"],
"message": "Esto es un test de mensaje de voz",
"gender": "F",
"language": "es_ES"
}',CURLOPT_HTTPHEADER=>array('Content-Type: application/json','Authorization: Basic YOUR_AUTH_TOKEN'),));$response=curl_exec($curl);curl_close($curl);echo$response;
importjava.io.DataOutputStream;importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.net.URL;importjava.net.HttpsURLConnection;publicclassApp{publicstaticvoidmain(String[]args){try{URLurl=newURL("{{DASHBOARD_HOST}}/api/rest/voice");HttpsURLConnectionconnection=(HttpsURLConnection)url.openConnection();connection.setRequestMethod("POST");connection.setRequestProperty("Authorization","Basic YOUR_AUTH_TOKEN");connection.setRequestProperty("Accept","application/json");StringrequestBody="{ \"to\": [\"34666666666\"], \"message\": \"Esto es un test de mensaje de voz\", \"gender\": \"F\", \"language\": \"es_ES\" }";connection.setDoOutput(true);DataOutputStreamwr=newDataOutputStream(connection.getOutputStream());wr.writeBytes(requestBody);wr.flush();wr.close();BufferedReaderin=newBufferedReader(newInputStreamReader(connection.getInputStream()));StringinputLine;StringBufferresponse=newStringBuffer();while((inputLine=in.readLine())!=null){response.append(inputLine);}in.close();System.out.println(response.toString());}catch(Exceptione){// TODO: handle exception}}}
varaxios=require('axios');varconfig={method:'post',url:'{{DASHBOARD_HOST}}/api/rest/voice',headers:{'Content-Type':'application/json','Authorization':'Basic YOUR_AUTH_TOKEN'},data:'{ "to": ["34666666666"], "message": "Esto es un test de mensaje de voz", "gender": "F", "language": "es_ES" }'};axios(config).then(function(response){console.log(JSON.stringify(response.data));}).catch(function(error){console.log(error);});
importrequestsurl="{{DASHBOARD_HOST}}/api/rest/voice"payload="{ \"to\": [\"34666666666\"], \"message\": \"Esto es un test de mensaje de voz\", \"gender\": \"F\", \"language\": \"es_ES\" }"headers={'Content-Type':'application/json','Authorization':'Basic YOUR_AUTH_TOKEN'}response=requests.request("POST",url,headers=headers,data=payload)print(response.text)
require"uri"require"net/http"url=URI("{{DASHBOARD_HOST}}/api/rest/voice")https=Net::HTTP.new(url.host,url.port)https.use_ssl=truerequest=Net::HTTP::Post.new(url)request["Content-Type"]="application/json"request["Authorization"]="Basic YOUR_AUTH_TOKEN"request.body="{ \"to\": [\"34666666666\"], \"message\": \"Esto es un test de mensaje de voz\", \"gender\": \"F\", \"language\": \"es_ES\" }"response=https.request(request)putsresponse.read_body
usingSystem;usingRestSharp;namespaceHelloWorldApplication{classHelloWorld{staticvoidMain(string[]args){varclient=newRestClient("{{DASHBOARD_HOST}}/api/rest/voice");client.Timeout=-1;varrequest=newRestRequest(Method.POST);request.AddHeader("Authorization","Basic YOUR_AUTH_TOKEN");request.AddHeader("Content-Type","application/json");request.AddParameter("application/json","{ \"to\": [\"34666666666\"], \"message\": \"Esto es un test de mensaje de voz\", \"gender\": \"F\", \"language\": \"es_ES\" }",ParameterType.RequestBody);IRestResponseresponse=client.Execute(request);Console.WriteLine(response.Content);}}}
Corpo da mensagem. Pode conter no máximo 500 caracteres. O texto deve ser codificado em UTF-8.
to
array
Sim
Número do telemóvel destinatário da mensagem. Deve incluir o prefixo (Ex.: em Espanha 34666666666). Este campo permite-lhe especificar vários destinatários.
language
string
Sim
Idioma para converter o texto, as opções são:
'en_GB': Inglês - Reino Unido, 'en_US': Inglês - Estados Unidos, 'es_ES': Espanhol - Espanha, 'es_US': Espanhol - Latino, 'pt_PT': Português - Portugal, 'pt_BR': Português - Brasil, 'cmn_CN': Chinês mandarim - China *, 'arb': Árabe *, 'de_DE': Alemão - Alemanha, 'fr_FR': Francês - França, 'it_IT': Italiano - Itália, 'hi_IN': Indi - Índia *.
* Disponível apenas no gênero feminino.
gender
string
Sim
Género da voz, os valores permitidos são 'F' para voz de mulher e 'M' para voz de homem.
callers
object
Não
Objeto com a lista de remetentes personalizados por país para usar na chamada. Se o remetente não for especificado para um país específico, o remetente padrão será usado. Para configurar um remetente personalizado, entre em contato com o departamento de suporte. Exemplo:
{"ES": "6123456789", "PT": "6987654321"}
scheduleDate
string
Não
Data de envio da mensagem em formato UTC. Caso seja necessário enviar mensagens programadas é possível especificar a data de envio indicando a data no formato YYYYmmddHHiiss (Exemplo: 20130215142000 seria 15 de fevereiro de 2013 às 14:20:00). Em caso de envio imediato não é necessário especificar este parâmetro.
retries
integer
Não
Número máximo de tentativas. Máximo 5. Se não for especificado, não haverá novas tentativas.
expirationDate
string
Não
Permite determinar a data máxima na qual a chamada pode ser realizada. Após este prazo, a chamada será cancelada. Especificar o período de validade ativará automaticamente as tentativas de chamada, voltando a realizá-la caso o destinatário não atenda. A data deve ter o formato YYYYmmddHHiiss (Exemplo: 20130215142000 seria 15 de fevereiro de 2013 às 14:20:00)
campaignName
string
Não
Nome da campanha. Caso seja especificado, será criada uma campanha com o nome indicado no painel de controlo, contendo as estatísticas do envio. Caso já exista uma campanha com este nome, as estatísticas de envio serão juntas à campanha existente.
tags
array
Não
campaignName é necessário caso este parâmetro seja especificado. Lista de tags a juntar à campanha. As tags podem ser utilizadas para filtrar as estatísticas no painel do controlo.
sub
array
Não
array com variáveis de substituição que serão aplicadas à mensagem.
amd
boolean
Não
Answer Machine Detection (AMD): Detecta se a chamada foi atendida por uma secretária eletrônica, em caso afirmativo, automaticamente encerra a chamada. O valor padrão é false.
Variáveis de substituição
Variáveis personalizadas podem ser indicadas no corpo da mensagem. Essas variáveis serão substituídas pelas variáveis personalizadas do contato ou pelas variáveis indicadas no parâmetro sub.
Ao usar o sub-parâmetro, a matriz deve conter tantos itens quanto os destinatários de envio.
Petição de envio de Voz com url para arquivo de áudio
Número do telemóvel destinatário da mensagem. Deve incluir o prefixo (Ex.: em Espanha 34666666666). Este campo permite-lhe especificar vários destinatários.
audioUrl
string
Sim
URL del audio a enviar. Ejemplo: https://example.com/audio.mp3.
callers
object
Não
Objeto com a lista de remetentes personalizados por país para usar na chamada. Se o remetente não for especificado para um país específico, o remetente padrão será usado. Para configurar um remetente personalizado, entre em contato com o departamento de suporte. Exemplo:
{"ES": "6123456789", "PT": "6987654321"}
scheduleDate
string
Não
Data de envio da mensagem em formato UTC. Caso seja necessário enviar mensagens programadas é possível especificar a data de envio indicando a data no formato YYYYmmddHHiiss (Exemplo: 20130215142000 seria 15 de fevereiro de 2013 às 14:20:00). Em caso de envio imediato não é necessário especificar este parâmetro.
retries
integer
No
Número máximo de tentativas. Máximo 5. Se não for especificado, não haverá novas tentativas.
expirationDate
string
Não
Permite determinar a data máxima na qual a chamada pode ser realizada. Após este prazo, a chamada será cancelada. Especificar o período de validade ativará automaticamente as tentativas de chamada, voltando a realizá-la caso o destinatário não atenda. A data deve ter o formato YYYYmmddHHiiss (Exemplo: 20130215142000 seria 15 de fevereiro de 2013 às 14:20:00)
campaignName
string
Não
Nome da campanha. Caso seja especificado, será criada uma campanha com o nome indicado no painel de controlo, contendo as estatísticas do envio. Caso já exista uma campanha com este nome, as estatísticas de envio serão juntas à campanha existente.
tags
array
Não
campaignName é necessário caso este parâmetro seja especificado. Lista de tags a juntar à campanha. As tags podem ser utilizadas para filtrar as estatísticas no painel do controlo.
amd
boolean
Não
Answer Machine Detection (AMD): Detecta se a chamada foi atendida por uma secretária eletrônica, em caso afirmativo, automaticamente encerra a chamada. O valor padrão é false.
Política de tentativas
Se o número máximo de tentativas for especificado na variável opcional retries, o sistema tentará automaticamente novas chamadas não atendidas. Esta funcionalidade não gera custos acrescidos, uma vez que apenas as chamadas que sejam atendidas pelo destinatário serão cobradas.
Quando o sistema deteta que a chamada não tenha sido atendida, tentará novamente passados 10 minutos. O tempo decorrido desde a chamada não atendida para a tentativa irá variar consoante a lista de espera existente, mas será sempre superior a 10 minutos.
Texto da mensagem. O máximo de caracteres permitidos são 160 se não for especificado que a mensagem é multipartes. (Veja parâmetro parts). O texto deverá receber a codificação UTF-8.
to
array
Sim
Número do telefone móvel destinatário da mensagem. Deve-se incluir o prefixo do país destinatário. (Exemplo Brasil 5511966778899). Pode-se especificar diversos destinatários através deste parâmetro.
from
string
Sim
Nome do remetente da mensagem, este parâmetro é formado por 15 caracteres numéricos ou 11 caracteres alfanuméricos. Não é permitida a utilização de caracteres especiais.
encoding
string
Não
Os valores possíveis são 'gsm', 'gsm-pt' e 'utf-16'. O valor gsm deve ser utilizado para envios convencionais na codificação GSM7 com até 160 caracteres por mensagem. O valor utf-16 deve ser utilizado para envios com caracteres especiais na codificação UCS2 (UTF16) com até 70 caracteres por mensagem. O valor padrão deste parâmetro é gsm.
scheduleDate
string
Não
Data de envio das mensagens no UTC. Para envios de mensagens programadas, é possível especificar a data e hora do envio no formato YYYYmmddHHiiss (Exemplo: 20130215142000 seria 15 de fevereiro de 2013 às 14:20). Para envios imediatos, não especifique este parâmetro.
expirationDate
string
Não
Data de validade das mensagens no UTC. Formato YYYYmmddHHiiss (Exemplo: 20130215142000 seria 15 de fevereiro de 2013 às 14:20).
parts
integer
Não
Este parâmetro indica o número máximo de partes que a mensagem terá no momento do envio. O valor padrão deste parâmetro é 1. Caso este parâmetro não seja especificado, ao enviar uma mensagem com mais de 160 caracteres em codificação GSM ou 70 caracteres na codificação UTF16, o processamento da mensagem falhará. É preciso ter em conta que mensagens concatenadas em GSM são fracionadas em partes com até 153 caracteres cada e em UTF16 em 67. Cada parte será processada e tarifada distintamente, mas ao destinatário chegará como uma única mensagem com a indicação de paginação de acordo com as limitações de cada operadora local. Nosso servidor utilizará o mínimo de partes necessárias para processar a mensagem mesmo que seja indicado um valor alto de partes no parâmetro, caso o número indicado seja inferior ao necessário, o envio falhará e será retornado o código 105. O número máximo de partes permitidas é 8.
notificationUrl
string
Não
URL que será feita a chamada GET com os parâmetros desejados de resposta.
trans
integer
Não
Os valores disponíveis são 1 ou 0. Ao indiciar o valor 0 (este é o valor padrão caso o parâmetro não seja especificado) o servidor não realizará nenhuma alteração nos caracteres especiais da mensagem. Com o valor 1 indicado, o servidor fará a alteração dos caracteres especiais a caracteres comuns de acordo com a seguinte regra de tradução: 'á' => 'a', 'í'=>'i', 'ó'=>'o', 'ú'=>'u', 'ç'=>'Ç', 'Á'=>'A', 'Í'=>'I', 'Ó'=>'O', 'Ú'=>'U', 'À'=>'A', 'È'=>'E', 'Ì'=>'I', 'Ò'=>'O', 'Ù'=>'U', 'º' => '', 'ª' => '', 'Õ' => 'O', 'õ' => 'o', 'â' => 'a', 'ê' => 'e', 'î'=>'i', 'ô'=>'o', 'û'=>'u', 'Â'=>'A', 'Ê'=>'E', 'Î'=>'I', 'Ô'=>'O', 'Û'=>'U', 'ã' => 'a', 'Ã' => 'A'
campaignName
string
Não
Nome da campanha Se especificado, uma campanha será criada com o nome indicado no painel que conterá as estatísticas de envio. Se uma campanha com este nome já existe, as estatísticas de entrega serão adicionadas à campanha existente.
tags
array
Não
campaignName é necessário se este parâmetro for especificado. Lista de tags para adicionar à campanha. As tags podem ser usadas para filtrar as estatísticas no painel.
certified
boolean
Não
Se for especificado como true, a mensagem será enviada como certificado. * Mensagens certificadas têm custo adicional
sub
array
Não
array com variáveis de substituição que serão aplicadas à mensagem.
splitParts
boolean
Não
Para mensagens que excedem o tamanho máximo do SMS, o servidor dividirá a mensagem em vários SMS, em vez de usar o SMS concatenado. O valor padrão é false.
flash
boolean
Não
Um flash SMS é uma mensagem que aparece diretamente na tela do dispositivo. Dependendo do modelo e do sistema operacional, é possível armazená-lo na caixa de entrada e enviar mensagens concatenadas.
templateBody
string
Não
O conteúdo da página de destino em formato HTML e codificação UTF-8. Obrigatório sem templateId.
templateId
integer
Não
ID do modelo legacy para enviar como conteúdo da página de destino. Obrigatório sem templateBody. Este ID refere-se a modelos criados a partir da versão anterior ({{DASHBOARD_HOST}}) da aplicação {{NAME}}. Recomenda-se a utilização do parâmetro templateV2Id sempre que possível.
templateV2Id
integer
Não
ID do modelo para enviar como conteúdo da página de destino. Obrigatório sem templateBody. Este ID refere-se à versão atual ({{HOST}}) da aplicação {{NAME}}.
Variáveis de substituição
Ao usar o sub-parâmetro, a matriz deve conter tantos itens quanto os destinatários de envio, usando o seguinte formato:
Variáveis personalizadas podem ser indicadas no corpo da mensagem e no código HTML do modelo. Essas variáveis serão substituídas pelas variáveis personalizadas do contato ou pelas variáveis indicadas no parâmetro sub.
Filtros variáveis personalizados
É possível adicionar os seguintes filtros às variáveis personalizadas.
Filtro
Descrição
Ejemplo
Resultado
lower
Retornar texto em minúsculas.
{name|lower}
my name
upper
Retornar texto em maiúsculas.
{name|upper}
MY NAME
capitalize
Retorne o texto com a primeira letra da primeira palavra em maiúsculas.
{name|capitalize}
My name
capitalizeAll
Retorne o texto com a primeira letra de cada palavra em maiúsculas.
{name|capitalizeAll}
My Name
formatDotComma
Retorna o número com um ponto como separador de milhares y vírgula como separador de decimais.
{number|formatDotComma}
1.234,56
formatCommaDot
Retorna o número com uma vírgula como separador de milhares y ponto como separador de decimais.
{"campaignId":100000,"sendingId":100001,"result":[{"accepted":true,"to":"34666555444","id":"8b4e5d35-dc16-4e2e-8a9c-c222db81f5ba"},{"accepted":false,"to":"34","error":{"code":102,"description":"The messages.1.to field does not contain a valid phone number"}}]}
ID do modelo WhatsApp a enviar. O modelo deve ser aprovado para envio a partir da plataforma.
from
string
Sim
Remetente da mensagem. O remetente deve estar registado na plataforma.
messages
array
Sim
Conjunto de mensagens a enviar.
messages.*.to
string
Sim
Número do telefone móvel destinatário da mensagem. Deve-se incluir o prefixo do país destinatário. (Exemplo Brasil 5511966778899).
messages.*.headerFields
array
Não*
Matriz de variáveis de substituição posicionais a serem aplicadas ao cabeçalho. Necessário para modelos com variáveis de cabeçalho.
messages.*.bodyFields
array
Não*
Matriz de variáveis de substituição posicionais a aplicar ao corpo da mensagem. Necessário para modelos com variáveis de mensagem.
messages.*.callToActionFields
array
Não*
Conjunto de variáveis de substituição posicional a aplicar aos botões de interação. Necessário para modelos com variáveis de ação.
messages.*.defaultAnswer
array
Não
Resposta por defeito à primeira mensagem do utilizador.
messages.*.buttonAnswers
array
Não
Conjunto de respostas posicionais para botões de resposta rápida.
messages.*.location
object
Não*
Informações sobre a localização. Obrigatório para os modelos que contêm a localização.
messages.*.location.lat
string
Não*
Latitude do ponto geográfico. Obrigatório para os modelos que contêm a localização.
messages.*.location.long
string
Não*
Longitude do ponto geográfico. Obrigatório para os modelos que contêm a localização.
messages.*.location.name
string
Não
Nome da localização.
messages.*.location.address
string
Não
Endereço da localização.
campaignName
string
Não
Nome da campanha Se especificado, uma campanha será criada com o nome indicado no painel que conterá as estatísticas de envio. Se uma campanha com este nome já existe, as estatísticas de entrega serão adicionadas à campanha existente.
tags
array
Não
Lista de tags para adicionar à campanha. As tags podem ser usadas para filtrar as estatísticas no painel.
Exemplos de envio
Exemplos de envio de vários tipos de modelos do WhatsApp.
Modelo de envio com variáveis e respostas automáticas.
{"result":{"guid":"100","type":"SMS","content":{"to":"34666555444","from":"SAMPLE","encoding":"gsm","message":"This is a test","campaignId":456,"sendingId":123},"created_at":"2017-09-18 10:49:12","updated_at":"2017-09-18 10:49:12","scheduled_at":"2017-11-11 10:10:10"},"total":1}
Podem-se filtrar todos os envios programados. A lista poderá ser filtrada por tipo de envio (SMS ou MAILING) e também por GUID, relação de GUIDs ou para todos.
O conteúdo da mensagem não é mostrado na lista a não ser que seja especificado um único GUID.
Parâmetro
Tipo
Obrigatório
Descrição
guid
integer, array
Não
Identificador único de cada uma das mensagens Podem-se indicar diversos guids agrupados num array ou nenhum para visualizar todos.
Atualiza a data de programação de um, vários ou todos os envios programados.
Pode-se filtrar por GUID e/ou tipo de envio.
Parâmetro
Tipo
Obrigatório
Descrição
guid
integer, array
Não
Identificador del mensaje o mensajes. Se le puede pasar un identificador, un array de identificadores o ninguno para mostrarlos todos.
type
string
Não
SMS o MAILING
scheduleDate
string
Sim
Fecha de envío del mensaje en formato UTC. Si se necesita enviar mensajes programados se puede especificar la fecha de envío indicando la fecha en formato YYYYmmddHHiiss (Ej: 20130215142000 sería el 15 de febrero de 2013 a las 14:20:00). En caso de envío inmediato no se tiene que especificar este parámetro.
Mostrar resultados antes da data indicada. A data deve ser especificada no formato ISO 8601. Exemplo: ?beforeDate=2019-01-01T00%3A00%3A00%2B00%3A00.
afterDate
Mostrar resultados após a data indicada. A data deve ser especificada no formato ISO 8601. Exemplo: ?afterDate=2019-01-01T00%3A00%3A00%2B00%3A00.
Os parâmetros devem ser codificados corretamente (urlencode) em relação ao padrão RFC 3986 para serem suportados pelo servidor.
Campos da resposta
Parâmetro
Descrição
name
Nome da campanha.
type
Tipo de campanha. Valores possíveis: basic, automatic, trigger, testab.
sendings
Listagem dos envios associadas na campanha. Para campanhas de tipo basic e automatic O número de envios será sempre 1.
sendings.*.status
Status do envio. Valores possíveis: PENDING: Envio agendado para uma data futura. SAVED: Envio salvo. Não será enviado até que a campanha seja confirmada na plataforma. SENDING: Envio em processamento. PAUSED: Envio pausado. FINISHED: Envio finalizado. CANCELLED: Envio cancelado. EDITING: O envio está sendo editado na plataforma. OPENED: Os envios por API informarão esse status. Indica que o envio pode aceitar mais mensagens. AUTOMATED: Envio automatizado aguardando que as condições de automação sejam alcançadas. WAITING: Envio trigger aguardando que as condições de envio sejam alcançadas.
sendings.*.channel
Canal do envio. Valores possíveis: sms, mailing, landing, text2speech, voice-interactive.
sendings.*.total
Total de mensagens a serem enviadas.
sendings.*.processed
Total de mensagens enviadas.
sendings.*.totalSmsParts
Aplicável apenas aos envios de SMS. No caso de envios concatenados, será indicado o número de partes de SMS enviadas.
sendings.*.cost
Custo do envio.
sendings.*.currency
Código da moeda para o custo.
sendings.*.tags
Tags atribuídas ao envio.
sendings.*.scheduledAt
Data de programação da campanha. Nenhuma mensagem será enviada antes desta data.
sendings.*.expiresAt
Data de expiração da campanha. Após essa data, nenhuma outra mensagem será enviada.
sendings.*.events
Resumo dos totais de eventos produzidos no envio. Eventos: delivered: A mensagem foi entregue ao contato. opened: O contato abriu a mensagem. Não aplicável a sms e voz. opened_unique: Total de aberturas únicas. Não aplicável a sms e voz. clicked: O contato clicou em um link incluído na mensagem. Não aplicável a sms e voz. clicked_unique: Total de cliques únicos. Não aplicável a sms e voz. unsubscribed: O contato solicitou a baixa da lista. hard_bounced: Total hard bounces gerado pela campanha. Aplicável apenas ao envio de emails. complaint: O contato marcou a mensagem como indesejada. sent: A mensagen foi enviada ao contato. soft_bounced: Total soft bounces gerado pela campanha. Aplicável apenas ao envio de emails. undelivered: Não foi possível entregar a mensagem ao contato. rejected: A tentativa de enviar a mensagem foi rejeitada. expired: A mensagem foi rejeitada devido a que a data de expiração da campanha já foi alcançada. unsubscribed_landing: O contato solicitou a baixa usando a landing page incluída na mensagem.
Bancos de dados
Contactos
Lista de contactos
GET{{DASHBOARD_HOST}}/api/rest/contacts
curl -X GET '{{DASHBOARD_HOST}}/api/rest/contacts?include=customFields,groups'\-H'Content-Type: application/json'\-H'Authorization: Basic YOUR_AUTH_TOKEN'
Total de contactos a exibir num único pedido. Valor por defeito: 100. Máximo: 1000.
include
Incluir os sub-recursos associados na resposta. É possível especificar vários valores separando-os por vírgulas. Valores disponíveis: customFields, groups.
email
Filtrar os contactos para um e-mail especificado: email=myemail@example.com.
phone
Filtrar os contactos para um telefone especificado: phone=34666666666.
landline
Filtrar os contactos para um telefone fixo especificado: landline=900222222.
countryIso
Filtrar os contactos para um país especificado: countryIso=ES.
externalId
Filtrar os contactos para um externalId especificado: externalId=EXT1.
Mostrar um contacto
GET{{DASHBOARD_HOST}}/api/rest/contacts/<ID>
curl -X GET '{{DASHBOARD_HOST}}/api/rest/contacts/1?include=customFields,groups'\-H'Content-Type: application/json'\-H'Authorization: Basic YOUR_AUTH_TOKEN'
Incluir os sub-recursos associados na resposta. É possível especificar vários valores separando-os por vírgulas. Valores disponíveis: customFields, groups.
{"error":{"code":422,"description":"The email field is required."}}
Parâmetros
Parâmetro
Tipo
Obrigatório
Descrição
email
string
Obrigatório quando o phone ou landline não é especificado.
E-mail do novo contacto.
phone
string
Obrigatório quando email ou landline não for especificado.
Número de telemóvel do contacto.
landline
string
Obrigatório quando email ou phone não for especificado.
Número de telefone fixo do contacto.
countryIso
string
Obrigatório quando phone ou landline não for especificado.
ISO code de 2 letras del país del contacto.
groupsIds
array
Obrigatório de groupsNames não for especificado.
Lista de grupos aos quais será adicionado o novo contacto. Para obter as ids de grupos, consultar a documentação para o endpoint correspondente.
groupsNames
array
Obrigatório se groupsIds não for especificado.
Em alternativa, caso não disponha da lista de IDs de grupos, é possível especificar uma lista com os nomes dos grupos aos quais será adicionado o contacto.
name
string
Não
Nome do contacto.
surname
string
Não
Apelidos do contacto.
customFields[]key
string
Não
Nome do campo personalizado a adicionar.
customFields[]type
string
Não
Tipo do campo personalizado. Valores possíveis: string, date, decimal. Para utilizar um campo, o valor deverá estar no formato ISO8601. Valor por defeito: string
{"error":{"code":422,"description":"The email field is required."}}
Parâmetros
Parâmetro
Tipo
Obrigatório
Descrição
email
string
Obrigatório quando o phone ou landline não é especificado.
E-mail do novo contacto.
phone
string
Obrigatório quando email ou landline não for especificado.
Número de telemóvel do contacto.
landline
string
Obrigatório quando email ou phone não for especificado.
Número de telefone fixo do contacto.
countryIso
string
Obrigatório quando phone ou landline não for especificado.
ISO code de 2 letras del país del contacto.
groupsIds
array
Obrigatório de groupsNames não for especificado.
Lista de grupos aos quais será adicionado o novo contacto. Para obter as ids de grupos, consultar a documentação para o endpoint correspondente.
groupsNames
array
Obrigatório se groupsIds não for especificado.
Em alternativa, caso não disponha da lista de IDs de grupos, é possível especificar uma lista com os nomes dos grupos aos quais será adicionado o contacto.
name
string
Não
Nome do contacto.
surname
string
Não
Apelidos do contacto.
customFields[]key
string
Não
Nome do campo personalizado a adicionar.
customFields[]type
string
Não
Tipo do campo personalizado. Valores possíveis: string, date, decimal. Para utilizar um campo, o valor deverá estar no formato ISO8601. Valor por defeito: string.
curl -X POST '{{DASHBOARD_HOST}}/api/rest/groups'\-H'Content-Type: application/json'\-H'Authorization: Basic YOUR_AUTH_TOKEN'\-d'{
"name": "My new contact list"
}'
<?php$curl=curl_init();curl_setopt_array($curl,array(CURLOPT_URL=>'{{DASHBOARD_HOST}}/api/rest/groups',CURLOPT_RETURNTRANSFER=>true,CURLOPT_CUSTOMREQUEST=>'POST',CURLOPT_POSTFIELDS=>'{
"name": "My new contact list"
}',CURLOPT_HTTPHEADER=>array('Content-Type: application/json','Authorization: Basic YOUR_AUTH_TOKEN'),));$response=curl_exec($curl);curl_close($curl);echo$response;
varaxios=require('axios');varconfig={method:'post',url:'{{DASHBOARD_HOST}}/api/rest/groups',headers:{'Content-Type':'application/json','Authorization':'Basic YOUR_AUTH_TOKEN'},data:'{ "name": "My new contact list" }'};axios(config).then(function(response){console.log(JSON.stringify(response.data));}).catch(function(error){console.log(error);});
importrequestsurl="{{DASHBOARD_HOST}}/api/rest/groups"payload="{ \"name\": \"My new contact list\" }"headers={'Content-Type':'application/json','Authorization':'Basic YOUR_AUTH_TOKEN'}response=requests.request("POST",url,headers=headers,data=payload)print(response.text)
require"uri"require"net/http"url=URI("{{DASHBOARD_HOST}}/api/rest/groups")https=Net::HTTP.new(url.host,url.port)https.use_ssl=truerequest=Net::HTTP::Post.new(url)request["Content-Type"]="application/json"request["Authorization"]="Basic YOUR_AUTH_TOKEN"request.body="{ \"name\": \"My new contact list\" }"response=https.request(request)putsresponse.read_body
usingSystem;usingRestSharp;namespaceHelloWorldApplication{classHelloWorld{staticvoidMain(string[]args){varclient=newRestClient("{{DASHBOARD_HOST}}/api/rest/groups");client.Timeout=-1;varrequest=newRestRequest(Method.POST);request.AddHeader("Authorization","Basic YOUR_AUTH_TOKEN");request.AddHeader("Content-Type","application/json");request.AddParameter("application/json","{ \"name\": \"My new contact list\" }",ParameterType.RequestBody);IRestResponseresponse=client.Execute(request);Console.WriteLine(response.Content);}}}
Response (HTTP 201)
{"data":{"id":1,"name":"My new contact list"}}
Error response
{"error":{"code":422,"description":"The name field is required."}}
Parâmetros
Parâmetro
Tipo
Obrigatório
Descrição
name
string
Sim
Nome do novo grupo.
Atualizar um grupo
PUT{{DASHBOARD_HOST}}/api/rest/groups/<ID>
curl -X PUT '{{DASHBOARD_HOST}}/api/rest/groups'\-H'Content-Type: application/json'\-H'Authorization: Basic YOUR_AUTH_TOKEN'\-d'{
"name": "My new contact list"
}'
<?php$curl=curl_init();curl_setopt_array($curl,array(CURLOPT_URL=>'{{DASHBOARD_HOST}}/api/rest/groups',CURLOPT_RETURNTRANSFER=>true,CURLOPT_CUSTOMREQUEST=>'PUT',CURLOPT_POSTFIELDS=>'{
"name": "My new contact list"
}',CURLOPT_HTTPHEADER=>array('Content-Type: application/json','Authorization: Basic YOUR_AUTH_TOKEN'),));$response=curl_exec($curl);curl_close($curl);echo$response;
varaxios=require('axios');varconfig={method:'put',url:'{{DASHBOARD_HOST}}/api/rest/groups',headers:{'Content-Type':'application/json','Authorization':'Basic YOUR_AUTH_TOKEN'},data:'{ "name": "My new contact list" }'};axios(config).then(function(response){console.log(JSON.stringify(response.data));}).catch(function(error){console.log(error);});
importrequestsurl="{{DASHBOARD_HOST}}/api/rest/groups"payload="{ \"name\": \"My new contact list\" }"headers={'Content-Type':'application/json','Authorization':'Basic YOUR_AUTH_TOKEN'}response=requests.request("PUT",url,headers=headers,data=payload)print(response.text)
require"uri"require"net/http"url=URI("{{DASHBOARD_HOST}}/api/rest/groups")https=Net::HTTP.new(url.host,url.port)https.use_ssl=truerequest=Net::HTTP::Put.new(url)request["Content-Type"]="application/json"request["Authorization"]="Basic YOUR_AUTH_TOKEN"request.body="{ \"name\": \"My new contact list\" }"response=https.request(request)putsresponse.read_body
usingSystem;usingRestSharp;namespaceHelloWorldApplication{classHelloWorld{staticvoidMain(string[]args){varclient=newRestClient("{{DASHBOARD_HOST}}/api/rest/groups");client.Timeout=-1;varrequest=newRestRequest(Method.PUT);request.AddHeader("Authorization","Basic YOUR_AUTH_TOKEN");request.AddHeader("Content-Type","application/json");request.AddParameter("application/json","{ \"name\": \"My new contact list\" }",ParameterType.RequestBody);IRestResponseresponse=client.Execute(request);Console.WriteLine(response.Content);}}}
Response (HTTP 200)
{"data":{"id":1,"name":"My new contact list"}}
Error response
{"error":{"code":422,"description":"The name field is required."}}
Deve realizar a validação da seguinte maneira, enviar uma solicitação indicando os IDs de grupo ou emails para validar um ou vários grupos ou um ou mais emails.
Se tudo correr bem, a solicitação retornará o status "pendente", o que significa que está enfileirado para ser processado.
Uma vez iniciado o processo de validação, será notificado com um status "iniciado" e, quando terminar, notificará com "concluído" com os dados, com o total de processados e o total de dados válidos, entre outros. Também na notificação "concluído", o URL será recebido para obter os detalhes completos.
Parâmetros
Parâmetro
Tipo
Obrigatório
Descrição
groupsIds
array
Não (sempre que houver emails)
Lista de grupos para validar (consultar grupos de terminais) dentro da API de contatos.
emails
array
Não (sempre que houver groupIds)
Lista de emails para validar.
force
boolean
Não
Se for true, serão verificados os emails que já foram verificados previamente. Valor padrão falso.
allowRisky
boolean
No
Valor por defeito false. Se o valor for false, os e-mails duvidosos serão adicionados à lista negra, impedindo-os de serem enviados. Se o valor for true, estes e-mails serão autorizados a serem enviados.
notificationUrl
string
Não
URL de retorno em que serão recebidas as notificações de progresso(consulte o anexo de notificação).
{"data":{"id":2,"status":"failed","total":1,"processed":0,"valid":0,"estimatedCost":0.0035,"cost":0,"currency":"EUR","createdAt":"2018-09-20T10:03:22+00:00","updatedAt":"2018-09-20T10:03:22+00:00","finishedAt":null,"resultUrl":null,"error":"Failed to process email validation"}}
A resposta conterá uma prévia do modelo no formato HTML.
Variáveis personalizadas
Variáveis personalizadas podem ser usadas em modelos. Estas variáveis serão substituídas pelos campos personalizados do contato antes de enviar usando a sintaxe {variable}.
Por exemplo, para incluir a variável personalizada "name" em um modelo HTML:
A resposta conterá uma prévia do modelo no formato HTML.
Variáveis personalizadas
Variáveis personalizadas podem ser usadas em modelos. Estas variáveis serão substituídas pelos campos personalizados do contato antes de enviar usando a sintaxe {variable}.
Por exemplo, para incluir a variável personalizada "name" em um modelo HTML:
Os modelos aceitam os seguintes padrões de substituição para o link nos links HTML.
Pattern
Description
[unsubscribe_link]
Link para a página de cancelamento de inscrição.
[form_{ID}]
Link para o formulário com id {ID}.
[show_link]
Link para visualizar o modelo no navegador da web. Útil para envio de tipo de correspondência.
[attachment_{ID}]
Link para o anexo com o ID {ID}.
Por exemplo, para incluir um link para o formulário com o id "12":
<ahref="[form_12]">Form link</a>
Formulários
Criar um formulário
POST{{DASHBOARD_HOST}}/api/rest/form
curl -X POST '{{DASHBOARD_HOST}}/api/rest/forms'\-H'Content-Type: application/json'\-H'Authorization: Basic YOUR_AUTH_TOKEN'\-d'{
"name": "My_form",
"rejectButton": true,
"backgroundUrl": "{{DASHBOARD_HOST}}/assets/login/img/wizard.jpg",
"logoUrl": "{{DASHBOARD_HOST}}/assets/img/logo.png",
"formFields": [
{"type": "h3", "label": "Your opinion is very important to us"},
{"type": "text", "label": "Name", "required": true, "description": "Insert your name", "placeholder": "Insert your name", "customField": "form_name"}
]
}'
<?php$curl=curl_init();curl_setopt_array($curl,array(CURLOPT_URL=>'{{DASHBOARD_HOST}}/api/rest/forms',CURLOPT_RETURNTRANSFER=>true,CURLOPT_CUSTOMREQUEST=>'POST',CURLOPT_POSTFIELDS=>'{
"name": "My_form",
"rejectButton": true,
"backgroundUrl": "{{DASHBOARD_HOST}}/assets/login/img/wizard.jpg",
"logoUrl": "{{DASHBOARD_HOST}}/assets/img/logo.png",
"formFields": [
{"type": "h3", "label": "Your opinion is very important to us"},
{"type": "text", "label": "Name", "required": true, "description": "Insert your name", "placeholder": "Insert your name", "customField": "form_name"}
]
}',CURLOPT_HTTPHEADER=>array('Content-Type: application/json','Authorization: Basic YOUR_AUTH_TOKEN'),));$response=curl_exec($curl);curl_close($curl);echo$response;
importjava.io.DataOutputStream;importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.net.URL;importjava.net.HttpsURLConnection;publicclassApp{publicstaticvoidmain(String[]args){try{URLurl=newURL("{{DASHBOARD_HOST}}/api/rest/forms");HttpsURLConnectionconnection=(HttpsURLConnection)url.openConnection();connection.setRequestMethod("POST");connection.setRequestProperty("Authorization","Basic YOUR_AUTH_TOKEN");connection.setRequestProperty("Accept","application/json");StringrequestBody="{ \"name\": \"My_form\", \"rejectButton\": true, \"backgroundUrl\": \"{{DASHBOARD_HOST}}/assets/login/img/wizard.jpg\", \"logoUrl\": \"{{DASHBOARD_HOST}}/assets/img/logo.png\", \"formFields\": [ {\"type\": \"h3\", \"label\": \"Your opinion is very important to us\"}, {\"type\": \"text\", \"label\": \"Name\", \"required\": true, \"description\": \"Insert your name\", \"placeholder\": \"Insert your name\", \"customField\": \"form_name\"} ] }";connection.setDoOutput(true);DataOutputStreamwr=newDataOutputStream(connection.getOutputStream());wr.writeBytes(requestBody);wr.flush();wr.close();BufferedReaderin=newBufferedReader(newInputStreamReader(connection.getInputStream()));StringinputLine;StringBufferresponse=newStringBuffer();while((inputLine=in.readLine())!=null){response.append(inputLine);}in.close();System.out.println(response.toString());}catch(Exceptione){// TODO: handle exception}}}
varaxios=require('axios');varconfig={method:'post',url:'{{DASHBOARD_HOST}}/api/rest/forms',headers:{'Content-Type':'application/json','Authorization':'Basic YOUR_AUTH_TOKEN'},data:'{ "name": "My_form", "rejectButton": true, "backgroundUrl": "{{DASHBOARD_HOST}}/assets/login/img/wizard.jpg", "logoUrl": "{{DASHBOARD_HOST}}/assets/img/logo.png", "formFields": [ {"type": "h3", "label": "Your opinion is very important to us"}, {"type": "text", "label": "Name", "required": true, "description": "Insert your name", "placeholder": "Insert your name", "customField": "form_name"} ] }'};axios(config).then(function(response){console.log(JSON.stringify(response.data));}).catch(function(error){console.log(error);});
importrequestsurl="{{DASHBOARD_HOST}}/api/rest/forms"payload="{ \"name\": \"My_form\", \"rejectButton\": true, \"backgroundUrl\": \"{{DASHBOARD_HOST}}/assets/login/img/wizard.jpg\", \"logoUrl\": \"{{DASHBOARD_HOST}}/assets/img/logo.png\", \"formFields\": [ {\"type\": \"h3\", \"label\": \"Your opinion is very important to us\"}, {\"type\": \"text\", \"label\": \"Name\", \"required\": true, \"description\": \"Insert your name\", \"placeholder\": \"Insert your name\", \"customField\": \"form_name\"} ] }"headers={'Content-Type':'application/json','Authorization':'Basic YOUR_AUTH_TOKEN'}response=requests.request("POST",url,headers=headers,data=payload)print(response.text)
require"uri"require"net/http"url=URI("{{DASHBOARD_HOST}}/api/rest/forms")https=Net::HTTP.new(url.host,url.port)https.use_ssl=truerequest=Net::HTTP::Post.new(url)request["Content-Type"]="application/json"request["Authorization"]="Basic YOUR_AUTH_TOKEN"request.body="{ \"name\": \"My_form\", \"rejectButton\": true, \"backgroundUrl\": \"{{DASHBOARD_HOST}}/assets/login/img/wizard.jpg\", \"logoUrl\": \"{{DASHBOARD_HOST}}/assets/img/logo.png\", \"formFields\": [ {\"type\": \"h3\", \"label\": \"Your opinion is very important to us\"}, {\"type\": \"text\", \"label\": \"Name\", \"required\": true, \"description\": \"Insert your name\", \"placeholder\": \"Insert your name\", \"customField\": \"form_name\"} ] }"response=https.request(request)putsresponse.read_body
usingSystem;usingRestSharp;namespaceHelloWorldApplication{classHelloWorld{staticvoidMain(string[]args){varclient=newRestClient("{{DASHBOARD_HOST}}/api/rest/forms");client.Timeout=-1;varrequest=newRestRequest(Method.POST);request.AddHeader("Authorization","Basic YOUR_AUTH_TOKEN");request.AddHeader("Content-Type","application/json");request.AddParameter("application/json","{ \"name\": \"My_form\", \"rejectButton\": true, \"backgroundUrl\": \"{{DASHBOARD_HOST}}/assets/login/img/wizard.jpg\", \"logoUrl\": \"{{DASHBOARD_HOST}}/assets/img/logo.png\", \"formFields\": [ {\"type\": \"h3\", \"label\": \"Your opinion is very important to us\"}, {\"type\": \"text\", \"label\": \"Name\", \"required\": true, \"description\": \"Insert your name\", \"placeholder\": \"Insert your name\", \"customField\": \"form_name\"} ] }",ParameterType.RequestBody);IRestResponseresponse=client.Execute(request);Console.WriteLine(response.Content);}}}
Example Request
{"name":"My_form","rejectButton":true,"backgroundUrl":"{{DASHBOARD_HOST}}/assets/login/img/wizard.jpg","logoUrl":"{{DASHBOARD_HOST}}/assets/img/logo.png","formFields":[{"type":"h3","label":"Your opinion is very important to us"},{"type":"text","label":"Name","required":true,"description":"Insert your name","placeholder":"Insert your name","customField":"form_name"},{"type":"email","label":"Email","required":true,"description":"Insert your email","placeholder":"Insert your email","customField":"form_email"},{"type":"radio","label":"How satisfied are you with our platform?","required":true,"description":"Select your response depending on your satisfaction","customField":"form_satisfaction","options":[{"label":"Very satisfied","value":"10"},{"label":"Somewhat satisfied","value":"8"},{"label":"Neither satisfied nor dissatisfied","value":"6"},{"label":"Somewhat dissatisfied","value":"4"},{"label":"Very dissatisfied","value":"2"}]}]}
Parâmetros
Parâmetro
Tipo
Obrigatório
Descrição
name
string
Sim
Nome único do formulário
editable
boolean
Não
'true': uma vez enviado, o cliente pode enviá-lo novamente. 'false': uma vez enviado, o cliente não poderá enviá-lo novamente. Por padrão, true.
rejectButton
boolean
Não
'true': além do botão Enviar, o botão Rejeitar será mostrado. O botão Rejeitar não envia os dados. 'false': somente o botão Submit será mostrado. Por padrão, false.
backgroundUrl
string
Não
Url da imagem de formulário.
logoUrl
string
Não
Url da imagem do logotipo do formulário.
formFields
array
Sim
Conjunto de elementos que terá o formulário. Veja o anexo para ver todos os elementos.
Formulário exemplo:
Atualizar um formulário
PUT{{DASHBOARD_HOST}}/api/rest/forms/<ID>
curl -X PUT '{{DASHBOARD_HOST}}/api/rest/forms'\-H'Content-Type: application/json'\-H'Authorization: Basic YOUR_AUTH_TOKEN'\-d'{
"name": "My_form",
"rejectButton": true,
"backgroundUrl": "{{DASHBOARD_HOST}}/assets/login/img/wizard.jpg",
"logoUrl": "{{DASHBOARD_HOST}}/assets/img/logo.png",
"formFields": [
{"type": "h3", "label": "Your opinion is very important to us"},
{"type": "text", "label": "Name", "required": true, "description": "Insert your name", "placeholder": "Insert your name", "customField": "form_name"}
]
}'
<?php$curl=curl_init();curl_setopt_array($curl,array(CURLOPT_URL=>'{{DASHBOARD_HOST}}/api/rest/forms',CURLOPT_RETURNTRANSFER=>true,CURLOPT_CUSTOMREQUEST=>'PUT',CURLOPT_POSTFIELDS=>'{
"name": "My_form",
"rejectButton": true,
"backgroundUrl": "{{DASHBOARD_HOST}}/assets/login/img/wizard.jpg",
"logoUrl": "{{DASHBOARD_HOST}}/assets/img/logo.png",
"formFields": [
{"type": "h3", "label": "Your opinion is very important to us"},
{"type": "text", "label": "Name", "required": true, "description": "Insert your name", "placeholder": "Insert your name", "customField": "form_name"}
]
}',CURLOPT_HTTPHEADER=>array('Content-Type: application/json','Authorization: Basic YOUR_AUTH_TOKEN'),));$response=curl_exec($curl);curl_close($curl);echo$response;
importjava.io.DataOutputStream;importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.net.URL;importjava.net.HttpsURLConnection;publicclassApp{publicstaticvoidmain(String[]args){try{URLurl=newURL("{{DASHBOARD_HOST}}/api/rest/forms");HttpsURLConnectionconnection=(HttpsURLConnection)url.openConnection();connection.setRequestMethod("PUT");connection.setRequestProperty("Authorization","Basic YOUR_AUTH_TOKEN");connection.setRequestProperty("Accept","application/json");StringrequestBody="{ \"name\": \"My_form\", \"rejectButton\": true, \"backgroundUrl\": \"{{DASHBOARD_HOST}}/assets/login/img/wizard.jpg\", \"logoUrl\": \"{{DASHBOARD_HOST}}/assets/img/logo.png\", \"formFields\": [ {\"type\": \"h3\", \"label\": \"Your opinion is very important to us\"}, {\"type\": \"text\", \"label\": \"Name\", \"required\": true, \"description\": \"Insert your name\", \"placeholder\": \"Insert your name\", \"customField\": \"form_name\"} ] }";connection.setDoOutput(true);DataOutputStreamwr=newDataOutputStream(connection.getOutputStream());wr.writeBytes(requestBody);wr.flush();wr.close();BufferedReaderin=newBufferedReader(newInputStreamReader(connection.getInputStream()));StringinputLine;StringBufferresponse=newStringBuffer();while((inputLine=in.readLine())!=null){response.append(inputLine);}in.close();System.out.println(response.toString());}catch(Exceptione){// TODO: handle exception}}}
varaxios=require('axios');varconfig={method:'put',url:'{{DASHBOARD_HOST}}/api/rest/forms',headers:{'Content-Type':'application/json','Authorization':'Basic YOUR_AUTH_TOKEN'},data:'{ "name": "My_form", "rejectButton": true, "backgroundUrl": "{{DASHBOARD_HOST}}/assets/login/img/wizard.jpg", "logoUrl": "{{DASHBOARD_HOST}}/assets/img/logo.png", "formFields": [ {"type": "h3", "label": "Your opinion is very important to us"}, {"type": "text", "label": "Name", "required": true, "description": "Insert your name", "placeholder": "Insert your name", "customField": "form_name"} ] }'};axios(config).then(function(response){console.log(JSON.stringify(response.data));}).catch(function(error){console.log(error);});
importrequestsurl="{{DASHBOARD_HOST}}/api/rest/forms"payload="{ \"name\": \"My_form\", \"rejectButton\": true, \"backgroundUrl\": \"{{DASHBOARD_HOST}}/assets/login/img/wizard.jpg\", \"logoUrl\": \"{{DASHBOARD_HOST}}/assets/img/logo.png\", \"formFields\": [ {\"type\": \"h3\", \"label\": \"Your opinion is very important to us\"}, {\"type\": \"text\", \"label\": \"Name\", \"required\": true, \"description\": \"Insert your name\", \"placeholder\": \"Insert your name\", \"customField\": \"form_name\"} ] }"headers={'Content-Type':'application/json','Authorization':'Basic YOUR_AUTH_TOKEN'}response=requests.request("PUT",url,headers=headers,data=payload)print(response.text)
require"uri"require"net/http"url=URI("{{DASHBOARD_HOST}}/api/rest/forms")https=Net::HTTP.new(url.host,url.port)https.use_ssl=truerequest=Net::HTTP::Put.new(url)request["Content-Type"]="application/json"request["Authorization"]="Basic YOUR_AUTH_TOKEN"request.body="{ \"name\": \"My_form\", \"rejectButton\": true, \"backgroundUrl\": \"{{DASHBOARD_HOST}}/assets/login/img/wizard.jpg\", \"logoUrl\": \"{{DASHBOARD_HOST}}/assets/img/logo.png\", \"formFields\": [ {\"type\": \"h3\", \"label\": \"Your opinion is very important to us\"}, {\"type\": \"text\", \"label\": \"Name\", \"required\": true, \"description\": \"Insert your name\", \"placeholder\": \"Insert your name\", \"customField\": \"form_name\"} ] }"response=https.request(request)putsresponse.read_body
usingSystem;usingRestSharp;namespaceHelloWorldApplication{classHelloWorld{staticvoidMain(string[]args){varclient=newRestClient("{{DASHBOARD_HOST}}/api/rest/forms");client.Timeout=-1;varrequest=newRestRequest(Method.PUT);request.AddHeader("Authorization","Basic YOUR_AUTH_TOKEN");request.AddHeader("Content-Type","application/json");request.AddParameter("application/json","{ \"name\": \"My_form\", \"rejectButton\": true, \"backgroundUrl\": \"{{DASHBOARD_HOST}}/assets/login/img/wizard.jpg\", \"logoUrl\": \"{{DASHBOARD_HOST}}/assets/img/logo.png\", \"formFields\": [ {\"type\": \"h3\", \"label\": \"Your opinion is very important to us\"}, {\"type\": \"text\", \"label\": \"Name\", \"required\": true, \"description\": \"Insert your name\", \"placeholder\": \"Insert your name\", \"customField\": \"form_name\"} ] }",ParameterType.RequestBody);IRestResponseresponse=client.Execute(request);Console.WriteLine(response.Content);}}}
Parâmetros
Parâmetro
Tipo
Obrigatório
Descrição
name
string
Sim
Nome único do formulário
editable
boolean
Não
'true': uma vez enviado, o cliente pode enviá-lo novamente. 'false': uma vez enviado, o cliente não poderá enviá-lo novamente. Por padrão, true.
rejectButton
boolean
Não
'true': além do botão Enviar, o botão Rejeitar será mostrado. O botão Rejeitar não envia os dados. 'false': somente o botão Submit será mostrado. Por padrão, false.
backgroundUrl
string
Não
Url da imagem de formulário.
logoUrl
string
Não
Url da imagem do logotipo do formulário.
formFields
array
Sim
Conjunto de elementos que terá o formulário. Veja o anexo para ver todos os elementos.
Lista de formulários
GET{{DASHBOARD_HOST}}/api/rest/forms
curl -X GET '{{DASHBOARD_HOST}}/api/rest/forms'\-H'Content-Type: application/json'\-H'Authorization: Basic YOUR_AUTH_TOKEN'
Identificador da mensagem retornada na resposta à chamada para api/rest/mailing no campo id.
Eventos
Notificações de eventos
Introdução
O objetivo do serviço de notificação de estados é informar ao servidor do cliente os eventos que são gerados no serviço 360nrs. As notificações serão feitas para os envios feitos por qualquer tipo de canal. Desta forma, o cliente poderá rastrear em tempo real cada envio efetuado.
Um único envio pode provocar múltiplos eventos, pelo que um envio em massa pode gerar um número significativo de notificações ao servidor do cliente. Para evitar a saturação do servidor, os eventos a notificar são colocados em fila na 360nrs, pelo que se podem verificar atrasos na entrega de notificações se o servidor do cliente não for capaz de gerir o volume de notificações gerado.
Para ativar esta funcionalidade, o cliente deve fornecer um URL onde serão feitos os pedidos http POST para notificar um evento.
Identificador alfanumérico que foi entregue no envio por API da mensagem. Se a mensagem foi enviada pela web, não terá valor.
channel
string
Indica a que canal pertence o envio a que a notificação se refere. Os valores possíveis são: sms, mailing, landing, text2speech.
contactId
integer
Identificador único do contacto.
campaignId
integer
Identificador da campanha. Se foi enviado por API e não se especificou campaignName no envio, terá valor 0.
formId
integer
Identificador único do formulário. (Para eventos de formulário)
campaignName
string
Nome da campanha.
event
string
Indica o evento que ocorreu. Os valores possíveis são: delivered, opened, clicked, unsubscribed, hard_bounced, complaint, sent, soft_bounced, undelivered, rejected, expired, unsubscribed_landing, form_opened, form_submitted, form_rejected.
extra
string
Parâmetro extra com informações adicionais do evento no formato JSON. O evento "form_submitted" conterá os valores inseridos no formulário pelo usuário no seguinte formato:
O evento "clicked" contenda a url a la que se ha hecho clic:
{"url":"url_encoded"}
smtpResponse
string
Variável opcional definida para o canal de e-mail e os eventos delivered, hard_bounced, soft_bounced. A resposta do servidor SMTP do email destinatário é devolvida.
eventDate
string
Data em que aconteceu o evento.
As notificações são reintentadas em 5 ocasiões caso que o servidor do cliente responder a um código HTTP distinto a 200 OK.
O tempo de espera entre as notificações é progressivo, portanto a primeira tentativa será feita em 1 minuto, a segunda após 2 minutos desde a tentativa anterior, a terceira após 3 minutos, etc.
Mostrar os resultados anterores a data indicada. A data deve ser especificada no formato ISO 8601.
afterDate
Mostrar os resultados posteriores a data indicada. A data deve ser especificada no formato ISO 8601.
showCustomFields
Se definido para 1, mostra os campos personalizados utilizados.
Os parâmetros devem ser corretamente codificados (urlencode) em relação ao padrão RFC 3986 para ser admitido pelo servidor. Por exemplo, para consultar o relatório de eventos entre as datas 2019-01-01T00:00:00+00:00 y 2019-02-01T00:00:00+00:00:
Mostrar os resultados anterores a data indicada. A data deve ser especificada no formato ISO 8601.
afterDate
Mostrar os resultados posteriores a data indicada. A data deve ser especificada no formato ISO 8601.
Os parâmetros devem ser corretamente codificados (urlencode) em relação ao padrão RFC 3986 para ser admitido pelo servidor. Por exemplo, para consultar o relatório de eventos entre as datas 2019-01-01T00:00:00+00:00 y 2019-02-01T00:00:00+00:00:
Obtenha o relatório detalhado de pressionamentos de tecla de um envio de voz interativa. A resposta estará no formato text/csv e conterá as seguintes colunas: phonenumber, key, message
OTP
Generar código
POST{{DASHBOARD_HOST}}/api/rest/otp/generate
curl -X POST '{{DASHBOARD_HOST}}/api/rest/otp/generate'\-H'Content-Type: application/json'\-H'Authorization: Basic YOUR_AUTH_TOKEN'\-d'{
"recipient": "34666555444"
}'
{"data":[{"countryIso":"AD","countryName":"Andorra","networkName":"Default","mcc":"213","mnc":null,"cost":0.065,"currencyCode":"EUR","currencySymbol":"€"},{"countryIso":"AD","countryName":"Andorra","networkName":"Servei De Tele. DAndorra","mcc":"213","mnc":"003","cost":0.065,"currencyCode":"EUR","currencySymbol":"€"},{"countryIso":"AE","countryName":"United Arab Emirates","networkName":"Default","mcc":"424","mnc":null,"cost":0.0868,"currencyCode":"EUR","currencySymbol":"€"}]}
Cobertura SMS por país
Retorna a cobertura SMS agrupada por país indicando o custo mínimo e máximo de cada país.
{"data":[{"countryIso":"AD","countryName":"Andorra","networks":["Servei De Tele. DAndorra"],"minCost":0.065,"maxCost":0.065,"currencyCode":"EUR","currencySymbol":"€"},{"countryIso":"AE","countryName":"United Arab Emirates","networks":["DU","Etisalat"],"minCost":0.0868,"maxCost":0.0868,"currencyCode":"EUR","currencySymbol":"€"}]}
Erros
Error Code
HTTP Code
Description
0
202
Accepted for delivery
101
500
Internal Database error
102
400
No valid recipients
103
401
Username or password unknown
104
400
Text message missing
105
400
Text message too long
106
400
Sender missing
107
400
Sender too long
108
400
No valid Datetime for send
109
400
Notification URL incorrect
110
400
Exceeded maximum parts allowed or incorrect number of parts
111
402
Not enough credits
112
401
IP address not allowed
113
400
Invalid coding
114
400
Invalid subject
115
400
Sender is not verified
116
400
Invalid replyTo
117
400
ReplyTo is not verified
118
401
Email blocked for exceeding the hard-bounced limit allowed
119
400
Invalid expiration date
120
400
Invalid GUID
121
400
Invalid scheduled date
122
500
Update error
123
500
Delete error
125
400
Invalid JSON
126
400
Empty campaign name
130
400
Invalid voice language
131
400
Invalid voice gender
132
400
Invalid voice caller
133
400
Invalid audio URL
134
400
Unsupported audio format
140
400
Template missing
141
400
Missing landing placeholder
142
400
Can't split variable placeholders
150
400
Missing billing profile
151
400
Error retrieving TPV url
152
400
Invalid VAT
153
400
Invalid method
154
400
Invalid conversion rate
155
400
Max limit reached
156
400
Min limit reached
157
400
Error generating invoice
160
400
Invalid voice interactive language
161
400
Invalid voice interactive gender
162
400
Invalid voice interactive caller
163
400
Invalid voice interactive audio URL
164
400
Unsupported voice interactive audio format
165
400
Invalid voice interactive speech type
166
400
Ivalid voice interactive menu option type
167
400
Trying to save an existing campaign
168
400
Empty speech type
169
400
Empty menu
170
400
Empty phone key
171
400
Phone Key is not a number
172
400
Phone key out of range
173
400
Empty menu options for sub menu
174
400
Empty phone prefix for call transfer
175
400
Empty phone for call transfer
176
400
Call retries value is not an integer
177
400
Call retries value out of range
178
400
Cost limit value is not an integer
179
400
Speech retries value is not an integer
180
400
Speech retries value out of range
181
400
Speech timeout seconds value is not an integer
182
400
Speech timeout seconds value out of range
183
400
Available times value is not an array
184
400
Available times day is not an integer
185
400
Available times day out of range
186
400
Available times from hour format error
187
400
Available times to hour format error
188
400
Available times from hour is greater than to hour
189
400
Missing available time object property
190
400
Call Retries is specified but its value is empty
191
400
Cost limit is specified but its value is empty
192
400
Speech Retries is specified but its value is empty
193
400
Speech timeout seconds is specified but its value is empty
194
400
Available times is specified but its value is empty
195
400
No valid contacts external IDs
196
400
Available times range is too short
422
422
Input validation error
Anexos
Conjunto de caracteres GSM
Conjunto de caracteres básico GSM
0x00
0x10
0x20
0x30
0x40
0x50
0x60
0x70
0x00
@
Δ
SP
0
¡
P
¿
p
0x01
£
_
!
1
A
Q
a
q
0x02
$
Φ
"
2
B
R
b
r
0x03
¥
Γ
#
3
C
S
c
s
0x04
è
Λ
¤
4
D
T
d
t
0x05
é
Ω
%
5
E
U
e
u
0x06
ù
Π
&
6
F
V
f
v
0x07
ì
Ψ
'
7
G
W
g
w
0x08
ò
Σ
(
8
H
X
h
x
0x09
Ç
Θ
)
9
I
Y
i
y
0x0A
LF
Ξ
*
:
J
Z
j
z
0x0B
Ø
ESC
+
;
K
Ä
k
ä
0x0C
ø
Æ
,
<
L
Ö
l
ö
0x0D
CR
æ
-
=
M
Ñ
m
ñ
0x0E
Å
ß
.
>
N
Ü
n
ü
0x0F
å
É
/
?
O
§
o
à
* Caracteres especiais
Conjunto de caracteres estendidos GSM
0x00
0x10
0x20
0x30
0x40
0x50
0x60
0x70
0x00
|
0x01
0x02
0x03
0x04
^
0x05
€
0x06
0x07
0x08
{
0x09
}
0x0A
FF
0x0B
SS2
0x0C
[
0x0D
CR2
~
0x0E
]
0x0F
\
* Caracteres especiais
Conjunto de caracteres GSM-PT
Conjunto de caracteres básico GSM-PT
0x00
0x10
0x20
0x30
0x40
0x50
0x60
0x70
0x00
@
Δ
SP
0
Í
P
~
p
0x01
£
_
!
1
A
Q
a
q
0x02
$
ª
"
2
B
R
b
r
0x03
¥
Ç
#
3
C
S
c
s
0x04
ê
À
º
4
D
T
d
t
0x05
é
∞
%
5
E
U
e
u
0x06
ú
^
&
6
F
V
f
v
0x07
í
\
'
7
G
W
g
w
0x08
ó
€
(
8
H
X
h
x
0x09
ç
Ó
)
9
I
Y
i
y
0x0A
LF
|
*
:
J
Z
j
z
0x0B
Ô
ESC
+
;
K
Ã
k
ã
0x0C
ô
Â
,
<
L
Õ
l
õ
0x0D
CR
â
-
=
M
Ú
m
`
0x0E
Á
Ê
.
>
N
Ü
n
ü
0x0F
á
É
/
?
O
§
o
à
* Caracteres especiais** Caracteres diferentes de GSM
Conjunto de caracteres estendidos GSM-PT
0x00
0x10
0x20
0x30
0x40
0x50
0x60
0x70
0x00
|
0x01
À
Â
0x02
Φ
0x03
Γ
0x04
^
0x05
ê
Ω
Ú
€
ú
0x06
Π
0x07
Ψ
0x08
Σ
{
0x09
ç
Θ
}
Í
í
0x0A
FF
0x0B
Ô
SS2
Ã
ã
0x0C
ô
[
Õ
õ
0x0D
CR2
~
0x0E
Á
]
0x0F
á
Ê
\
Ó
ó
â
* Caracteres especiais** Caracteres diferentes de GSM
Restrições de Envio por País
Muitos países possuem regulamentos destinados a proteger os utilizadores de comunicações indesejadas, tanto por SMS como por chamadas de voz. Para garantir que as suas campanhas chegam ao destino corretamente e evitar bloqueios ou penalizações, é essencial cumprir estas regras.
Cada país define as suas próprias condições e restrições em relação às comunicações comerciais, pelo que é importante compreender e respeitar as especificidades de cada um. É importante relembrar que estas condições e restrições estão sujeitas à legislação em vigor de cada país e podem sofrer alterações. A {{NAME}} não se responsabiliza pelo incumprimento destas políticas; a responsabilidade é do cliente.
Abaixo encontrará as restrições para os principais países para que possa operar de forma segura e eficaz. Caso tenha alguma dúvida ou se o país destinatário não estiver listado abaixo, recomendamos que contacte a nossa equipa de atendimento ao cliente.
Considerações Preliminares
Em todos os países, é necessário o consentimento do cliente para receber SMS ou chamadas de voz.
Para mensagens SMS promocionais, deve ser incluída uma opção de cancelamento de subscrição no conteúdo da SMS.
🇫🇷 França
As mensagens SMS comerciais ou promocionais enviadas para França devem obedecer a determinadas regulamentações legais, descritas abaixo. As mensagens transacionais, no entanto, não estão sujeitas a estas restrições.
Conteúdo Proibido
O envio de mensagens relacionadas com política, religião, jogo ou promoções não solicitadas é estritamente proibido.
Restrições de Horário
As mensagens SMS de marketing só podem ser enviadas de segunda-feira a sábado, entre as 8h e as 22h. Quaisquer mensagens enviadas fora deste horário serão automaticamente bloqueadas e agendadas para reenvio no próximo horário permitido. Ou seja, se tentar enviar uma SMS no domingo às 14h00, esta só será enviada na segunda-feira às 8h00.
Condições do Remetente
Contacte {{SUPPORT_EMAIL}} para obter mais informações e validar o seu remetente.
Cancelar subscrição do destinatário
É obrigatório adicionar STOP au [STOP_CODE] como instrução de cancelamento no final das suas mensagens SMS de marketing para França.
🇪🇸 Espanha
As mensagens SMS enviadas para Espanha têm determinadas condições legais. Qualquer SMS identificado como conteúdo de marketing estará sujeito às condições listadas nas secções abaixo.
Conteúdo Proibido
O envio de mensagens relacionadas com temas políticos ou religiosos, jogos de azar ou promoções não solicitadas é estritamente proibido.
🇬🇧 Reino Unido
As mensagens SMS enviadas para o Reino Unido estão limitadas a determinadas condições regulamentares. Qualquer mensagem SMS identificada como conteúdo de marketing estará sujeita às condições listadas abaixo.
Conteúdo Proibido
O envio de mensagens relacionadas com temas políticos ou religiosos ou promoções não solicitadas é estritamente proibido.
Se enviar conteúdo para adultos ou para jogos de azar, certifique-se de que a idade do destinatário foi verificada em conformidade com as Diretrizes da PSA e da Ofcom.
🇺🇸 Estados Unidos
As mensagens SMS comerciais ou promocionais enviadas para os Estados Unidos devem obedecer a determinadas regulamentações legais, descritas abaixo. As mensagens transacionais, no entanto, não estão sujeitas a estas restrições.
Conteúdo Restrito
O uso de encurtadores de URL públicos, como bit.ly ou tinyurl, não é permitido. No entanto, é permitido o uso de domínios personalizados nestes serviços. Portanto, pode utilizar o encurtador de URL próprio da {{NAME}}.
Além disso, é estritamente proibido o envio de mensagens com conteúdo sexualmente explícito ou pornográfico, material abusivo ou de assédio, informações relacionadas com armas de fogo, incluindo fogos de artifício, ou referências a álcool, tabaco ou drogas ilícitas. É também proibido o envio de mensagens sobre jogo, oportunidades de investimento, envio ou receção repetida de códigos de acesso único (OTPs) em nome de outros fornecedores, atividades consideradas de elevado risco financeiro, empréstimos ou perdão de empréstimos, serviços de recuperação de crédito, cobrança de dívidas ou questões fiscais. Da mesma forma, o conteúdo ligado a criptomoedas, incluindo aqueles relacionados com OTPs, consultas imobiliárias não solicitadas, como WeBuyHomes, ou promoções associadas a marketing multinível, não é permitido.
Condições do Remetente
Contacte {{SUPPORT_EMAIL}} para obter mais informações e validar o seu remetente.
🇨🇴 Colômbia
Restrições de Horário
As mensagens SMS de marketing só podem ser enviadas de segunda a sexta-feira, das 7h às 19h, e aos sábados, das 8h às 15h. O envio de mensagens promocionais não é permitido aos domingos e feriados. Quaisquer mensagens enviadas fora deste horário serão automaticamente bloqueadas e agendadas para reencaminhamento no próximo horário permitido. Isto significa que, se tentar enviar uma mensagem SMS no domingo às 14h00, esta só será enviada às 8h00 de segunda-feira.
Conteúdo Restrito
O conteúdo promocional em SMS pode, em alguns casos, exigir um registo prévio antes do envio. Além disso, a plataforma {{NAME}} pode adicionar automaticamente o nome do remetente ao início da mensagem ou incluir um URL no final, dependendo das condições do canal ou do país de destino.
Conteúdo Proibido
O envio de mensagens relacionadas com temas políticos ou religiosos, jogo ou promoções não solicitadas é estritamente proibido.
🇮🇪 Irlanda
Antes de enviar qualquer tráfego de marketing, é necessário o consentimento expresso (opt-in) dos utilizadores de dispositivos móveis.
Conteúdo Restrito
O envio de mensagens relacionadas com política, religião, jogo ou promoções não solicitadas é estritamente proibido.
Termos do Remetente
Contacte {{SUPPORT_EMAIL}} para obter mais informações e validar o seu remetente.