Send a File Message
In this code snippet you learn how to send a WhatsApp file message using the Messages API. For WhatsApp the maximum outbound media size is 64MB.
IMPORTANT: If a customer has not messaged you first, then the first time you send a message to a user, WhatsApp requires that the message contains a template. This is explained in more detail in the Understanding WhatsApp topic.
Example
Ensure the following variables are set to your required values using any convenient method:
Key | Description |
---|---|
BASE_URL |
For production use the base URL is https://api.nexmo.com/ . For sandbox testing the base URL is https://messages-sandbox.nexmo.com/ . |
MESSAGES_API_URL |
For production use the Messages API endpoint is https://api.nexmo.com/v0.1/messages . For sandbox testing the Messages API endpoint is https://messages-sandbox.nexmo.com/v0.1/messages . |
WHATSAPP_NUMBER |
The WhatsApp number that has been allocated to you by Vonage. For sandbox testing the number is 14157386170. |
TO_NUMBER |
Replace with the number you are sending to. E.g. 447700900001
|
FILE_URL |
The URL of the file to send. |
FILE_CAPTION |
The text describing the file being sent. |
NOTE: Don't use a leading +
or 00
when entering a phone number, start with the country code, for example, 447700900000.
Prerequisites
Write the code
Add the following to send-file.sh
:
curl -X POST $MESSAGES_API_URL \
-H 'Authorization: Bearer '$JWT \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d $'{
"from": { "type": "whatsapp", "number": "'$WHATSAPP_NUMBER'" },
"to": { "type": "whatsapp", "number": "'$TO_NUMBER'" },
"message": {
"content": {
"type": "file",
"file": {
"url": "'$FILE_URL'",
"caption": "'$FILE_CAPTION'"
}
}
}
}'
Run your code
Save this file to your machine and run it:
bash send-file.sh
Prerequisites
npm install @vonage/server-sdk@beta
Write the code
Add the following to send-file.js
:
const Vonage = require('@vonage/server-sdk');
const vonage = new Vonage(
{
apiKey: VONAGE_API_KEY,
apiSecret: VONAGE_API_SECRET,
applicationId: VONAGE_APPLICATION_ID,
privateKey: VONAGE_APPLICATION_PRIVATE_KEY_PATH,
},
{
apiHost: BASE_URL,
}
);
vonage.channel.send(
{ type: 'whatsapp', number: TO_NUMBER },
{ type: 'whatsapp', number: WHATSAPP_NUMBER },
{
content: {
type: 'file',
file: {
url: FILE_URL,
caption: FILE_CAPTION,
},
},
},
(err, data) => {
if (err) {
console.error(err);
} else {
console.log(data.message_uuid);
}
}
);
Run your code
Save this file to your machine and run it:
node send-file.js
Try it out
When you run the code a WhatsApp file message is sent to the destination number.