Enviar Mensagens de Vídeo Automatizadas para Grupos do WhatsApp

3 de julho de 2024

Quando o marketing digital ficou famoso alguns anos atrás, ninguém pensava em usar o WhatsApp para estratégias de vendas. As empresas se concentram em banners e anúncios na internet. Hoje, tudo mudou. Agora temos Influencer Marketing, estratégias digitais para redes sociais, e-commerce, marketing de afiliados e lojas que vendem exclusivamente via WhatsApp.

O WhatsApp é uma plataforma altamente eficaz para desenvolver novos negócios. Com Wassenger, você pode aproveitar as melhores estratégias de vendas pelo WhatsApp, ajudando a crescer seu negócio e aumentar as vendas. Enviar vídeos promocionais, informativos ou de documentação é uma maneira eficaz de manter os clientes engajados e informados.

Neste tutorial, vamos ensinar como enviar mensagens de vídeo automatizadas e mais usando Wassenger, para que você possa aprimorar seus esforços de marketing e obter melhores resultados.

🤩 🤖 Wassenger é uma plataforma completa de comunicação e solução de API para WhatsApp. Explore mais de 100+ casos de uso de API e automatize qualquer coisa no WhatsApp inscrevendo-se para um teste gratuito e começando em minutos**!**

Se você precisa enviar mensagens a partir de código, pode usar qualquer linguagem de programação que consiga fazer requisições HTTPS para a API. Abaixo você encontrará o testador de API ao vivo com exemplos de código prontos para uso em várias linguagens de programação.

Requisitos

Endpoints da API

Neste tutorial usaremos o seguinte endpoint da API:

Últimas novidades! Agora você pode enviar mensagens de mídia em uma única requisição de API passando a URL remota onde o arquivo está armazenado. Clique aqui para testar

Fazer o upload do arquivo

Para enviar um arquivo como mensagem multimídia, neste caso um arquivo de vídeo, você deve primeiro fazer o upload do arquivo para a plataforma.

Você pode enviar o arquivo usando os seguintes métodos pela API:

  • URL remota usando JSON com um campo url com a URL publicamente acessível para baixar o arquivo (recomendado).
  • Formulário (multipart/form-data) usando o campo file com o conteúdo do arquivo.
  • Dados binários brutos carregando o conteúdo do arquivo como um fluxo de dados com o MIME type apropriado no cabeçalho Content-Type, por exemplo: video/mp4.

Neste tutorial, cobriremos os primeiros dois métodos de upload de arquivos.

Fazer o upload do arquivo permite que o sistema valide e armazene o arquivo apenas uma vez, evitando o custo de upload e processamento cada vez que uma mensagem de mídia for entregue, melhorando assim a velocidade de entrega da mensagem e simplificando a integração com a API.

Observe que o arquivo enviado será armazenado na plataforma por 90 dias por padrão, portanto, em muitos casos você deve enviar o arquivo apenas uma vez e pronto. Opcionalmente, você também pode configurar quanto tempo o arquivo deve ser armazenado na plataforma definindo um tempo de expiração personalizado, para mais detalhes consulte a documentação da API. Por padrão, sua conta tem 10GB de capacidade de armazenamento de arquivos na nuvem.

Fazer upload do arquivo usando uma URL remota

Você pode enviar qualquer arquivo para a plataforma simplesmente especificando a URL pública de onde baixar o arquivo.

Caso a URL não seja publicamente acessível, retorne um status HTTP inválido (>=400) ou retorne conteúdo não binário, como HTML ou texto, a API retornará um erro.

Target API URL (POST)

https://api.wassenger.com/v1/files

Cabeçalhos HTTPS obrigatórios

Content-Type: application/json
Token: $API-TOKEN

Corpo da requisição em formato JSON

{
  "url": "https://download.samplelib.com/mp4/sample-5s.mp4"
}

Alternativamente, você também pode especificar campos opcionais ao enviar o arquivo, como tempo de expiração personalizado, identificador de referência ou um nome de arquivo personalizado.

{
  "url": "https://download.samplelib.com/mp4/sample-5s.mp4",
  "expiration": "1d",
  "filename": "sample-5s.mp4",
  "reference": "Optional reference ID"
}

