use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct SendInboxMessageRequest {
#[serde(rename = "accountId")]
pub account_id: String,
#[serde(rename = "message", skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(rename = "attachmentUrl", skip_serializing_if = "Option::is_none")]
pub attachment_url: Option<String>,
#[serde(rename = "attachmentType", skip_serializing_if = "Option::is_none")]
pub attachment_type: Option<AttachmentType>,
#[serde(rename = "quickReplies", skip_serializing_if = "Option::is_none")]
pub quick_replies: Option<Vec<models::SendInboxMessageRequestQuickRepliesInner>>,
#[serde(rename = "buttons", skip_serializing_if = "Option::is_none")]
pub buttons: Option<Vec<models::SendInboxMessageRequestButtonsInner>>,
#[serde(rename = "template", skip_serializing_if = "Option::is_none")]
pub template: Option<Box<models::SendInboxMessageRequestTemplate>>,
#[serde(rename = "replyMarkup", skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<Box<models::SendInboxMessageRequestReplyMarkup>>,
#[serde(rename = "messagingType", skip_serializing_if = "Option::is_none")]
pub messaging_type: Option<MessagingType>,
#[serde(rename = "messageTag", skip_serializing_if = "Option::is_none")]
pub message_tag: Option<MessageTag>,
#[serde(rename = "replyTo", skip_serializing_if = "Option::is_none")]
pub reply_to: Option<String>,
}
impl SendInboxMessageRequest {
pub fn new(account_id: String) -> SendInboxMessageRequest {
SendInboxMessageRequest {
account_id,
message: None,
attachment_url: None,
attachment_type: None,
quick_replies: None,
buttons: None,
template: None,
reply_markup: None,
messaging_type: None,
message_tag: None,
reply_to: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum AttachmentType {
#[serde(rename = "image")]
Image,
#[serde(rename = "video")]
Video,
#[serde(rename = "audio")]
Audio,
#[serde(rename = "file")]
File,
}
impl Default for AttachmentType {
fn default() -> AttachmentType {
Self::Image
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum MessagingType {
#[serde(rename = "RESPONSE")]
Response,
#[serde(rename = "UPDATE")]
Update,
#[serde(rename = "MESSAGE_TAG")]
MessageTag,
}
impl Default for MessagingType {
fn default() -> MessagingType {
Self::Response
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum MessageTag {
#[serde(rename = "CONFIRMED_EVENT_UPDATE")]
ConfirmedEventUpdate,
#[serde(rename = "POST_PURCHASE_UPDATE")]
PostPurchaseUpdate,
#[serde(rename = "ACCOUNT_UPDATE")]
AccountUpdate,
#[serde(rename = "HUMAN_AGENT")]
HumanAgent,
}
impl Default for MessageTag {
fn default() -> MessageTag {
Self::ConfirmedEventUpdate
}
}