/* Options: Date: 2025-05-04 22:25:20 SwiftVersion: 6.0 Version: 8.71 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://team.evovoice.io //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: QueueNodeWaitCallback.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/nodes/queue/wait-callback") public class QueueNodeWaitCallback : TwilioRequestBase, IReturn { public typealias Return = String public var waitMusic:[QueueWaitMusic]? public var queueName:String? public var accountId:String? public var sessionId:String? public var recordingReady:String? public var recordCall:Bool? public var recordedFile:String? public var recordedFileUrl:String? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case waitMusic case queueName case accountId case sessionId case recordingReady case recordCall case recordedFile case recordedFileUrl } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) waitMusic = try container.decodeIfPresent([QueueWaitMusic].self, forKey: .waitMusic) ?? [] queueName = try container.decodeIfPresent(String.self, forKey: .queueName) accountId = try container.decodeIfPresent(String.self, forKey: .accountId) sessionId = try container.decodeIfPresent(String.self, forKey: .sessionId) recordingReady = try container.decodeIfPresent(String.self, forKey: .recordingReady) recordCall = try container.decodeIfPresent(Bool.self, forKey: .recordCall) recordedFile = try container.decodeIfPresent(String.self, forKey: .recordedFile) recordedFileUrl = try container.decodeIfPresent(String.self, forKey: .recordedFileUrl) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if waitMusic != nil { try container.encode(waitMusic, forKey: .waitMusic) } if queueName != nil { try container.encode(queueName, forKey: .queueName) } if accountId != nil { try container.encode(accountId, forKey: .accountId) } if sessionId != nil { try container.encode(sessionId, forKey: .sessionId) } if recordingReady != nil { try container.encode(recordingReady, forKey: .recordingReady) } if recordCall != nil { try container.encode(recordCall, forKey: .recordCall) } if recordedFile != nil { try container.encode(recordedFile, forKey: .recordedFile) } if recordedFileUrl != nil { try container.encode(recordedFileUrl, forKey: .recordedFileUrl) } } } public class TwilioRequestBase : IPost, Codable { public var callSid:String? public var accountSid:String? public var from:String? public var to:String? public var callStatus:String? public var apiVersion:String? public var direction:String? public var forwardedFrom:String? public var callerName:String? public var parentCallSid:String? public var stirVerstat:String? public var called:String? public var calledZip:String? public var calledCity:String? public var calledState:String? public var calledCountry:String? public var caller:String? public var callerCity:String? public var callerState:String? public var callerZip:String? public var callerCountry:String? public var fromCity:String? public var fromState:String? public var fromZip:String? public var fromCountry:String? public var toCity:String? public var toState:String? public var toZip:String? public var toCountry:String? public var messageSid:String? public var smsId:String? public var messagingServiceSid:String? public var body:String? public var numMedia:Int? public var mediaContentType0:String? public var mediaUrl0:String? public var mediaContentType1:String? public var mediaUrl1:String? public var mediaContentType2:String? public var mediaUrl2:String? public var index:Int? public var instanceSid:String? public var eventType:String? public var channelSid:String? public var attributes:String? public var clientIdentity:String? public var mediaContentType:String? public var mediaSid:String? public var identity:String? public var digits:String? public var speechResult:String? public var confidence:Double? public var callDuration:Int? public var recordingUrl:String? public var recordingSid:String? public var recordingDuration:Int? public var recordingStatus:String? public var transcriptionSid:String? public var transcriptionText:String? public var transcriptionUrl:String? public var transcriptionStatus:String? public var dialCallStatus:String? public var dialCallSid:String? public var dialCallDuration:Double? public var dialBridged:Bool? public var queueResult:String? public var queueSid:String? public var queueTime:Int? public var conferenceSid:String? public var friendlyName:String? public var statusCallbackEvent:String? public var muted:Bool? public var hold:Bool? public var endConferenceOnExit:Bool? public var startConferenceOnEnter:Bool? public var eventName:String? public var assistantSid:String? public var dialogueSid:String? public var userIdentifier:String? public var currentInput:String? public var currentTask:String? public var dialoguePayloadUrl:String? public var memory:String? public var channel:String? public var faxSid:String? public var faxStatus:String? public var numPages:Int? public var mediaUrl:String? public var errorCode:String? public var errorMessage:String? required public init(){} } public class QueueWaitMusic : Codable { public var mode:QueueWaitMusicModes? public var audioFile:String? public var text:String? public var textVoice:SayVoices? public var numTimes:Int? required public init(){} } public enum QueueWaitMusicModes : String, Codable { case Audio case Text } public enum SayVoices : String, Codable { case Man case Woman case Polly_Mads_Danish_Male case Polly_Naja_Danish_Female case Polly_Lotte_Dutch_Female case Polly_Ruben_Dutch_Male case Polly_Nicole_Australian_Female case Polly_Russell_Australian_Male case Polly_Amy_British_Female case Polly_Brian_British_Male case Polly_Emma_British_Female case Polly_Raveena_Indian_Female case Polly_Ivy_US_Female case Polly_Joanna_US_Female case Polly_Joey_US_Male case Polly_Justin_US_Male case Polly_Kendra_US_Female case Polly_Kimberly_US_Female case Polly_Matthew_US_Male case Polly_Salli_US_Female case Polly_Geraint_Welsh_Male case Polly_Celine_French_Female case Polly_Mathieu_French_Male case Polly_Chantal_French_Canadian_Female case Polly_Hans_German_Male case Polly_Marlene_German_Female case Polly_Vicki_German_Female case Polly_Dora_Iceland_Female case Polly_Karl_Iceland_Male case Polly_Carla_Italian_Female case Polly_Giorgio_Italian_Male case Polly_Mizuki_Japanese_Female case Polly_Takumi_Japanese_Male case Polly_Liv_Norwegian_Female case Polly_Jacek_Polish_Male case Polly_Jan_Polish_Female case Polly_Ewa_Polish_Female case Polly_Maja_Polish_Female case Polly_Ricardo_Portuguese_Male case Polly_Vitoria_Portuguese_Female case Polly_Cristiano_Portuguese_Male case Polly_Inese_Portuguese_Female case Polly_Carmen_Romanian_Female case Polly_Maxim_Russian_Male case Polly_Tatyana_Russian_Female case Polly_Conchita_Spanish_Female case Polly_Enrique_Spanish_Male case Polly_Miguel_Latin_American_Male case Polly_Penelope_Latina_American_Female case Polly_Astrid_Swedish_Female case Polly_Filiz_Turkish_Male case Polly_Gwyneth_Welsh_Female }