Send an Image Message
In this code snippet you learn how to send a WhatsApp image 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
Find the description for all variables used in each code snippet below:
Key | Description |
---|---|
VONAGE_APPLICATION_ID |
The Vonage Application ID. |
VONAGE_APPLICATION_PRIVATE_KEY_PATH |
Private key path. |
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 |
There are two versions of the API, each with their own endpoints. For production the previous Messages API endpoint was https://api.nexmo.com/v0.1/messages , the new one is https://api.nexmo.com/v1/messages . For sandbox testing the Messages API endpoint is https://messages-sandbox.nexmo.com/v0.1/messages or https://messages-sandbox.nexmo.com/v1/messages , depending on which version you have set in the sandbox dashboard. |
WHATSAPP_NUMBER |
The WhatsApp number that has been allocated to you by Vonage. For sandbox testing the number is 14157386102. |
VONAGE_WHATSAPP_NUMBER |
Refer to WHATSAPP_NUMBER above. |
TO_NUMBER |
Replace with the number you are sending to. E.g. 447700900001
|
IMAGE_URL |
The link to the image file to send. |
IMAGE_CAPTION |
The text describing the image 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-image.sh
:
curl -X POST $MESSAGES_API_URL \
-H 'Authorization: Bearer '$JWT \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d $'{
"message_type": "image",
"image": {
"url": "$IMAGE_URL",
"caption": "$IMAGE_CAPTION"
},
"to": "$TO_NUMBER",
"from": "$WHATSAPP_NUMBER",
"channel": "whatsapp"
}'
Run your code
Save this file to your machine and run it:
bash send-image.sh
Prerequisites
npm install @vonage/server-sdk
Create a file named send-image.js
and add the following code:
const Vonage = require('@vonage/server-sdk');
const WhatsAppImage = require('@vonage/server-sdk/lib/Messages/WhatsAppImage');
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,
}
);
Write the code
Add the following to send-image.js
:
vonage.messages.send(
new WhatsAppImage({ url: IMAGE_URL }, TO_NUMBER, WHATSAPP_NUMBER),
(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-image.js
Prerequisites
gem install vonage
Write the code
Add the following to send-image.rb
:
client = Vonage::Client.new(
application_id: VONAGE_APPLICATION_ID,
private_key: File.read(VONAGE_APPLICATION_PRIVATE_KEY_PATH)
)
message = Vonage::Messaging::Message.whatsapp(
type: 'image',
message: {
url: "https://example.com/image.jpg",
caption: "This is a WhatsApp Message image message, with optional caption, sent using the Messages API"
}
)
client.messaging.send(
from: VONAGE_WHATSAPP_NUMBER,
to: TO_NUMBER,
**message
)
Run your code
Save this file to your machine and run it:
ruby send-image.rb
Try it out
When you run the code a WhatsApp image message is sent to the destination number.