Send a Message
Copy
Ask AI
result, err := client.Messages.Send(context.TODO(), zavudev.MessageSendParams{
To: zavudev.String("+14155551234"),
Text: zavudev.String("Your verification code is 123456"),
Channel: zavudev.String("sms"), // optional: sms, whatsapp, email
Metadata: map[string]string{
"userId": "user_123",
},
IdempotencyKey: zavudev.String("unique-key"), // optional: prevent duplicates
})
if err != nil {
panic(err)
}
fmt.Println(result.Message.ID) // msg_xxx
fmt.Println(result.Message.Status) // queued
Send with Sender
Specify which sender profile to use:Copy
Ask AI
result, err := client.Messages.Send(context.TODO(), zavudev.MessageSendParams{
To: zavudev.String("+14155551234"),
Text: zavudev.String("Hello!"),
ZavuSender: zavudev.String("snd_abc123"),
})
Send with Template
Send a WhatsApp template message:Copy
Ask AI
result, err := client.Messages.Send(context.TODO(), zavudev.MessageSendParams{
To: zavudev.String("+14155551234"),
MessageType: zavudev.String("template"),
Content: &zavudev.MessageContent{
TemplateID: zavudev.String("tpl_abc123"),
TemplateVariables: map[string]string{
"1": "John",
"2": "12345",
},
},
})
Send WhatsApp Media
Image
Copy
Ask AI
result, err := client.Messages.Send(context.TODO(), zavudev.MessageSendParams{
To: zavudev.String("+14155551234"),
MessageType: zavudev.String("image"),
Text: zavudev.String("Check out this product!"),
Content: &zavudev.MessageContent{
MediaURL: zavudev.String("https://example.com/image.jpg"),
},
})
Document
Copy
Ask AI
result, err := client.Messages.Send(context.TODO(), zavudev.MessageSendParams{
To: zavudev.String("+14155551234"),
MessageType: zavudev.String("document"),
Content: &zavudev.MessageContent{
MediaURL: zavudev.String("https://example.com/invoice.pdf"),
Filename: zavudev.String("invoice.pdf"),
},
})
Video
Copy
Ask AI
result, err := client.Messages.Send(context.TODO(), zavudev.MessageSendParams{
To: zavudev.String("+14155551234"),
MessageType: zavudev.String("video"),
Text: zavudev.String("Watch this!"),
Content: &zavudev.MessageContent{
MediaURL: zavudev.String("https://example.com/video.mp4"),
},
})
Send Interactive Messages
Buttons
Copy
Ask AI
result, err := client.Messages.Send(context.TODO(), zavudev.MessageSendParams{
To: zavudev.String("+14155551234"),
MessageType: zavudev.String("buttons"),
Text: zavudev.String("How would you rate your experience?"),
Content: &zavudev.MessageContent{
Buttons: []zavudev.InteractiveButton{
{ID: "great", Title: "Great!"},
{ID: "okay", Title: "It was okay"},
{ID: "poor", Title: "Not good"},
},
},
})
List
Copy
Ask AI
result, err := client.Messages.Send(context.TODO(), zavudev.MessageSendParams{
To: zavudev.String("+14155551234"),
MessageType: zavudev.String("list"),
Text: zavudev.String("Select an option:"),
Content: &zavudev.MessageContent{
ListButton: zavudev.String("View Options"),
Sections: []zavudev.ListSection{
{
Title: "Products",
Rows: []zavudev.ListRow{
{ID: "prod_1", Title: "Product A", Description: zavudev.String("$10.00")},
{ID: "prod_2", Title: "Product B", Description: zavudev.String("$20.00")},
},
},
},
},
})
Send Email
Copy
Ask AI
result, err := client.Messages.Send(context.TODO(), zavudev.MessageSendParams{
To: zavudev.String("user@example.com"),
Channel: zavudev.String("email"),
Subject: zavudev.String("Your order has shipped"),
Text: zavudev.String("Hi John, your order #12345 has shipped."),
HTMLBody: zavudev.String("<h1>Order Shipped</h1><p>Your order #12345 has shipped.</p>"),
ReplyTo: zavudev.String("support@example.com"),
})
Get Message Status
Copy
Ask AI
result, err := client.Messages.Get(context.TODO(), "msg_abc123")
if err != nil {
panic(err)
}
fmt.Println(result.Message.Status) // queued, sending, sent, delivered, failed
List Messages
Copy
Ask AI
// List all messages
result, err := client.Messages.List(context.TODO(), zavudev.MessageListParams{})
// With filters
result, err := client.Messages.List(context.TODO(), zavudev.MessageListParams{
Status: zavudev.String("delivered"),
Channel: zavudev.String("sms"),
Limit: zavudev.Int(100),
})
// Pagination
var cursor *string
for {
result, err := client.Messages.List(context.TODO(), zavudev.MessageListParams{
Cursor: cursor,
Limit: zavudev.Int(50),
})
if err != nil {
panic(err)
}
for _, message := range result.Items {
fmt.Println(message.ID)
}
if result.NextCursor == nil {
break
}
cursor = result.NextCursor
}
Send Reaction
React to a WhatsApp message:Copy
Ask AI
result, err := client.Messages.React(context.TODO(), "msg_abc123", zavudev.ReactionParams{
Emoji: zavudev.String("\U0001F44D"),
})
