Evo Voice

<back to all web services

GetCallCenterDashboard

Returns the call center dashboard data

Requires Authentication
Requires any of the roles:SystemAdministrator, Manager
The following routes are available for this service:
GET/dashboard/call-center
import 'package:servicestack/servicestack.dart';

class CallCenterDashboardAgent implements IConvertible
{
    String? id;
    String? name;
    List<String>? queues;
    String? agentState;
    String? callState;
    String? signInTime;
    String? signInDuration;
    String? percentAvailable;
    String? avgBusyIn;
    String? avgWrapUp;
    String? dateOfLastCall;

    CallCenterDashboardAgent({this.id,this.name,this.queues,this.agentState,this.callState,this.signInTime,this.signInDuration,this.percentAvailable,this.avgBusyIn,this.avgWrapUp,this.dateOfLastCall});
    CallCenterDashboardAgent.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        id = json['id'];
        name = json['name'];
        queues = JsonConverters.fromJson(json['queues'],'List<String>',context!);
        agentState = json['agentState'];
        callState = json['callState'];
        signInTime = json['signInTime'];
        signInDuration = json['signInDuration'];
        percentAvailable = json['percentAvailable'];
        avgBusyIn = json['avgBusyIn'];
        avgWrapUp = json['avgWrapUp'];
        dateOfLastCall = json['dateOfLastCall'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'id': id,
        'name': name,
        'queues': JsonConverters.toJson(queues,'List<String>',context!),
        'agentState': agentState,
        'callState': callState,
        'signInTime': signInTime,
        'signInDuration': signInDuration,
        'percentAvailable': percentAvailable,
        'avgBusyIn': avgBusyIn,
        'avgWrapUp': avgWrapUp,
        'dateOfLastCall': dateOfLastCall
    };

    getTypeName() => "CallCenterDashboardAgent";
    TypeContext? context = _ctx;
}

class CallCenterDashboardQueue implements IConvertible
{
    String? name;
    int? numAgents;
    int? numCallsQueued;
    String? longestWaitingCall;
    String? expectedWaitTime;
    String? expectedHoldTime;
    String? averageSpeedOfAnswer;
    int? idleAgents;
    int? unavailableAgents;

    CallCenterDashboardQueue({this.name,this.numAgents,this.numCallsQueued,this.longestWaitingCall,this.expectedWaitTime,this.expectedHoldTime,this.averageSpeedOfAnswer,this.idleAgents,this.unavailableAgents});
    CallCenterDashboardQueue.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        name = json['name'];
        numAgents = json['numAgents'];
        numCallsQueued = json['numCallsQueued'];
        longestWaitingCall = json['longestWaitingCall'];
        expectedWaitTime = json['expectedWaitTime'];
        expectedHoldTime = json['expectedHoldTime'];
        averageSpeedOfAnswer = json['averageSpeedOfAnswer'];
        idleAgents = json['idleAgents'];
        unavailableAgents = json['unavailableAgents'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'name': name,
        'numAgents': numAgents,
        'numCallsQueued': numCallsQueued,
        'longestWaitingCall': longestWaitingCall,
        'expectedWaitTime': expectedWaitTime,
        'expectedHoldTime': expectedHoldTime,
        'averageSpeedOfAnswer': averageSpeedOfAnswer,
        'idleAgents': idleAgents,
        'unavailableAgents': unavailableAgents
    };

    getTypeName() => "CallCenterDashboardQueue";
    TypeContext? context = _ctx;
}

class CallCenterDashboardCall implements IConvertible
{
    String? id;
    String? customer;
    String? queue;
    String? agent;
    String? state;
    String? duration;
    String? hold;
    String? extraInfo;

