Invia messaggi multimediali WhatsApp tramite API

23 aprile 2024

Benvenuto nel mondo ad alta energia della messaggistica multimediale alimentata da API! Ecco la tua occasione per rivoluzionare le chat WhatsApp inviando non solo testo, ma un'intera gamma di tipi di media. Immagina di arricchire i tuoi messaggi con GIF coinvolgenti, documenti importanti o persino video direttamente dal tuo computer!

Questo tutorial non è riservato solo ai guru della tecnologia. Che tu sia nuovo alla programmazione o che abbia già smanettato un po', scoprirai come poche righe di codice possano dare vita ai tuoi messaggi. Stiamo parlando di rendere le conversazioni più ricche e colorate, trasformando ogni messaggio che invii in un'esperienza.

Pronto ad aggiungere un po' di pepe alle tue chat e connetterti con il tuo pubblico in modo totalmente nuovo? Tuffiamoci in questa avventura multimediale e vediamo quanto è semplice far risaltare i tuoi messaggi!

🤩 🤖 Wassenger è una piattaforma di comunicazione completa e una soluzione API per WhatsApp. Esplora oltre 100+ casi d'uso API e automatizza qualsiasi cosa su WhatsApp registrandoti per una prova gratuita e iniziare in pochi minuti**!**

In questo tutorial imparerai come inviare messaggi multimediali a numeri di telefono e liste di chat di gruppo utilizzando l'API.

Un file multimediale può essere uno dei seguenti: immagini (JPEG, PNG, WEBP), video (MP4, 3GPP), audio (MP3, OGG, MP4, ACC), gif (MP4) e documenti (PDF, PPT, PPTX, DOCX, DOC, ZIP, RAR, altri tipi binari).

Se hai bisogno di inviare messaggi da codice, puoi usare qualsiasi linguaggio di programmazione che possa effettuare richieste HTTPS all'API. Di seguito troverai il tester API live con esempi di codice pronti all'uso in vari linguaggi di programmazione.

Requisiti

  • Avere un numero WhatsApp già collegato alla piattaforma e online.
  • Numero di telefono del destinatario con prefisso internazionale in formato E164. Esempio: +12345678900. Verifica il formato del numero di telefono qui.

Endpoint API

In questo tutorial useremo i seguenti endpoint API:

Novità! Ora puoi inviare messaggi multimediali in una singola richiesta API passando l'URL remoto dove il file è memorizzato. Clicca qui per testarlo

Caricare il file

Per inviare un file come messaggio multimediale, in questo caso un'immagine, dovresti prima caricare il file sulla piattaforma.

Puoi caricare il file utilizzando i seguenti metodi via API:

  • URL remoto usando JSON con un campo url con l'URL pubblicamente accessibile per scaricare il file (consigliato).
  • Form data (multipart/form-data) usando il campo file con il contenuto del file.
  • Dati binari grezzi caricando il contenuto del file come stream di dati con il giusto MIME type impostato nell'header Content-Type, es: image/jpeg, application/pdf.

In questo tutorial copriremo i primi due metodi di upload dei file.

Caricare il file permette al sistema di convalidare e memorizzare il file una sola volta, evitando il costo di upload e processamento ogni volta che un messaggio multimediale viene inviato, migliorando così la velocità di consegna del messaggio e semplificando l'integrazione con l'API.

Nota che il file caricato sarà memorizzato sulla piattaforma per 90 giorni di default, pertanto in molti casi dovrai caricare il file solo una volta e basta. In alternativa, puoi anche configurare per quanto tempo il file deve essere conservato sulla piattaforma definendo un tempo di scadenza personalizzato, per maggiori dettagli consulta la documentazione API. Di default, il tuo account ha una capacità di storage di 10GB per i file nel cloud.

Caricare il file usando un URL remoto

Puoi caricare qualsiasi file sulla piattaforma specificando semplicemente l'URL pubblico da cui scaricare il file.

Nel caso in cui l'URL non sia pubblicamente accessibile, restituisca uno stato HTTP non valido (>=400) o ritorni contenuto non binario, come HTML o testo, l'API restituirà un errore.

