pub struct Messages<'a> { /* private fields */ }Expand description
Messages resource for sending and managing SMS.
Implementations§
Source§impl<'a> Messages<'a>
impl<'a> Messages<'a>
Sourcepub async fn send(&self, request: SendMessageRequest) -> Result<Message>
pub async fn send(&self, request: SendMessageRequest) -> Result<Message>
Sends an SMS message.
§Arguments
request- The send message request
§Example
use sendly::{Sendly, SendMessageRequest};
let client = Sendly::new("sk_live_v1_xxx");
let message = client.messages().send(SendMessageRequest {
to: "+15551234567".to_string(),
text: "Hello from Sendly!".to_string(),
message_type: None,
}).await?;
println!("Sent: {}", message.id);Sourcepub async fn send_to(
&self,
to: impl Into<String>,
text: impl Into<String>,
) -> Result<Message>
pub async fn send_to( &self, to: impl Into<String>, text: impl Into<String>, ) -> Result<Message>
Sourcepub async fn list(
&self,
options: Option<ListMessagesOptions>,
) -> Result<MessageList>
pub async fn list( &self, options: Option<ListMessagesOptions>, ) -> Result<MessageList>
Lists messages.
§Arguments
options- Optional query options
§Example
use sendly::{Sendly, ListMessagesOptions, MessageStatus};
let client = Sendly::new("sk_live_v1_xxx");
// List all
let messages = client.messages().list(None).await?;
// With options
let messages = client.messages().list(Some(
ListMessagesOptions::new()
.limit(50)
.status(MessageStatus::Delivered)
)).await?;Sourcepub fn iter(
&self,
options: Option<ListMessagesOptions>,
) -> impl Stream<Item = Result<Message>> + '_
pub fn iter( &self, options: Option<ListMessagesOptions>, ) -> impl Stream<Item = Result<Message>> + '_
Iterates over all messages with automatic pagination.
§Arguments
options- Optional query options
§Example
use sendly::Sendly;
use futures::StreamExt;
use tokio::pin;
let client = Sendly::new("sk_live_v1_xxx");
let messages = client.messages();
let stream = messages.iter(None);
pin!(stream);
while let Some(result) = stream.next().await {
let message = result?;
println!("{}: {}", message.id, message.to);
}Source§impl<'a> Messages<'a>
impl<'a> Messages<'a>
Sourcepub async fn schedule(
&self,
request: ScheduleMessageRequest,
) -> Result<ScheduledMessage>
pub async fn schedule( &self, request: ScheduleMessageRequest, ) -> Result<ScheduledMessage>
Schedules an SMS message for future delivery.
§Arguments
request- The schedule message request
§Example
use sendly::{Sendly, ScheduleMessageRequest};
let client = Sendly::new("sk_live_v1_xxx");
let scheduled = client.messages().schedule(ScheduleMessageRequest {
to: "+15551234567".to_string(),
text: "Reminder: Your appointment is tomorrow!".to_string(),
scheduled_at: "2025-01-20T10:00:00Z".to_string(),
from: None,
message_type: None,
}).await?;
println!("Scheduled: {}", scheduled.id);Sourcepub async fn list_scheduled(
&self,
options: Option<ListScheduledMessagesOptions>,
) -> Result<ScheduledMessageList>
pub async fn list_scheduled( &self, options: Option<ListScheduledMessagesOptions>, ) -> Result<ScheduledMessageList>
Lists scheduled messages.
§Arguments
options- Optional query options
§Example
use sendly::{Sendly, ListScheduledMessagesOptions};
let client = Sendly::new("sk_live_v1_xxx");
let scheduled = client.messages().list_scheduled(None).await?;
for msg in scheduled {
println!("{}: {}", msg.id, msg.scheduled_at);
}Sourcepub async fn get_scheduled(&self, id: &str) -> Result<ScheduledMessage>
pub async fn get_scheduled(&self, id: &str) -> Result<ScheduledMessage>
Sourcepub async fn cancel_scheduled(
&self,
id: &str,
) -> Result<CancelScheduledMessageResponse>
pub async fn cancel_scheduled( &self, id: &str, ) -> Result<CancelScheduledMessageResponse>
Sourcepub async fn send_batch(
&self,
request: SendBatchRequest,
) -> Result<BatchMessageResponse>
pub async fn send_batch( &self, request: SendBatchRequest, ) -> Result<BatchMessageResponse>
Sends multiple SMS messages in a batch.
§Arguments
request- The batch send request
§Example
use sendly::{Sendly, SendBatchRequest, BatchMessageItem};
let client = Sendly::new("sk_live_v1_xxx");
let result = client.messages().send_batch(SendBatchRequest {
messages: vec![
BatchMessageItem {
to: "+15551234567".to_string(),
text: "Hello Alice!".to_string(),
},
BatchMessageItem {
to: "+15559876543".to_string(),
text: "Hello Bob!".to_string(),
},
],
from: None,
message_type: None,
}).await?;
println!("Batch {}: {} queued", result.batch_id, result.queued);Sourcepub async fn get_batch(&self, batch_id: &str) -> Result<BatchMessageResponse>
pub async fn get_batch(&self, batch_id: &str) -> Result<BatchMessageResponse>
Sourcepub async fn list_batches(
&self,
options: Option<ListBatchesOptions>,
) -> Result<BatchList>
pub async fn list_batches( &self, options: Option<ListBatchesOptions>, ) -> Result<BatchList>
Sourcepub async fn preview_batch(
&self,
request: SendBatchRequest,
) -> Result<BatchPreviewResponse>
pub async fn preview_batch( &self, request: SendBatchRequest, ) -> Result<BatchPreviewResponse>
Previews a batch without sending (dry run).
§Arguments
request- The batch send request
§Example
use sendly::{Sendly, SendBatchRequest, BatchMessageItem};
let client = Sendly::new("sk_live_v1_xxx");
let preview = client.messages().preview_batch(SendBatchRequest {
messages: vec![
BatchMessageItem {
to: "+15551234567".to_string(),
text: "Hello Alice!".to_string(),
},
BatchMessageItem {
to: "+15559876543".to_string(),
text: "Hello Bob!".to_string(),
},
],
from: None,
message_type: None,
}).await?;
println!("Can send: {}", preview.can_send);
println!("Credits needed: {}", preview.credits_needed);Trait Implementations§
Auto Trait Implementations§
impl<'a> Freeze for Messages<'a>
impl<'a> !RefUnwindSafe for Messages<'a>
impl<'a> Send for Messages<'a>
impl<'a> Sync for Messages<'a>
impl<'a> Unpin for Messages<'a>
impl<'a> !UnwindSafe for Messages<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more