Evo Voice

<back to all web services

QueueNodeWaitCallback

The following routes are available for this service:
All Verbs/nodes/queue/wait-callback
import Foundation
import ServiceStack

public class QueueNodeWaitCallback : TwilioRequestBase
{
    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.count > 0 { 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
}


Swift QueueNodeWaitCallback DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /nodes/queue/wait-callback HTTP/1.1 
Host: evovoice.io 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	waitMusic: 
	[
		{
			mode: Audio,
			audioFile: String,
			text: String,
			textVoice: Man,
			numTimes: 0
		}
	],
	queueName: String,
	accountId: String,
	sessionId: String,
	recordingReady: String,
	recordCall: False,
	recordedFile: String,
	recordedFileUrl: String,
	callSid: String,
	accountSid: String,
	from: String,
	to: String,
	callStatus: String,
	apiVersion: String,
	direction: String,
	forwardedFrom: String,
	callerName: String,
	parentCallSid: String,
	stirVerstat: String,
	called: String,
	calledZip: String,
	calledCity: String,
	calledState: String,
	calledCountry: String,
	caller: String,
	callerCity: String,
	callerState: String,
	callerZip: String,
	callerCountry: String,
	fromCity: String,
	fromState: String,
	fromZip: String,
	fromCountry: String,
	toCity: String,
	toState: String,
	toZip: String,
	toCountry: String,
	messageSid: String,
	smsId: String,
	messagingServiceSid: String,
	body: String,
	numMedia: 0,
	mediaContentType0: String,
	mediaUrl0: String,
	mediaContentType1: String,
	mediaUrl1: String,
	mediaContentType2: String,
	mediaUrl2: String,
	index: 0,
	instanceSid: String,
	eventType: String,
	channelSid: String,
	attributes: String,
	clientIdentity: String,
	mediaContentType: String,
	mediaSid: String,
	identity: String,
	digits: String,
	speechResult: String,
	confidence: 0,
	callDuration: 0,
	recordingUrl: String,
	recordingSid: String,
	recordingDuration: 0,
	recordingStatus: String,
	transcriptionSid: String,
	transcriptionText: String,
	transcriptionUrl: String,
	transcriptionStatus: String,
	dialCallStatus: String,
	dialCallSid: String,
	dialCallDuration: 0,
	dialBridged: False,
	queueResult: String,
	queueSid: String,
	queueTime: 0,
	conferenceSid: String,
	friendlyName: String,
	statusCallbackEvent: String,
	muted: False,
	hold: False,
	endConferenceOnExit: False,
	startConferenceOnEnter: False,
	eventName: String,
	assistantSid: String,
	dialogueSid: String,
	userIdentifier: String,
	currentInput: String,
	currentTask: String,
	dialoguePayloadUrl: String,
	memory: String,
	channel: String,
	faxSid: String,
	faxStatus: String,
	numPages: 0,
	mediaUrl: String,
	errorCode: String,
	errorMessage: String
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

(string)