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 Ruby 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.rb
and paste into it this code.
require "plivo"
include Plivo
api = RestClient.new("<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 = api.messages.create(
src: "+14151112221",
dst:"+14151112222",
type:"whatsapp",
template:template,
url: "https://<yourdomain>.com/sms status/")
puts response #Prints only the message_uuid puts response.message_uuid"
#Prints only the message_uuid
puts response.message_uuid
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.