API Botão URL
🧩 A API de botão URL permite o envio de um botão que redireciona o usuário para uma página da web específica.
API: Baileys
Verifique aqui os Pré-Requisitos para utilizar Botões
Endpoint
https://{BACKEND_URL}/api/messages/sendURLBTN
Método
POST
Autenticação
Bearer {seutokenaqui}
Payload
{
"number": "",
"customData": {
"body": "Segue o nosso site",
"name": "cta_url",
"params": "{\"display_text\":\"Acessar\",\"id\":\"7863-45eb-8b11-17a8f8132388\",\"url\":\"http://meusite.com.br\",\"disabled\":false}"
}
}
➡️ “number”: telefone do destinatário no formato ddi ddd numero (somente números) ➡️ “body”: texto antes do botão ➡️ “name”: cta_url ➡️ “params”: – display_text: texto do botão – id: qualquer id – url: link do botão – disabled: false Abaixo estão os campos editáveis deste endpoint. Preencha o formulário, copie o código gerado e utilize-o no local apropriado para a sua integração.
URL do backend (menu API) Apagar URL [x] Token da conexão (menu Conexões) Apagar Token [x] Número de telefone do destinatário no formato internacional (ex: 5511999999999) O número deve conter entre 10 e 15 dígitos e estar no formato internacional. Texto da mensagem a ser enviada (ex: Veja nosso cardápio) Texto exibido no botão (ex: Acessar Menu) Link Url destino (ex: https://meulink.com.br) API Utilize o código em requisições HTTPS com ferramentas como cURL ou bibliotecas de integração.
Os trechos entre {...} devem ser ajustados manualmente ou preenchidos através dos formulários disponíveis acima.
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://{BACKEND_URL}/api/messages/sendURLBTN',
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": "{number}",
"customData": {
"body": "{mensagem}",
"name": "cta_url",
"params": "{\\"display_text\\":\\"{texto_do_botao}\\",\\"id\\":\\"7863-45eb-8b11-17a8f8132388\\",\\"url\\":\\"{texto_link}\\",\\"disabled\\":false}"
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: Bearer {seutokenaqui}' //Token cadastrado na conexão
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
FLOWBUILDER Insira o código em um bloco de “Http Request / Code” do tipo REQUISIÇÃO.
Os trechos delimitados por {{...}} são placeholders no formato Mustaches e não precisam ser alterados. Eles serão automaticamente substituídos pelos valores correspondentes no momento da execução.
Os trechos entre {...} devem ser ajustados manualmente ou preenchidos através dos formulários disponíveis acima.
let data = JSON.stringify({
"number": "{{number}}",
"customData": {
"body": "{mensagem}",
"name": "cta_url",
"params": "{"display_text":"{texto_do_botao}","id":"6deb1c2f-7863-45eb-8b11-17a8f8131288","url":"{texto_link}","disabled":false}"
}
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://{{backendURL}}/api/messages/sendURLBTN',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer {{connection_token}}'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
N8N Copie o código e cole em qualquer ponto do seu fluxo no N8N para adicionar o nó.
Os trechos entre {...} devem ser ajustados manualmente ou preenchidos através dos formulários disponíveis acima.
{
"meta": {
"instanceId": "9587d195c3fa7d1dba9131bb83058d7e6c57a07d7ef73b55d61bcf7eaf540fb8"
},
"nodes": [
{
"parameters": {
"method": "POST",
"url": "=https://{BACKEND_URL}/api/messages/sendURLBTN",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "={seutokenaqui}"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={n "number": "{number}",n "customData": {n "body": "{mensagem}",n "name": "cta_url",n "params": "{\"display_text\":\"{texto_do_botao}\",\"id\":\"7863-45eb-8b11-17a8f8132388\",\"url\":\"{texto_link}\",\"disabled\":false}"n }n}",
"options": {}
},
"id": "6ba1f45d-0ba7-4f46-84b7-5f5ec9a5fca1",
"name": "Botão URL",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
600,
320
]
}
],
"connections": {},
"pinData": {}
}
API Utilize o código em requisições HTTPS com ferramentas como cURL ou bibliotecas de integração.
Os trechos entre {...} devem ser ajustados manualmente ou preenchidos através dos formulários disponíveis acima.
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://{BACKEND_URL}/api/messages/sendURLBTN',
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": "{number}",
"customData": {
"body": "{mensagem}",
"name": "cta_url",
"params": "{\\"display_text\\":\\"{texto_do_botao}\\",\\"id\\":\\"7863-45eb-8b11-17a8f8132388\\",\\"url\\":\\"{texto_link}\\",\\"disabled\\":false}"
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: Bearer {seutokenaqui}' //Token cadastrado na conexão
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
FLOWBUILDER Insira o código em um bloco de "Http Request / Code" do tipo REQUISIÇÃO.
Os trechos delimitados por {{...}} são placeholders no formato Mustaches e não precisam ser alterados. Eles serão automaticamente substituídos pelos valores correspondentes no momento da execução.
Os trechos entre {...} devem ser ajustados manualmente ou preenchidos através dos formulários disponíveis acima.
let data = JSON.stringify({
"number": "{{number}}",
"customData": {
"body": "{mensagem}",
"name": "cta_url",
"params": "{"display_text":"{texto_do_botao}","id":"6deb1c2f-7863-45eb-8b11-17a8f8131288","url":"{texto_link}","disabled":false}"
}
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://{{backendURL}}/api/messages/sendURLBTN',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer {{connection_token}}'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
N8N Copie o código e cole em qualquer ponto do seu fluxo no N8N para adicionar o nó.
Os trechos entre {...} devem ser ajustados manualmente ou preenchidos através dos formulários disponíveis acima.
{
"meta": {
"instanceId": "9587d195c3fa7d1dba9131bb83058d7e6c57a07d7ef73b55d61bcf7eaf540fb8"
},
"nodes": [
{
"parameters": {
"method": "POST",
"url": "=https://{BACKEND_URL}/api/messages/sendURLBTN",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "={seutokenaqui}"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={n "number": "{number}",n "customData": {n "body": "{mensagem}",n "name": "cta_url",n "params": "{\"display_text\":\"{texto_do_botao}\",\"id\":\"7863-45eb-8b11-17a8f8132388\",\"url\":\"{texto_link}\",\"disabled\":false}"n }n}",
"options": {}
},
"id": "6ba1f45d-0ba7-4f46-84b7-5f5ec9a5fca1",
"name": "Botão URL",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
600,
320
]
}
],
"connections": {},
"pinData": {}
}
Retorno de API (Payload de Resposta)
Exemplo de retorno do envio de botão URL:
{
"mensagem": "Mensagem enviada SEM TICKET",
"ticket": null
}