Enviar botões interativos
Não existe um endpoint separado /messages/interactive. Os botões são campos extras (buttons, header, footer) do único endpoint de envio:
POST https://pilotstatus.com.br/v1/messages/send
Onde os botões são permitidos
- Envios de template (
templateId) — buttons sobrescrevem os botões do próprio template e podem ser combinados com a mídia do template (incluindo video / document; a Meta Cloud API pode rejeitar algumas combinações de botões com vídeo/documento no momento da entrega).
- Envios de texto livre (
text) — buttons junto com o texto; header e footer exigem buttons.
- Não permitidos no modo de mídia direta pura (
media + mediaType sem templateId/text) — veja Enviar uma mensagem.
Até 3 botões por mensagem. Tipos: reply, url, call, copy.
Exemplo: template + botões
curl -X POST "https://pilotstatus.com.br/v1/messages/send" \
-H "Content-Type: application/json" \
-H "x-api-key: ps_sua_chave_aqui" \
-d '{
"templateId": "confirm-template",
"destinationNumber": "+5511999999999",
"variables": { "name": "João" },
"buttons": [
{ "type": "reply", "displayText": "Confirmar", "id": "confirm" },
{ "type": "url", "displayText": "Ver detalhes", "url": "https://example.com/order/123" }
]
}'
Resposta (202)
{
"id": "msg_abc",
"correlationId": "corr_123",
"status": "QUEUED"
}
Como as respostas de botão chegam
Quando o contato toca em um botão de resposta (reply), você recebe um webhook de entrada normal — message.reply (ou message.received) — cujo content é o texto do botão (ex.: "Confirmar"), com quotedMessageId apontando para a sua mensagem original.
Não existe um evento ou tipo de mensagem button_reply nem um campo button_id — o id que você define no botão de resposta não é devolvido. Identifique o toque no botão pelo texto em content mais o quotedMessageId (e o correlationId quando presente).
Veja os payloads completos em Eventos de webhook e a lista completa de parâmetros (formato dos objetos de botão, regras de header/footer) em Enviar uma mensagem.