Ir para o conteúdo

WHATSAPP

Enviando

Para enviar uma mensagem WHATSAPP, você precisa executar o método POST /whatsapp/messages, passando parâmetros no corpo com a indicação dados de autorização no cabeçalho.

Parâmetros de solicitação

Parâmetro Tipo de dados Descrição e valores permitidos
from string Nome do remetente usado ao enviar a mensagem
Apenas os nomes dos remetentes que estão disponíveis para uso pelo usuário
to string Número de telefone em formato internacional (sem "+")
text
(optional)
string Texto da mensagem
Máximo de 1000 caracteres UTF-8
validity
(optional)
integer Indicado apenas no caso de envio de mensagem por template. O valor possível - é um dia
contentUrl
(optional)
string URL de conteúdo
Qualquer URL válido com o esquema http ou https
contentName
(optional)
string Nome do conteúdo
100 caracteres no máximo
contentType
(optional)
string MimeType de conteúdo
Existente Mime Type
callbackUrl
(optional)
string URL para o qual o sistema enviará notificações sobre mudanças no status da mensagem
Qualquer URL válido com esquema http ou https
callbackData
(optional)
string Os dados a serem especificados no retorno de chamada de status da mensagem
templateId
(optional)
string Identificador do modelo no sistema do fornecedor
templateParams
(optional)
object Um conjunto de parâmetros para preenchimento por um modelo, onde a chave é o número da posição do valor
Por exemplo:
languageCode
(optional)
string Código do idioma, padrão 'EN'

MIMEType

Mídia Suportado
Content-Type
Extensões de arquivo Restrições de tamanho Comente
audio audio/acc
audio/mp4
audio/amr
audio/mpeg
audio/ogg
.acc
.mp4
.mp4a
.amr
.mpeg
.ogg
16Mb codecs=opus
document Qualquer tipo MIME válido 100 Mb
image image/jpeg
image/png
.jpeg
.jpg
*.png
16 Mb GIFs serão automaticamente convertidos em vídeo MP4 no lado do WhatsApp
video video/mp4
video/3gpp
.mp4
.3gp
*.3g2
5 Mb Somente codecs de vídeo H.264 e AAC são suportados
voice auidio/ogg .ogg 16 Mb Áudio gravado no dispositiv
codecs=opus

Solicitar exemplo

```json tab="JSON" POST https://api.devino.online/whatsapp/messages Authorization: Key QWxhZGRpbjpvcGVuIHNlc2FtZQ== Content-Type: application/json Accept: application/json

{ "messages": [ { "from": "MyCompany", "to": "79034567890", "text": "Code: 1234" } ] }

```curl tab="cURL"
curl -X POST \
 -H 'Authorization: Key QWxhZGRpbjpvcGVuIHNlc2FtZQ==' \
 -H 'Content-Type: application/json' \
 -d '{ 
    "messages": [ 
        { 
            "from": "MyCompany",
            "to": "79034567890",
            "text": "Code: 1234"
        }
    ]
}' https://api.devino.online/whatsapp/messages

```python tab="Python" import requests

messages = { "messages": [ { "from": "MyCompany", "to": "79034567890", "text": "Code: 1234" } ] }

resp = requests.post( 'https://api.devino.online/whatsapp/messages', json=messages ) print(resp.json())

### Resposta exemplo

```json tab="JSON"
{
    "result": [
        {
            "code": "OK",
            "messageId": "3482512350952730368"
        }
    ]
}

```json tab="Modelo"

{ "result": [ { "code": "CODE", "reasons": [ { "key": "string", "ref": "string" } ], "messageId": "string" } ] }

### Parâmetros de resposta

| Parâmetro | Tipo de dados | Descrição e valores permitidos |
|-----------|---------------|--------------------------------|
| **code** | string | Indica o resultado do processamento da mensagem<br> 1. OK - Processado com sucesso<br> 2. REJECTED - Ocorreu um erro ao processar a solicitação |
| **reasons**<br> _(optional)_ | Array[String, String] | Matriz de erros que ocorreram durante o processamento da mensagem<br> Especificado apenas quando **code=REJECTED** |
| reasons.**key** | string | Erro de código |
| reasons.**ref**<br> _(optional)_ | string | Uma referência ao parâmetro em que ocorreu o erro |
| **messageId**<br> _(optional)_ | string | Identificador da mensagem<br>Especificado apenas quando **code=OK** |
| **description**<br> _(optional)_ | string | Descrição do erro<br>Especificado apenas quando **code=REJECTED** |

### Códigos de erro

| Key | Ref | Descrição |
|-----|-----|----------|
| billing.error | | O pagamento é necessário |
| forbidden | | Envio proibido |
| unknown | | Erro desconhecido |
| invalid | messages[i].to | Número de telefone incorreto |
| invalid | messages[i].validity | Vida útil incorreta |
| invalid | messages[i].callbackUrl | URL incorreto |
| invalid | messages[i].contentUrl | O URL do conteúdo está incorreto |
| invalid | messages[i].contentType | Tipo de conteúdo errado |
| invalid | messages[i].from | Remetente incorreto |
| invalid | messages[i].languageCode | Código de idioma incorreto |
| length.too.long | messages[i].to | O comprimento máximo do número de telefone foi excedido |
| length.too.long | messages[i].text | Comprimento máximo da mensagem excedido |
| length.too.long | messages[i].languageCode | Código de idioma muito longo |
| length.too.short | messages[i].contentName | Nome do conteúdo muito curto |
| length.too.short | messages[i].languageCode | СCódigo de idioma muito curto |
| must.be.not.null | messages[i].to | Destinatário não especificado |
| must.be.not.null | messages | O array de mensagens não pode estar vazio |
| must.be.not.null | messages[i].from | Remetente não espe |
| must.be.not.null | messages[i] | Texto e campo de conteúdo não especificados |
| not.available | messages[i].from | Endereço de remetente inválido |
| too.many.messages | messages | O tamanho máximo da matriz `messages` foi excedido |

## Status de webhook

Para receber os status das mensagens WHATSAPP, ao enviar uma mensagem usando o método **POST/whatsapp/messages**, especifique o parâmetro **callbackUrl**.


### Parâmetros de obtenção de status

| Parâmetro | Tipo de dados | Descrição e valores permitidos |
|-----------|---------------|--------------------------------|
| **messageId** | long | Identificador de mensagem |
| **ts** | long | Timestamp com milissegundos de obtenção do status |
| **status** | string | Status da mensagem |
| **errorCode** | integer | Erro de código |
| **ip** | string | Endereço de IP |
| **browser** | string | Nome do navegador |
| **os** | string | Nome do sistema operacional |
| **userAgent** | string | UserAgent |
| **options** | string | Os dados que foram especificados em `callbackData` ao enviar a solicitação |

### Exemplo de obtenção de status

```json
[
    {
        "messageId": 1,
        "ts": 0,
        "status": "DELIVERED",
        "errorCode": 0,
        "ip": "127.0.0.1",
        "browser": "string",
        "os": "string",
        "userAgent": "string",
        "options": "string"
    }
]