Obter o ID do arquivo a partir da resposta da API

Se o arquivo for enviado corretamente para a plataforma, a API retornará uma resposta válida em formato JSON como esta:

[
  {
    "id": "[Redacted ID]",
    "format": "native",
    "filename": "sample-5s.mp4",
    "size": 53697,
    "mime": "video/mp4",
    "ext": "mp4",
    "kind": "video",
    "sha2": "[Redacted Hash]",
    "tags": [],
    "status": "active",
    "mode": "default",
    "createdAt": "2021-05-08T22:49:50.954Z",
    "expiresAt": "2021-09-06T22:49:50.949Z"
  }
]

Importante: A partir do JSON de resposta você deve obter o campo id com um valor, por exemplo 06248ed01a7a65946c0701, que representa o ID único do arquivo que usaremos posteriormente para enviar o arquivo como mensagem de mídia em uma requisição de API separada.

Fazer upload do arquivo usando multipart form data

Você pode enviar qualquer arquivo para a plataforma usando o mecanismo tradicional de formulário multipart amplamente utilizado por navegadores web para enviar diferentes tipos de conteúdo, incluindo arquivos, para um servidor remoto.

Aqui você pode saber mais sobre como funciona o upload multipart form.

Target API URL (POST)

https://api.wassenger.com/v1/files

Cabeçalhos HTTPS obrigatórios

Content-Type: multipart/form-data
Token: $API-TOKEN

Corpo da requisição

Diferentemente do upload baseado em JSON, neste caso precisamos contar com um mecanismo mais complexo baseado no cliente HTTP que estamos usando, que nos ajudará a compor os campos do formulário de acordo com a especificação multipart.

Dependendo da linguagem de programação ou do software cliente HTTP que você estiver usando, o processo pode variar. Para simplificar, vamos destacar as ferramentas mais populares, como Postman, e linguagens de programação populares.

O requisito principal é definir o campo file no formulário de dados, caso contrário, a API retornará um erro, pois esse campo é obrigatório.

🤩 🤖 Wassenger é uma plataforma completa de comunicação e solução de API para WhatsApp. Explore mais de 100+ casos de uso de API e automatize qualquer coisa no WhatsApp inscrevendo-se para um teste gratuito e começando em minutos**!**

Fazer o upload do arquivo pelo seu navegador

Você pode enviar arquivos manualmente para a plataforma a partir do console web sem instalar nenhum software:

Para upload automatizado de arquivos, veja as opções alternativas abaixo.

Fazer upload do arquivo usando cURL

cURL é um cliente HTTP de linha de comando popular e útil.

Você pode enviar arquivos facilmente a partir da linha de comando usando o seguinte comando, em que path/to/video.mp4 deve representar o caminho do arquivo que você deseja enviar a partir do seu disco local:

curl \
-F file=@path/to/video.mp4 \
-H 'Token: $API-TOKEN' \
https://api.wassenger.com/v1/files

Fazer upload do arquivo usando Postman

Postman é uma ferramenta versátil e prática para testes e depuração HTTP.

Seguindo este simples tutorial, você pode enviar arquivos usando o Postman, substituindo a URL de destino pela API.

Explore o tutorial do Postman aqui

Fazer upload do arquivo usando código

Explore como usar o código no seu navegador sem instalar nenhum software.

Além disso, você pode encontrar diferentes linguagens que pode testar em Replit.com:

# Requer instalar o pacote requests: # Execute: pip install requests import requests

# Customize the local path of the file to upload filepath = '/path/to/video.mp4'

# API key required in order to authenticate the upload apikey = '$API_KEY'

# Read file to upload files = {'file': open(filepath,'rb')}

# Upload file response = requests.post('https://api.wassenger.com/v1/files', files=files)

if response.status_code >= 400: print('Request failed with invalid status:', response.status_code) else: json = response.json() file_id = json[0]['id'] print('File uploaded successfully with ID:', file_id)