    CallCenterDashboardCall({this.id,this.customer,this.queue,this.agent,this.state,this.duration,this.hold,this.extraInfo});
    CallCenterDashboardCall.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        id = json['id'];
        customer = json['customer'];
        queue = json['queue'];
        agent = json['agent'];
        state = json['state'];
        duration = json['duration'];
        hold = json['hold'];
        extraInfo = json['extraInfo'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'id': id,
        'customer': customer,
        'queue': queue,
        'agent': agent,
        'state': state,
        'duration': duration,
        'hold': hold,
        'extraInfo': extraInfo
    };

    getTypeName() => "CallCenterDashboardCall";
    TypeContext? context = _ctx;
}

class CallCenterDashboard implements IConvertible
{
    List<CallCenterDashboardAgent>? agents;
    List<CallCenterDashboardQueue>? queues;
    List<CallCenterDashboardCall>? calls;

    CallCenterDashboard({this.agents,this.queues,this.calls});
    CallCenterDashboard.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        agents = JsonConverters.fromJson(json['agents'],'List<CallCenterDashboardAgent>',context!);
        queues = JsonConverters.fromJson(json['queues'],'List<CallCenterDashboardQueue>',context!);
        calls = JsonConverters.fromJson(json['calls'],'List<CallCenterDashboardCall>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'agents': JsonConverters.toJson(agents,'List<CallCenterDashboardAgent>',context!),
        'queues': JsonConverters.toJson(queues,'List<CallCenterDashboardQueue>',context!),
        'calls': JsonConverters.toJson(calls,'List<CallCenterDashboardCall>',context!)
    };

    getTypeName() => "CallCenterDashboard";
    TypeContext? context = _ctx;
}

/**
* Returns the call center dashboard data
*/
// @Api(Description="Returns the call center dashboard data")
class GetCallCenterDashboard implements IPost, IConvertible
{
    /**
    * The account ID to retrieve for
    */
    // @ApiMember(Description="The account ID to retrieve for")
    String? accountId;

    GetCallCenterDashboard({this.accountId});
    GetCallCenterDashboard.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        accountId = json['accountId'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'accountId': accountId
    };

    getTypeName() => "GetCallCenterDashboard";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'evovoice.io', types: <String, TypeInfo> {
    'CallCenterDashboardAgent': TypeInfo(TypeOf.Class, create:() => CallCenterDashboardAgent()),
    'CallCenterDashboardQueue': TypeInfo(TypeOf.Class, create:() => CallCenterDashboardQueue()),
    'CallCenterDashboardCall': TypeInfo(TypeOf.Class, create:() => CallCenterDashboardCall()),
    'CallCenterDashboard': TypeInfo(TypeOf.Class, create:() => CallCenterDashboard()),
    'List<CallCenterDashboardAgent>': TypeInfo(TypeOf.Class, create:() => <CallCenterDashboardAgent>[]),
    'List<CallCenterDashboardQueue>': TypeInfo(TypeOf.Class, create:() => <CallCenterDashboardQueue>[]),
    'List<CallCenterDashboardCall>': TypeInfo(TypeOf.Class, create:() => <CallCenterDashboardCall>[]),
    'GetCallCenterDashboard': TypeInfo(TypeOf.Class, create:() => GetCallCenterDashboard()),
});

Dart GetCallCenterDashboard 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.

GET /dashboard/call-center HTTP/1.1 
Host: evovoice.io 
Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	agents: 
	[
		{
			id: String,
			name: String,
			queues: 
			[
				String
			],
			agentState: String,
			callState: String,
			signInTime: String,
			signInDuration: String,
			percentAvailable: String,
			avgBusyIn: String,
			avgWrapUp: String,
			dateOfLastCall: String
		}
	],
	queues: 
	[
		{
			name: String,
			numAgents: 0,
			numCallsQueued: 0,
			longestWaitingCall: String,
			expectedWaitTime: String,
			expectedHoldTime: String,
			averageSpeedOfAnswer: String,
			idleAgents: 0,
			unavailableAgents: 0
		}
	],
	calls: 
	[
		{
			id: String,
			customer: String,
			queue: String,
			agent: String,
			state: String,
			duration: String,
			hold: String,
			extraInfo: String
		}
	]
}