Target API URL (POST)

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

Header HTTPS richiesti

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

Corpo della richiesta in formato JSON

{
  "url": "https://picsum.photos/seed/picsum/600/400"
}

In alternativa, puoi anche specificare campi opzionali durante l'upload del file, come un tempo di scadenza personalizzato, un identificatore di riferimento o un nome file personalizzato.

{
  "url": "https://picsum.photos/seed/picsum/600/400",
  "expiration": "1d",
  "filename": "custom-filename.jpg",
  "reference": "Optional reference ID"
}

Ottieni l'ID del file dalla risposta API

Se il file viene correttamente caricato sulla piattaforma, l'API restituirà una risposta valida in formato JSON come questa:

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

Importante: Dalla risposta JSON dovresti ottenere il campo id con un valore, per esempio 06248ed01a7a65946c0701, che rappresenta l'ID univoco del file che useremo successivamente per inviare il file come messaggio multimediale in una richiesta API separata.

Caricare il file usando multipart form data

Puoi caricare qualsiasi file sulla piattaforma usando il tradizionale meccanismo multipart form data ampiamente usato dai browser per caricare diversi tipi di contenuti, inclusi i file, su un server remoto.

Qui puoi imparare di più su come funziona l'upload multipart form.

Target API URL (POST)

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

Header HTTPS richiesti

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

Corpo della richiesta

Diversamente dall'upload basato su JSON, in questo caso dobbiamo affidarci a un meccanismo più complesso basato sul client HTTP che stiamo usando che ci aiuterà a comporre i campi del form secondo la specifica multipart.

A seconda del linguaggio di programmazione o del software client HTTP che usi, il processo può variare. Per semplicità, evidenzieremo gli strumenti più popolari, come Postman, e i linguaggi di programmazione più comuni.

Il requisito principale è definire il campo file nel form data, altrimenti l'API restituirà un errore poiché questo campo è obbligatorio.

🤩 🤖 Wassenger è una piattaforma di comunicazione completa e una soluzione API per WhatsApp. Esplora oltre 100+ casi d'uso API e automatizza qualsiasi cosa su WhatsApp registrandoti per una prova gratuita e iniziare in pochi minuti**!**

Caricare il file dal tuo browser web

Puoi caricare manualmente i file facilmente sulla piattaforma dalla console web senza installare alcun software:

Per l'upload automatico dei file, consulta le opzioni alternative qui sotto.

Caricare file usando cURL

cURL è un client HTTP da riga di comando popolare e utile.

Puoi facilmente caricare file dalla riga di comando usando il seguente comando, dove path/to/image.jpg rappresenta il percorso del file che vuoi caricare dal tuo disco locale:

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

Caricare file usando Postman

Postman è uno strumento versatile e pratico per testare e fare debug di richieste HTTP.

Seguendo questo semplice tutorial, puoi caricare file usando Postman, sostituendo l'URL di destinazione con quello dell'API.

Esplora il tutorial Postman qui

Caricare file usando codice

Scopri come usare il codice nel tuo browser senza installare alcun software.

Inoltre, puoi trovare diversi linguaggi che puoi testare su Replit.com:

# Requires to install requests package:
# Run: pip install requests
import requests
# Customize the local path of the file to upload
filepath = '/path/to/image.jpg'
# 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/image.jpg';
// 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/image.jpg';
// 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/image.jpg"
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)
}
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/image.jpg");
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/image.jpg") 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/image.jpg"))
.getBody()

🤩 🤖 Wassenger è una piattaforma di comunicazione completa e una soluzione API per WhatsApp. Esplora oltre 100+ casi d'uso API e automatizza qualsiasi cosa su WhatsApp registrandoti per una prova gratuita e iniziare in pochi minuti**!**

Test in tempo reale dell'upload del file tramite API

Esplora il nostro tester API live

Inviare messaggi multimediali a un numero di telefono