// Customize the local path of the file to upload
$filepath = '/path/to/video.mp4';
// API key required in order to authenticate the upload
$apikey = '$API_KEY';
// Upload file
$upload = curl_init();
curl_setopt_array($upload, array(
CURLOPT_URL => 'https://api.wassenger.com/v1/files', 
CURLOPT_HTTPHEADER => array(
"Token: $apikey"
), 
CURLOPT_POSTFIELDS => array(
'file' => new CURLFile($filepath)
), 
CURLOPT_POST => TRUE, 
CURLOPT_SSL_VERIFYPEER => FALSE, 
CURLOPT_SSL_VERIFYHOST => FALSE
);
$response = curl_exec($upload);
if(curl_errno($ch) {
echo("Request failed");
} else if(curl_getinfo($ch, CURLINFO_HTTP_CODE) >= 400) {
echo("Invalid request or unsupported file to upload");
} else {
$json = json_decode($response, true);
$file_id = $json[0]['id'];
echo("File uploaded successfully with ID: $file_id");
}
// Requires to install pecl_http package
// Run: pecl install pecl_http
// More information: https://pecl.php.net/package/pecl_http/3.2.0
$client = new http\Client;
$request = new http\Client\Request;
// Customize the local path of the file to upload
$filepath = '/path/to/video.mp4';
// API key required in order to authenticate the upload
$apikey = '$API_KEY';
// Prepare request
$body = new http\Message\Body;
$body->addForm(null, [
[
'name' => 'file', 
'type' => null, 
'file' => $filename, 
'data' => null
]
]);
$request->setRequestUrl('https://api.wassenger.com/v1/files');
$request->setRequestMethod('POST');
$request->setBody($body);
$request->setQuery(new http\QueryString([
'reference' => 'optional-reference-id'
]));
$request->setHeaders([
'Token' => $apikey
]);
$client->enqueue($request)->send();
$response = $client->getResponse();
if($response->getResponseCode() >= 400) {
echo("Invalid request or unsupported file to upload");
} else {
$body = json_decode($response->getBody()->toString());
$file_id = $json[0]['id'];
echo("File uploaded successfully with ID: $file_id");
}
package main
import(
"net/http"
"os"
"bytes"
"path"
"path/filepath"
"mime/multipart"
"io"
"encoding/json"
)
// API key required in order to authenticate the upload
const apiKey = "$API_KEY"
func main() {
# Customize the local path of the file to upload
fileName:= "path/to/video.mp4"
fileDir, _:= os.Getwd()
filePath:= path.Join(fileDir, fileName)
file, _:= os.Open(filePath)
defer file.Close()
body:= &bytes.Buffer{}
writer:= multipart.NewWriter(body)
part, _:= writer.CreateFormFile("file", filepath.Base(file.Name()))
io.Copy(part, file)
writer.Close()
r, _:= http.NewRequest("POST", "https://api.wassenger.com/v1/files", body)
r.Header.Add("Token", apiKey)
r.Header.Add("Content-Type", writer.FormDataContentType())
client:= &http.Client{Timeout: 90 * time.Second}
response, err:= client.Do(r)
if err != nil {
fmt.Printf("Request failed with an error: %s", err.Error())
return
}
if(response.StatusCode >= 400) {
fmt.Printf("Request failed with response status: %d", response.StatusCode)
return
}
body:= []struct{
Id string `json:"id"`
}{}
defer response.Body.Close()
err:= json.NewDecoder(response.Body).Decode(&body)
if err != nil {
fmt.Printf("Failed to decode JSON: %s", err.Error())
return
}
fileId:= body[0].Id
fmt.Printf("File uploaded successfully with ID:", fileId)
}
  • C# (RestClient)
RestClient restClient = new RestClient("https://api.wassenger.com");
RestRequest restRequest = new RestRequest("/v1/files");
restRequest.Method = Method.POST;
restRequest.AddHeader("Token", "$API_KEY");
restRequest.AddHeader("Content-Type", "multipart/form-data");
restRequest.AddFile("file", "/path/to/video.mp4");
var response = restClient.Execute(restRequest);
var json = JsonConvert.DeserializeObject(response.Content);
var fileId =(string)json[0]["id"];
Console.WriteLine("File uploaded successfully with ID: {0}", fileId);
require 'net/http/post/multipart'
url = URI.parse('https://api.wassenger.com/v1/files')
File.open("/path/to/video.mp4") do |image|
req = Net::HTTP::Post::Multipart.new url.path, "file" => UploadIO.new(image, "image/jpeg", "image.jpg")
req['Token'] = "API_KEY"
res = Net::HTTP.start(url.host, url.port) do |http|
http.request(req)
end
end
List<File> = Unirest.post("https://api.wassenger.com/v1/files")
.header("Token", "API_KEY")
.field("file", new File("/path/to/video.mp4"))
.getBody()

🤩 🤖 Wassenger é uma plataforma completa de comunicação e solução de API para WhatsApp. Explore mais de 100+ casos de uso de API e automatize qualquer coisa no WhatsApp inscrevendo-se para um teste gratuito e começando em minutos**!**

Teste ao vivo do upload do arquivo usando a API

Explore nosso testador de API ao vivo

Enviar mensagens de mídia para um grupo

Para isso, você só precisa saber o ID do chat do grupo alvo e o ID do arquivo enviado (hexadecimal de 24 caracteres) que você pode obter nos arquivos enviados listados aqui ou na lista de arquivos enviados via API.

Para enviar mensagens a um grupo, você deve ser participante dele com permissões para enviar mensagens. Se você for administrador do grupo, terá permissões completas para enviar mensagens.

Preparar a requisição

Target API URL (POST)

https://api.wassenger.com/v1/messages

Cabeçalhos HTTPS obrigatórios

Content-Type: application/json
Token: $API_KEY

Corpo da requisição em formato JSON

Enviando uma mensagem para um chat de grupo:

{
  "group": "120363163556480010@g.us",
  "message": "This is a media message example sent a group 😀",
  "media": {
    "file": "UPLOADED FILE ID GOES HERE"
  }
}

Envie o vídeo no idioma que melhor se adequar às suas necessidades

Explore como usar o código no seu navegador sem instalar nenhum software.

Além disso, você pode encontrar diferentes linguagens que pode testar em Replit.com:

# Exemplos requerem ter o pacote requests instalado. # Instale executando: pip install requests

import requests

url = "https://api.wassenger.com/v1/messages"

payload = { "group": "1234567890-100000000@g.us", "message": "This is a caption for a video message", "media": { "url": "https://download.samplelib.com/mp4/sample-5s.mp4", "viewOnce": False } } headers = { "Content-Type": "application/json", "Token": "ENTER API KEY HERE" }

response = requests.post(url, json=payload, headers=headers)

print(response.json())

<?php
$curl = curl_init();
curl_setopt_array($curl, [
  CURLOPT_URL => 'https://api.wassenger.com/v1/messages',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS => json_encode([
    'group' => '1234567890-100000000@g.us',
    'message' => 'This is a caption for a video message',
    'media' => [
      'url' => 'https://download.samplelib.com/mp4/sample-5s.mp4',
      'viewOnce' => null,
    ],
  ]),
  CURLOPT_HTTPHEADER => [
    'Content-Type: application/json',
    'Token: ENTER API KEY HERE',
  ],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
  echo 'cURL Error #:' . $err;
} else {
  echo $response;
}
// Examples requires to have installed pecl_http package, a simple and elegant HTTP client for PHP.
// Install it by running: pecl install pecl_http
// More information: https://pecl.php.net/package/pecl_http/3.2.0
<?php
$client = new http\Client();
$request = new http\Client\Request();
$body = new http\Message\Body();
$body->append(
  json_encode([
    'group' => '1234567890-100000000@g.us',
    'message' => 'This is a caption for a video message',
    'media' => [
      'url' => 'https://download.samplelib.com/mp4/sample-5s.mp4',
      'viewOnce' => null,
    ],
  ])
);
$request->setRequestUrl('https://api.wassenger.com/v1/messages');
$request->setRequestMethod('POST');
$request->setBody($body);
$request->setHeaders([
  'Content-Type' => 'application/json',
  'Token' => 'ENTER API KEY HERE',
]);
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();
package main
import(
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url:= "https://api.wassenger.com/v1/messages"
payload:= strings.NewReader("{\"group\":\"1234567890-100000000@g.us\", \"message\":\"This is a caption for a video message\", \"media\":{\"url\":\"https://download.samplelib.com/mp4/sample-5s.mp4\", \"viewOnce\":false}}")
req, _:= http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Token", "ENTER API KEY HERE")
res, _:= http.DefaultClient.Do(req)
defer res.Body.Close()
body, _:= io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
  • C# (RestClient)
// This code requires you to have installed RestSharp package.
// Documentation: https://restsharp.dev
// Installation: https://www.nuget.org/packages/RestSharp
var client = new RestClient("https://api.wassenger.com/v1/messages");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Token", "ENTER API KEY HERE");
request.AddParameter("application/json", "{\"group\":\"1234567890-100000000@g.us\", \"message\":\"This is a caption for a video message\", \"media\":{\"url\":\"https://download.samplelib.com/mp4/sample-5s.mp4\", \"viewOnce\":false}}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
require 'uri'
require 'net/http'
url = URI("https://api.wassenger.com/v1/messages")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request["Token"] = 'ENTER API KEY HERE'
request.body = "{\"group\":\"1234567890-100000000@g.us\", \"message\":\"This is a caption for a video message\", \"media\":{\"url\":\"https://download.samplelib.com/mp4/sample-5s.mp4\", \"viewOnce\":false}}"
response = http.request(request)
puts response.read_body
// This code requires you to have installed Unirest package.
// Documentation: https://kong.github.io/unirest-java/#requests
// Installation: http://kong.github.io/unirest-java/
HttpResponse<String> response = Unirest.post("https://api.wassenger.com/v1/messages")
.header("Content-Type", "application/json")
.header("Token", "ENTER API KEY HERE")
.body("{\"group\":\"1234567890-100000000@g.us\", \"message\":\"This is a caption for a video message\", \"media\":{\"url\":\"https://download.samplelib.com/mp4/sample-5s.mp4\", \"viewOnce\":false}}")
.asString();

Teste ao vivo para enviar uma mensagem de grupo usando a API

Explore nosso testador de API ao vivo

🤩 🤖 Wassenger é uma plataforma completa de comunicação e solução de API para WhatsApp. Explore mais de 100+ casos de uso de API e automatize qualquer coisa no WhatsApp inscrevendo-se para um teste gratuito e começando em minutos**!**

Perguntas Frequentes

Que tipos de arquivos de mídia podem ser enviados?

Você pode enviar imagens (JPEG, PNG, WEBP), vídeos (MP4, 3GPP), áudios (MP3, OGG, MP4, ACC), gifs (MP4) e documentos (PDF, PPT, PPTX, DOCX, DOC, ZIP, RAR, outros tipos binários).

Consulte a documentação da API para mais detalhes.

Como enviar mensagens para vários números de telefone

Você só precisa enviar múltiplas requisições de API, uma por número de telefone alvo.

Por exemplo, se quiser enviar uma mensagem para 10 números de telefone, você deve enviar 10 requisições HTTPS independentes para a API.

Não há opção para enviar múltiplas mensagens em uma única requisição de API.

Como validar se um número de telefone pode receber mensagens do WhatsApp

Você pode validar se um determinado número de telefone está vinculado a uma conta do WhatsApp e se pode receber mensagens.

A API fornece um endpoint que pode validar se um número de telefone existe no WhatsApp ou não.

O único requisito é ter pelo menos um número de WhatsApp conectado à plataforma na sua conta atual.

Para mais detalhes, consulte a documentação do endpoint da API aqui.

Antes de verificar se um número existe no WhatsApp, você também pode validar e normalizar o formato de uma lista de números de telefone usando o endpoint validador de números. Este endpoint apenas valida o formato correto E164, mas não verifica se o número de telefone efetivamente existe no WhatsApp.

Nota: O número de validações de verificação do WhatsApp é limitado por mês com base no seu plano de assinatura. Consulte a tabela de preços para mais detalhes sobre os limites.

Procurando mais respostas? Consulte as FAQs estendidas.

Recursos úteis adicionais

Documentação da API

Para mais detalhes sobre os endpoints da API, consulte a documentação onde você encontrará todos os detalhes sobre os parâmetros de requisição aceitos, possíveis respostas de sucesso ou erro e exemplos de código prontos para uso em várias linguagens de programação:

https://app.wassenger.com/docs/#tag/Files

Ready to transform your WhatsApp communication?

Start automating your customer interactions today with Wassenger

Get Started Free