Requires any of the roles: | SystemAdministrator, Manager |
GET | /dashboard/call-center |
---|
import 'package:servicestack/servicestack.dart';
import 'dart:typed_data';
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: 'team.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
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: team.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 } ] }