Inviare un nuovo messaggio multimediale via API è facile, devi semplicemente conoscere il numero di telefono di destinazione in formato E164 e l'ID del file caricato (24 caratteri esadecimali) che puoi ottenere dalla lista dei file caricati qui o dalla lista dei file caricati via API.

Puoi inviare messaggi a qualsiasi numero di telefono nel mondo che abbia un account WhatsApp, non è necessario aggiungere il numero come contatto nella rubrica del tuo dispositivo mobile.

Preparare la richiesta

Target API URL (POST)

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

Header HTTPS richiesti

Content-Type: application/json
Token: $API_KEY

Corpo della richiesta in formato JSON

{
  "phone": "+12345678900",
  "message": "This is a media message example 😀",
  "media": {
    "file": "UPLOADED FILE ID GOES HERE"
  }
}

Ora puoi inviare il messaggio multimediale tramite API.

Inviare messaggi multimediali a un gruppo

Molto simile allo scenario precedente, puoi anche inviare messaggi multimediali alle chat di gruppo.

Per inviare messaggi a un gruppo devi essere partecipante con permessi di invio messaggi. Se sei l'amministratore del gruppo avrai pieni permessi per inviare messaggi.

Preparare la richiesta

Target API URL (POST)

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

Header HTTPS richiesti

Content-Type: application/json
Token: $API_KEY

Corpo della richiesta in formato JSON

Inviare un messaggio a una chat di gruppo:

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

Test dal vivo: inviare messaggi multimediali tramite API

Ora puoi eseguire, fare debug e testare l'API direttamente dal tuo browser, esplorare e provare più esempi API e ottenere con un clic snippet di codice pronti all'uso disponibili in oltre 15 linguaggi di programmazione 😎

Provalo ora

🤩 🤖 Wassenger è una piattaforma di comunicazione completa e una soluzione API per WhatsApp. Esplora oltre 100+ casi d'uso API e automatizza qualsiasi cosa su WhatsApp registrandoti per una prova gratuita e iniziare in pochi minuti**!**

FAQs

Quali tipi di file multimediali possono essere inviati?

Puoi inviare immagini (JPEG, PNG, WEBP), video (MP4, 3GPP), audio (MP3, OGG, MP4, ACC), gif (MP4) e documenti (PDF, PPT, PPTX, DOCX, DOC, ZIP, RAR, altri tipi binari).

Consulta la documentazione API per maggiori dettagli.

Come inviare messaggi a più numeri di telefono

Devi semplicemente inviare più richieste API, una per ciascun numero di telefono destinatario.

Ad esempio, se vuoi inviare un messaggio a 10 numeri di telefono, dovresti inviare 10 richieste HTTPS indipendenti all'API.

Non esiste un'opzione per inviare più messaggi in una singola richiesta API.

Come verificare se un numero di telefono può ricevere messaggi WhatsApp

Puoi verificare se un dato numero di telefono è collegato a un account WhatsApp e può ricevere messaggi.

L'API fornisce un endpoint che può convalidare se un dato numero di telefono esiste su WhatsApp o meno.

L'unico requisito è avere almeno un numero WhatsApp connesso alla piattaforma nel tuo account corrente.

Per maggiori dettagli, consulta la documentazione dell'endpoint API qui.

Prima di verificare se un numero di telefono esiste su WhatsApp, puoi anche convalidare e normalizzare il formato di una lista di numeri di telefono usando l'endpoint di validazione numeri. Questo endpoint valida solo il corretto formato E164, ma non verifica se il numero di telefono esiste effettivamente su WhatsApp.

Nota: il numero di verifiche WhatsApp è limitato al mese in base al tuo piano di abbonamento. Consulta la tabella dei prezzi per maggiori dettagli sui limiti.

Cerchi altre risposte? Consulta le FAQ estese.

Altre risorse utili

Documentazione API

Per maggiori dettagli sugli endpoint API, consulta la documentazione dove troverai tutti i dettagli sui parametri di richiesta accettati, possibili risposte di successo o errore ed esempi di codice pronti all'uso in più linguaggi di programmazione:

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

Ready to transform your WhatsApp communication?

Start automating your customer interactions today with Wassenger

Get Started Free