Enviar Template
Metodo
POST https://oapi.ogmma.com.br/v1/channels/{channelId}/messages/template
Conceituacao
Envia uma mensagem de template pre-aprovado pelo WhatsApp para um numero de telefone atraves de um canal conectado. Templates sao mensagens estruturadas que foram previamente aprovadas pelo Meta e sao o unico tipo de mensagem que pode ser enviado para iniciar uma conversa fora da janela de 24 horas.
Disponibilidade
Este tipo de mensagem esta disponivel apenas para canais do tipo WHATSAPP_WABA. Canais Baileys nao suportam envio de templates.
Sobre Templates
- Templates devem ser criados e aprovados no Meta Business Manager antes de serem utilizados.
- Cada template possui um
nameunico e umlanguagedefinido na criacao. - Templates podem conter variaveis que sao preenchidas dinamicamente (ex:
{{1}},{{2}}). - Os componentes do template (header, body, buttons) podem receber parametros.
Atributos
Header
| Atributo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
| Authorization | string | Sim | Bearer {API_KEY} - Chave de autenticacao da API |
| Content-Type | string | Sim | application/json |
Path Parameters
| Atributo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
| channelId | string | Sim | ID do canal WABA pelo qual a mensagem sera enviada. |
Body
| Atributo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
| to | string | Sim | Numero do destinatario no formato DDI+DDD+NUM. |
| templateId | string | Sim | ID do template aprovado no Meta Business Manager. |
| variables | object | Nao | Objeto com variaveis dinamicas do template (chave-valor). |
| headerParams | object | Nao | Parametros do header do template. |
| headerParams.imageUrl | string | Nao | URL da imagem para o header. |
| headerParams.videoUrl | string | Nao | URL do video para o header. |
| headerParams.documentUrl | string | Nao | URL do documento para o header. |
| headerParams.text | string | Nao | Texto para o header. |
| conversationId | string | Nao | ID de uma conversa existente para associar a mensagem. |
Request
Template simples (sem variaveis)
- cURL
- Node.js
- Python
curl -X POST "https://oapi.ogmma.com.br/v1/channels/{channelId}/messages/template" \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"to": "5511999998888",
"templateId": "6650a1b2c3d4e5f6a7b8c9d1"
}'
const axios = require('axios');
const response = await axios.post(
'https://oapi.ogmma.com.br/v1/channels/{channelId}/messages/template',
{
to: "5511999998888",
templateId: "6650a1b2c3d4e5f6a7b8c9d1"
},
{
headers: {
'Authorization': 'Bearer {API_KEY}',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import requests
response = requests.post(
'https://oapi.ogmma.com.br/v1/channels/{channelId}/messages/template',
json={
'to': '5511999998888',
'templateId': '6650a1b2c3d4e5f6a7b8c9d1'
},
headers={
'Authorization': 'Bearer {API_KEY}',
'Content-Type': 'application/json'
}
)
print(response.json())
Template com variaveis
- cURL
- Node.js
- Python
curl -X POST "https://oapi.ogmma.com.br/v1/channels/{channelId}/messages/template" \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"to": "5511999998888",
"templateId": "6650a1b2c3d4e5f6a7b8c9d1",
"variables": {
"1": "Joao Silva",
"2": "#12345",
"3": "R$ 150,00"
}
}'
const axios = require('axios');
const response = await axios.post(
'https://oapi.ogmma.com.br/v1/channels/{channelId}/messages/template',
{
to: "5511999998888",
templateId: "6650a1b2c3d4e5f6a7b8c9d1",
variables: {
"1": "Joao Silva",
"2": "#12345",
"3": "R$ 150,00"
}
},
{
headers: {
'Authorization': 'Bearer {API_KEY}',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import requests
response = requests.post(
'https://oapi.ogmma.com.br/v1/channels/{channelId}/messages/template',
json={
'to': '5511999998888',
'templateId': '6650a1b2c3d4e5f6a7b8c9d1',
'variables': {
'1': 'Joao Silva',
'2': '#12345',
'3': 'R$ 150,00'
}
},
headers={
'Authorization': 'Bearer {API_KEY}',
'Content-Type': 'application/json'
}
)
print(response.json())
Template com header de imagem e variaveis
- cURL
- Node.js
- Python
curl -X POST "https://oapi.ogmma.com.br/v1/channels/{channelId}/messages/template" \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"to": "5511999998888",
"templateId": "6650a1b2c3d4e5f6a7b8c9d1",
"variables": {
"1": "30%",
"2": "31/01/2024"
},
"headerParams": {
"imageUrl": "https://exemplo.com/promo-janeiro.jpg"
}
}'
const axios = require('axios');
const response = await axios.post(
'https://oapi.ogmma.com.br/v1/channels/{channelId}/messages/template',
{
to: "5511999998888",
templateId: "6650a1b2c3d4e5f6a7b8c9d1",
variables: {
"1": "30%",
"2": "31/01/2024"
},
headerParams: {
imageUrl: "https://exemplo.com/promo-janeiro.jpg"
}
},
{
headers: {
'Authorization': 'Bearer {API_KEY}',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import requests
response = requests.post(
'https://oapi.ogmma.com.br/v1/channels/{channelId}/messages/template',
json={
'to': '5511999998888',
'templateId': '6650a1b2c3d4e5f6a7b8c9d1',
'variables': {
'1': '30%',
'2': '31/01/2024'
},
'headerParams': {
'imageUrl': 'https://exemplo.com/promo-janeiro.jpg'
}
},
headers={
'Authorization': 'Bearer {API_KEY}',
'Content-Type': 'application/json'
}
)
print(response.json())
Response
202 - Aceito
{
"success": true,
"message": "Mensagem enfileirada para envio"
}
400 - Dados invalidos
{
"message": "Dados de entrada invalidos.",
"code": "VALIDATION_ERROR",
"errors": [
{
"field": "templateId",
"message": "O ID do template e obrigatorio."
}
]
}
400 - Template nao encontrado
{
"message": "O template informado nao foi encontrado ou nao esta aprovado.",
"code": "TEMPLATE_NOT_FOUND"
}
401 - Nao autorizado
{
"message": "Token de autenticacao invalido ou ausente.",
"code": "UNAUTHORIZED"
}
429 - Rate limit excedido
{
"message": "Limite de requisicoes excedido. Tente novamente em alguns segundos.",
"code": "RATE_LIMIT_EXCEEDED"
}
Janela de 24 horas
Templates sao a unica forma de enviar mensagens para contatos fora da janela de 24 horas do WhatsApp. Apos o contato enviar uma mensagem, voce tem 24 horas para responder com mensagens livres. Apos esse periodo, apenas templates aprovados podem ser enviados.