This guide shows how to send a templated WhatsApp message to any destination WhatsApp numbers. Templated messages are a crucial to your WhatsApp messaging experience, as businesses can only initiate WhatsApp conversation with their customers 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 message messages using our APIs. Follow the instructions below.
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 Go 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 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 SendWhatsApp.go
and paste into it this code.
package main
import (
"fmt"
"github.com/plivo/plivo-go/v7"
)
func main() {
client, err := plivo.NewClient("<auth_id>", "<auth_token>", &plivo.ClientOptions{})
if err != nil {
fmt.Print("Error", err.Error())
return
}
template, err := plivo.CreateWhatsappTemplate(`{
"name": "sample_purchase_feedback",
"language": "en_US",
"components": [
{
"type": "header",
"parameters": [
{
"type": "media",
"media": "https://plivo.com/i1.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"
}
]
}
]
}`)
if err != nil {
fmt.Print("Error", err.Error())
return
}
response, err := client.Messages.Create(
plivo.MessageCreateParams{
Src:"+14151112221",
Dst:"+14151112222",
Type:"whatsapp",
Template:&template,
URL: "https://foo.com/sms_status/"
},
)
if err != nil {
fmt.Print("Error", err.Error())
return
}
fmt.Printf("Response: %#v\n", response)
// Prints only the message_uuid
fmt.Printf("Response: %#v\n", response.MessageUUID)
}
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.