All checks were successful
Create Release / build (push) Successful in 4s
Backend: Add /voice/token endpoint with AccessToken + VoiceGrant for mobile VoIP, implement unhold_call() with call leg detection, wire FCM push notifications into call queue and webhook missed call handlers, add data-only FCM message support for Android background wake, and add Twilio API Key / Push Credential settings fields. Flutter app: Full softphone with Twilio Voice SDK integration, JWT auth with auto-refresh, SSE real-time queue updates, FCM push notifications, Material 3 UI with dashboard, active call screen, dialpad, and call controls (mute/speaker/hold/transfer). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
55 lines
1.2 KiB
Dart
55 lines
1.2 KiB
Dart
class QueueInfo {
|
|
final int id;
|
|
final String name;
|
|
final String type;
|
|
final String? extension;
|
|
final int waitingCount;
|
|
|
|
QueueInfo({
|
|
required this.id,
|
|
required this.name,
|
|
required this.type,
|
|
this.extension,
|
|
required this.waitingCount,
|
|
});
|
|
|
|
factory QueueInfo.fromJson(Map<String, dynamic> json) {
|
|
return QueueInfo(
|
|
id: json['id'] as int,
|
|
name: json['name'] as String,
|
|
type: json['type'] as String,
|
|
extension: json['extension'] as String?,
|
|
waitingCount: json['waiting_count'] as int,
|
|
);
|
|
}
|
|
}
|
|
|
|
class QueueCall {
|
|
final String callSid;
|
|
final String fromNumber;
|
|
final String toNumber;
|
|
final int position;
|
|
final String status;
|
|
final int waitTime;
|
|
|
|
QueueCall({
|
|
required this.callSid,
|
|
required this.fromNumber,
|
|
required this.toNumber,
|
|
required this.position,
|
|
required this.status,
|
|
required this.waitTime,
|
|
});
|
|
|
|
factory QueueCall.fromJson(Map<String, dynamic> json) {
|
|
return QueueCall(
|
|
callSid: json['call_sid'] as String,
|
|
fromNumber: json['from_number'] as String,
|
|
toNumber: json['to_number'] as String,
|
|
position: json['position'] as int,
|
|
status: json['status'] as String,
|
|
waitTime: json['wait_time'] as int,
|
|
);
|
|
}
|
|
}
|