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 PHP 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 send_whatsapp.php
and paste into it this code.
<?php
require 'vendor/autoload.php';
use Plivo\RestClient;
$client = new RestClient("<auth_id>","<auth_token>");
$template = '{
"name": "sample_purchase_feedback",
"language": "en_US",
"components": [
{
"type": "header",
"parameters": [
{
"type": "media",
"media": "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"
}
]
},
]
}';
$response = $client->messages->create(
[
"src" => "+14151112221",
"dst" => "+14151112222",
"type"=>"whatsapp",
"template" =>$template,
"url"=>"https://foo.com/sms_status/"
]
);
print_r($response);
// Prints only the message_uuid
print_r($response->getmessageUuid(0));
?>
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.