mirror of
https://github.com/makayabou/asg-server.git
synced 2026-05-02 17:43:36 +02:00
39 lines
2.9 KiB
Go
39 lines
2.9 KiB
Go
package smsgateway
|
||
|
||
type ProcessState string
|
||
|
||
const (
|
||
MessageStatePending ProcessState = "Pending" // В ожидании
|
||
MessageStateProcessed ProcessState = "Processed" // Обработано
|
||
MessageStateSent ProcessState = "Sent" // Отправлено
|
||
MessageStateDelivered ProcessState = "Delivered" // Доставлено
|
||
MessageStateFailed ProcessState = "Failed" // Ошибка
|
||
)
|
||
|
||
// Сообщение
|
||
type Message struct {
|
||
ID string `json:"id,omitempty" validate:"omitempty,max=36" example:"PyDmBQZZXYmyxMwED8Fzy"` // Идентификатор
|
||
Message string `json:"message" validate:"required,max=65535" example:"Hello World!"` // Текст сообщения
|
||
TTL *uint64 `json:"ttl,omitempty" validate:"omitempty,min=5" example:"86400"` // Время жизни сообщения в секундах
|
||
SimNumber *uint8 `json:"simNumber,omitempty" validate:"omitempty,max=3" example:"1"` // Номер сим-карты
|
||
WithDeliveryReport *bool `json:"withDeliveryReport,omitempty" example:"true"` // Запрашивать отчет о доставке
|
||
IsEncrypted bool `json:"isEncrypted,omitempty" example:"true"` // Зашифровано
|
||
PhoneNumbers []string `json:"phoneNumbers" validate:"required,min=1,max=100,dive,required,min=10,max=128" example:"79990001234"` // Получатели
|
||
}
|
||
|
||
// Состояние сообщения
|
||
type MessageState struct {
|
||
ID string `json:"id,omitempty" validate:"omitempty,max=36" example:"PyDmBQZZXYmyxMwED8Fzy"` // Идентификатор
|
||
State ProcessState `json:"state" validate:"required" example:"Pending"` // Состояние
|
||
IsHashed bool `json:"isHashed" example:"false"` // Хэшировано
|
||
IsEncrypted bool `json:"isEncrypted" example:"false"` // Зашифровано
|
||
Recipients []RecipientState `json:"recipients" validate:"required,min=1,dive"` // Детализация состояния по получателям
|
||
}
|
||
|
||
// Детализация состояния
|
||
type RecipientState struct {
|
||
PhoneNumber string `json:"phoneNumber" validate:"required,min=10,max=128" example:"79990001234"` // Номер телефона или первые 16 символов SHA256
|
||
State ProcessState `json:"state" validate:"required" example:"Pending"` // Состояние
|
||
Error *string `json:"error,omitempty" example:"timeout"` // Ошибка
|
||
}
|