Add TWP Softphone Flutter app and complete mobile backend API
All checks were successful
Create Release / build (push) Successful in 4s
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>
This commit is contained in:
54
mobile/lib/models/queue_state.dart
Normal file
54
mobile/lib/models/queue_state.dart
Normal file
@@ -0,0 +1,54 @@
|
||||
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,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user