Códigos de erro

O código Descrição
2000 Operador receptor não definido
2001 Rejeitado como spam
2002-2004 Erro de faturamento
2005 Fundos insuficientes
2006-2008 Erro de faturamento
2009 Rejeitado como duplicado
2010, 2011 Tempo de vida expirou
2012 Erro de faturamento
2017 Rejeitado como spam
2300 Limite de comprimento de texto de mensagem excedido
2301 Muitas mensagens foram enviadas em um curto período de tempo. Repita o envio
2302 Rejeitado como spam
2303 O tipo MIME especificado não é compatível ou a imagem é muito grande (maior ou igual a 5 MB)
2304 Limite de comprimento de texto de mensagem excedido
2305 O usuário não usou ou não usa mais o WhatsApp
2307 Ocorre ao tentar enviar uma mensagem para o número de telefone da conta comercial a partir da qual o envio é feito
2308 O número de parâmetros do modelo especificado não corresponde ao número esperado
2309, 2310 O modelo não existe para o idioma ou local especificado
2311 Excedendo o comprimento do parâmetro do modelo
2312 A mensagem foi enviada fora da caixa de diálogo e sem especificar o modelo
2313 Erro desconhecido

Webhook de entrada

Atenção

Para receber mensagens do WhatsApp, você deve:

  • entre em contato com o gerente da empresa ou contate o suporte técnico,
  • diga a URL para a qual o sistema enviará as mensagens recebidas do WhatsApp.

Opções para receber uma mensagem

Parâmetro Tipo de dados Descrição e valores permitidos
incomingMessageId long Identificador de mensagem
to string Endereço do destinatário
from string Endereço do remetente
ts long Timestamp com milissegundos de recebimento da mensagem
text
(optional)
string Mensagem de texto
contentUrl
(optional)
string URL para o conteúdo da mensagem
contentType
(optional)
string Tipo de conteúdo na mensagem
contentName
(optional)
string Nome do conteúdo na mensagem
profileName
(optional)
string Nome do perfil do remetente
whatsAppGeoLocation
(optional)
WhatsAppGeolocation Contém a geolocalização enviada pelo usuário
whatsAppContacts
(optional)
List[WhatsAppContact] Lista de contatos enviada pelo usuário

WhatsAppGeolocation

Informação

Mensagens de entrada com geodados atuais não são suportadas no momento.

Parâmetro Tipo de dados Descrição e valores permitidos
latitude double Latitude
longitude double Longitude
address string O endereço onde o usuário está localizado
addressName string Nome da localização do usuário
addressurl string URL, de onde o usuário obteve seus geodados

WhatsAppContact

Parâmetro Tipo de dados Descrição e valores permitidos
addresses array[string] Endereços de contato completos. Cada endereço pode conter: street, city, state, zip, country, countryCode e type.
birthday string Aniversário do contato em YYYY-MM-DD.
emails array[string] Endereço de e-mail. Cada endereço pode conter email e type.
contactName array[string] O nome completo do contato. Cada objecto contactName conter campos: firstName, middleName, lastName, formattedName, namePrefix e nameSuffix.
contactCompany array[string] Informações sobre o local de trabalho do contato. Cada objeto pode conter campos company, department e title.
phones array[string] Números de telefone de contato. Cada objeto pode conter campos phone, waId e type.
urls array[string] URL do contato. Cada objeto pode conter campos url e type.

Exemplo de recebimento de uma mensagem

{
    "incomingMessageId": 0,
    "to": "str",
    "from": "str",
    "text": "str",
    "contentUrl": "str",
    "contentType": "str",
    "contentName": "str",
    "profileName": "str",
    "ts": 0
}