API Oficial Mensagem Template
Envia uma mensagem template pela API oficial, estando previamente aprovada.
API: Oficial
Verifique aqui os Pré-Requisitos para utilizar APIs
Endpoint
https://{{BACKEND_URL}}/api/messages/sendMetaCustom
Método
POST
Autenticação
Bearer {seutokenaqui}
Payload
{
"number": "",
"name": "vars_001",
"language": "pt_BR",
"openTicket": 1,
"queueId": 100,
"template": [
{
"type": "header",
"parameters": [
{
"type": "text",
"text": "Texto cabeçalho"
}
]
},
{
"type": "body",
"parameters": [
{
"type": "text",
"text": "Maria"
},
{
"type": "text",
"text": "Festa do Peão"
},
{
"type": "text",
"text": "15/01/2028"
}
]
},
{
"type": "button",
"sub_type": "quick_reply",
"index": "0",
"parameters": [
{
"type": "payload",
"payload": "Contato"
}
]
}
]
}
“number“: telefone do destinatário no formato ddi ddd numero (somente números).
“name“: nome do template idêntico ao aprovado na Meta.
“language“: idioma idêntico ao aprovado na Meta.
“openTicket”:
0 Não abre ticket
1 Ticket Atenção:– se “openTicket”= 0 (o ticket será encerrado).
– Se “openTicket”= 1 e “queueId”=0 status do ticket permanece como estava.
– Se “openTicket”= 1 e “queueId”=n status do ticket muda para “Aguardando”.
“queueId”: ID da fila desejada ( Só funciona quando
"openTicket": "1" ).
“template“:
– type: header, body ou button
(adicione os types conforme seu template aprovado na Meta) TYPE
header– parameters:— > type: dentro do header pode ser text, image, video, document ou location exemplo texto“type”: “header”,
“parameters”: [
{ “type”: “text”, “text”: “Meu cabeçalho” }]
exemplo imagem“type”: “header”,
“parameters”: [
{ “type”: “image”, “image”: { “link”: “https://…” } }]
exemplo áudio// a Meta não tem suporte a Áudio no cabeçalho
exemplo vídeo“type”: “header”,
“parameters”: [
{ “type”: “video”, “video”: { “link”: “https://…” } }]
exemplo documento“type”: “header”,
“parameters”: [
{ “type”: “document”, “document”: { “link”: “https://…” “filename”: “livro.pdf” } }]
exemplo localização“type”: “header”,
“parameters”: [
{ “type”: “location”, “location”: { “latitude”: -22.950762, “longitude”: -43.2135083, “name”: “Cristo Redentor”, “address”: “texto do endereço” } }]
Adicione o parâmetro exato de seu template cadastrado na Meta, lembrando que ela só permite 1 header por template.
TYPE
body– parameters:— > type: dentro do body pode ser text exemplo texto “type”: “text”, “text”: “O valor da sua variável aqui”
Adicione mais parâmetros de texto conforme cadastrado no seu template da META, e seguindo exatamente a ordem das variáveis.
TYPE
button– sub_type: dentro do button pode ser quick_reply, url, copy_code ou flow – index: número que representa a ordem do botão. Deve começar pelo 0 (zero), próximo botão ser 1, próximo ser 2… O importante aqui é que o número deve ser exatamente a ordem que foi cadastrada no template. – parameters:— > type: dentro do button pode ser payload, text, coupon_code ou action exemplo para quick_reply “type”: “payload”,
“payload”: “Texto invisível de retorno para o webhook”
exemplo para url dinâmica “type”: “text”,
“text”: “pagina-de-vendas” // Text é a Parte dinâmica da URL: site.com/
exemplo para copy_code “type”: “coupon_code”,
“coupon_code”: “texto a ser copiado aqui”
exemplo para flow “type”: “action”,
“action”: { “flow_token”: “id_da_sessao”, “flow_action_data”: { “chave”: “valor” } }
Botões que não contem variável, como o botão URL Estático e o Botão Ligação (Call) não precisam ser colocados no payload. Coloque apenas os botões que possuem variáveis, e lembre-se de colocar o index dele na ordem correta conforme o template cadastrado na Meta.
Botões Quick Reply só podem ser usados juntos com outros quick reply. Não podem ser utilizados com URL, Copy Code ou outros. API Utilize o código em requisições HTTPS com ferramentas como cURL ou bibliotecas de integração.
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://{{BACKEND_URL}}/api/messages/sendMetaCustom',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"number": "",
"name": "vars_001",
"language": "pt_BR",
"openTicket": 1,
"queueId": 100,
"template": [
{
"type": "header",
"parameters": [
{
type": "text",
"text": "Texto cabeçalho"
}
]
},
{
"type": "body",
"parameters": [
{
"type": "text",
"text": "Maria"
},
{
"type": "text",
"text": "Festa do Peão"
},
{
"type": "text",
"text": "15/01/2028"
}
]
},
{
"type": "button",
"sub_type": "quick_reply",
"index": "0",
"parameters": [
{
"type": "payload",
"payload": "Contato"
}
]
}
]
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: Bearer {seutokenaqui}' //Token cadastrado na conexão
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;