This guide shows how to send a templated WhatsApp message to any destination WhatsApp number. Templated messages are crucial to your WhatsApp messaging experience, as businesses can only initiate WhatsApp conversations using templated messages.
WhatsApp templates support 4 components: header , body, footer and button. At the point of sending messages, the template object you see in the code acts as a way to pass the dynamic values within these components. header can accomodate text or media (images, video, documents) content. body can accomodate text content. button can support dynamic values in a url button or to specify a developer-defined payload which will be returned when the WhatsApp user clicks on the quick_reply button. footer cannot have any dynamic variables.
You can start sending templated WhatsApp messages using our APIs. Follow these instructions.
To get started, you need a Plivo account — sign up with your work email address if you don’t have one already. If this is your first time using Plivo APIs, follow our instructions to set up a Java development environment.
Once you have a Plivo account, follow our WhatsApp guide to onboard your WhatsApp account, register a number against your WABA, and have a template in an approved state.
If you phone number is in connected state and template is in approved state, you can send your first message.
Create a file called WhatsappMessageCreate.java
and paste into it this code.
import java.io.IOException;
import java.net.URL;
import java.util.Collections;
import com.plivo.api.Plivo;
import com.plivo.api.exceptions.PlivoRestException;
import com.plivo.api.models.message.Message;
import com.plivo.api.models.message.MessageCreateResponse;
import com.plivo.api.models.message.MessageType;
import com.fasterxml.jackson.databind.ObjectMapper;
class MessageCreate
{
public static void main(String [] args)
{
Plivo.init('<auth_id>','<auth_token>');
try
{
String templateJson = "{
"\name\": "\sample_purchase_feedback\",
"\language\": "\en_US\",
"\components\": [
{
"\type\": "\header\",
"\parameters\": [
{
"\type\": "\media\",
"\text\": "\https://plivo.com/s3/img1.jpg\"
}
]
},
{
"\type\": "\body\",
"\parameters\": [
{
"\type\": "\text\",
"\text\": "\John Doe\"
}
]
},
{
"\type\": "\button\",
"\sub_type\": "\quick_reply\",
"\index\": "\0\",
"\parameters\": [
{
"\type\": "\payload\",
"\payload\": "\Payload sent in inbound webhook response\"
}
]
},
{
"\type\": "\button\",
"\sub_type\": "\url\",
"\index\": "\1\",
"\parameters\": [
{
"\type\": "\text\",
"\text\": "\replacement text which will append to url\"
}
]
}
]
}";
MessageCreateResponse response = Message.creator("+14151112221","14151112222")
.template_json_string(templateJson)
.type(MessageType.WHATSAPP)
.url(new URL("https://<yourdomain>.com/sms_status/") )
.create();
ObjectMapper ow = new ObjectMapper();
String output = ow.writeValueAsString(response);
System.out.println(output);
}
catch (PlivoRestException | IOException e)
{
e.printStackTrace();
}
}
}
Replace the auth placeholders with your authentication credentials from the Plivo console. Replace the phone number placeholders with actual phone numbers in E.164 format (for example, +12025551234). src would be your phone number registered against your WhatsApp business account. dst would be the destination WhatsApp number that would receive the message.
Save the file and run it.