Consultar o status de uma campanha
curl --request GET \
--url https://campaign-orchestration.treble.ai/v2/send-campaign/{launch_request_id} \
--header 'Authorization: <authorization>'import requests
url = "https://campaign-orchestration.treble.ai/v2/send-campaign/{launch_request_id}"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://campaign-orchestration.treble.ai/v2/send-campaign/{launch_request_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://campaign-orchestration.treble.ai/v2/send-campaign/{launch_request_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://campaign-orchestration.treble.ai/v2/send-campaign/{launch_request_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://campaign-orchestration.treble.ai/v2/send-campaign/{launch_request_id}")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://campaign-orchestration.treble.ai/v2/send-campaign/{launch_request_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"launch_request_id": "59d7ef01-4518-444f-816e-1c45c1748974",
"status": "DONE",
"poll_id": 1251072,
"deployments": [
{
"conversation_id": "671a1a2e2e2e2e2e2e2e2e2e",
"treble_id": "abc123",
"cellphone": "3051234567",
"business_scope_id": null,
"username": null,
"status": "SENT"
}
]
}{
"detail": "Não existe uma solicitação de lançamento com este id para esta empresa"
}API
Consultar o status de uma campanha
Veja como está uma campanha enviada para POST /v2/send-campaign: se ainda está pendente, já foi capturada para processamento, ou terminou, junto com o status de cada implantação individual em que foi expandida.
GET
/
v2
/
send-campaign
/
{launch_request_id}
Consultar o status de uma campanha
curl --request GET \
--url https://campaign-orchestration.treble.ai/v2/send-campaign/{launch_request_id} \
--header 'Authorization: <authorization>'import requests
url = "https://campaign-orchestration.treble.ai/v2/send-campaign/{launch_request_id}"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://campaign-orchestration.treble.ai/v2/send-campaign/{launch_request_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://campaign-orchestration.treble.ai/v2/send-campaign/{launch_request_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://campaign-orchestration.treble.ai/v2/send-campaign/{launch_request_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://campaign-orchestration.treble.ai/v2/send-campaign/{launch_request_id}")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://campaign-orchestration.treble.ai/v2/send-campaign/{launch_request_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"launch_request_id": "59d7ef01-4518-444f-816e-1c45c1748974",
"status": "DONE",
"poll_id": 1251072,
"deployments": [
{
"conversation_id": "671a1a2e2e2e2e2e2e2e2e2e",
"treble_id": "abc123",
"cellphone": "3051234567",
"business_scope_id": null,
"username": null,
"status": "SENT"
}
]
}{
"detail": "Não existe uma solicitação de lançamento com este id para esta empresa"
}Lembre-se que para usar este endpoint, você deve ter obtido sua chave de API na seção de Desenvolvedores da plataforma Treble.
launch_request_id retornado por Enviar uma campanha para saber se ainda está PENDING, já foi capturada para processamento (CLAIMED), ou terminou (DONE) — junto com o status de cada implantação individual em que foi expandida.
Valores do status da implantação
Cada item emdeployments tem seu próprio status, que é null até o Conversation Runtime capturá-lo. A partir daí, ele passa por um destes valores:
| Status | Significado |
|---|---|
RECEIVED | O Conversation Runtime recebeu a implantação e está prestes a enviá-la. |
RECEIVED_BY_WORKER | Um worker a capturou e está processando. |
RETRY | Ocorreu uma falha transitória e a implantação está sendo reenviada. |
SUCCESS | A mensagem foi enviada com sucesso (a entrega ainda não foi confirmada pelo WhatsApp). |
DELIVERED | O WhatsApp confirmou que a mensagem foi entregue ao dispositivo do usuário. |
PUSH_NOTIFICATION (também aparece com o typo PUSH_NOTIFATION) | Enviada como notificação push em vez de uma mensagem do WhatsApp. |
REVOKED | A implantação foi cancelada antes de ser enviada. |
VALIDATION_ERROR | Os dados da implantação não passaram na validação antes do envio. |
INVALID_PHONE | O celular não é válido ou não tem WhatsApp. |
INVALID_POLL | Tentou-se enviar uma conversa eliminada ou desativada. |
MISSING_PARAMETER | Faltou uma variável obrigatória no template HSM. |
PARAMETER_MISMATCH | O número de variáveis enviadas não coincide com as do template HSM. |
CHARACTER_LIMIT_HEADER | O cabeçalho do template HSM excede o limite de caracteres permitido pelo WhatsApp. |
CHARACTER_LIMIT_BODY | O corpo do template HSM excede o limite de caracteres permitido pelo WhatsApp. |
FAILURE | A implantação falhou após 3 tentativas. |
FAILURE_BY_HUMAN_HANDOVER | O usuário está falando com um agente, então a mensagem automática não foi enviada. |
FAILURE_BY_RATE_LIMIT | Enviar a mensagem excederia o limite de envios permitido pelo WhatsApp. |
COMPANY_RATE_LIMIT | Excedeu o limite de sessões configurado pela empresa. |
FAILURE_BY_TIER_CAPACITY | Nenhuma linha do WhatsApp tinha capacidade suficiente para fazer a implantação. |
FAILURE_BY_BLOCKED_CONTACT | O contato foi bloqueado pela empresa. |
FAILURE_BY_OPTOUT_CONTACT | O contato optou por não receber mais comunicações da empresa. |
FAILURE_BY_DISABLED_HSM | O Meta desabilitou o template HSM que foi enviado. |
FAILURE_BY_SPAM_RATE_LIMIT | O WhatsApp restringiu a linha por spam; ela não pode enviar mais mensagens no momento. |
FAILURE_BY_EXPERIMENT_NUMBER | O WhatsApp está usando esse número para experimentos internos, então a implantação não pôde ser realizada. |
FAILURE_BY_META_CHOSE_NOT_DELIVER | As heurísticas internas do Meta decidiram não entregar a mensagem. |
FAILURE_BY_TEST_CHANNEL | A linha é um canal de teste e não pode enviar implantações reais. |
FAILURE_BY_MEDIA_UPLOAD_ERROR | O arquivo de mídia anexado falhou ao ser enviado para o WhatsApp. |
FAILURE_BY_DEPLOYMENT_LIMIT_REACHED | A empresa atingiu seu limite de implantações. |
FAILURE_BY_UNABLE_TO_CONTACT | O WhatsApp não conseguiu contatar o dispositivo do usuário naquele momento — geralmente é temporário. Veja a explicação completa. |
FAILURE_BY_PAYMENT_ISSUE | O Meta rejeitou o envio do template por um problema de pagamento na conta do WhatsApp Business. Veja a explicação completa. |
Cabeçalhos
Chave de API de autorização
Parâmetros de caminho
O launch_request_id retornado ao enviar a campanha
Esta página foi útil?