Fetch Call Logs
UseCallLogsRequest to fetch call logs with pagination support. The builder pattern allows you to filter results by various criteria.
- Swift
- Objective-C
let callLogRequest = CallLogsRequest.CallLogsRequestBuilder()
.setLimit(30)
.build()
callLogRequest.fetchNext(onSuccess: { callLogs in
for callLog in callLogs {
print("Session: \(callLog.sessionID ?? "")")
print("Duration: \(callLog.totalDuration ?? "")")
print("Status: \(callLog.status ?? "")")
}
}, onError: { error in
print("Error: \(error?.errorDescription ?? "")")
})
CallLogsRequest *callLogRequest = [[[CallLogsRequest CallLogsRequestBuilder]
setLimit:30]
build];
[callLogRequest fetchNextOnSuccess:^(NSArray<CallLog *> * callLogs) {
for (CallLog *callLog in callLogs) {
NSLog(@"Session: %@", callLog.sessionID);
NSLog(@"Duration: %@", callLog.totalDuration);
NSLog(@"Status: %@", callLog.status);
}
} onError:^(CometChatCallException * error) {
NSLog(@"Error: %@", error.errorDescription);
}];
CallLogsRequestBuilder
Configure the request using the builder methods:| Method | Type | Description |
|---|---|---|
setLimit(Int) | Int | Number of call logs to fetch per request (default: 30, max: 100) |
setSessionType(String) | String | Filter by call type: video or audio |
setCallStatus(String) | String | Filter by call status |
setHasRecording(Bool) | Bool | Filter calls that have recordings |
setCallCategory(String) | String | Filter by category: call or meet |
setCallDirection(String) | String | Filter by direction: incoming or outgoing |
setUid(String) | String | Filter calls with a specific user |
setGuid(String) | String | Filter calls with a specific group |
Filter Examples
- Swift
- Objective-C
// Fetch only video calls
let videoCallsRequest = CallLogsRequest.CallLogsRequestBuilder()
.setSessionType("video")
.setLimit(20)
.build()
// Fetch calls with recordings
let recordedCallsRequest = CallLogsRequest.CallLogsRequestBuilder()
.setHasRecording(true)
.build()
// Fetch missed incoming calls
let missedCallsRequest = CallLogsRequest.CallLogsRequestBuilder()
.setCallStatus("missed")
.setCallDirection("incoming")
.build()
// Fetch calls with a specific user
let userCallsRequest = CallLogsRequest.CallLogsRequestBuilder()
.setUid("user_id")
.build()
// Fetch only video calls
CallLogsRequest *videoCallsRequest = [[[[CallLogsRequest CallLogsRequestBuilder]
setSessionType:@"video"]
setLimit:20]
build];
// Fetch calls with recordings
CallLogsRequest *recordedCallsRequest = [[[CallLogsRequest CallLogsRequestBuilder]
setHasRecording:YES]
build];
// Fetch missed incoming calls
CallLogsRequest *missedCallsRequest = [[[[CallLogsRequest CallLogsRequestBuilder]
setCallStatus:@"missed"]
setCallDirection:@"incoming"]
build];
// Fetch calls with a specific user
CallLogsRequest *userCallsRequest = [[[CallLogsRequest CallLogsRequestBuilder]
setUid:@"user_id"]
build];
Pagination
UsefetchNext() and fetchPrevious() for pagination:
- Swift
- Objective-C
// Fetch next page
callLogRequest.fetchNext(onSuccess: { callLogs in
// Handle next page
}, onError: { error in
print("Error: \(error?.errorDescription ?? "")")
})
// Fetch previous page
callLogRequest.fetchPrevious(onSuccess: { callLogs in
// Handle previous page
}, onError: { error in
print("Error: \(error?.errorDescription ?? "")")
})
// Fetch next page
[callLogRequest fetchNextOnSuccess:^(NSArray<CallLog *> * callLogs) {
// Handle next page
} onError:^(CometChatCallException * error) {
NSLog(@"Error: %@", error.errorDescription);
}];
// Fetch previous page
[callLogRequest fetchPreviousOnSuccess:^(NSArray<CallLog *> * callLogs) {
// Handle previous page
} onError:^(CometChatCallException * error) {
NSLog(@"Error: %@", error.errorDescription);
}];
CallLog Object
EachCallLog object contains detailed information about a call:
| Property | Type | Description |
|---|---|---|
sessionID | String | Unique identifier for the call session |
initiator | CallEntity | User who initiated the call |
receiver | CallEntity | User or group that received the call |
receiverType | String | user or group |
type | String | Call type: video or audio |
status | String | Final status of the call |
callCategory | String | Category: call or meet |
initiatedAt | Int | Timestamp when call was initiated |
endedAt | Int | Timestamp when call ended |
totalDuration | String | Human-readable duration (e.g., “5:30”) |
totalDurationInMinutes | Double | Duration in minutes |
totalAudioMinutes | Double | Audio duration in minutes |
totalVideoMinutes | Double | Video duration in minutes |
totalParticipants | Int | Number of participants |
hasRecording | Bool | Whether the call was recorded |
recordings | [Recording] | List of recording objects |
Access Recordings
If a call has recordings, access them through therecordings property:
- Swift
- Objective-C
callLogRequest.fetchNext(onSuccess: { callLogs in
for callLog in callLogs {
if callLog.hasRecording {
for recording in callLog.recordings ?? [] {
print("Recording ID: \(recording.rid ?? "")")
print("Recording URL: \(recording.recordingURL ?? "")")
print("Duration: \(recording.duration) seconds")
}
}
}
}, onError: { error in
print("Error: \(error?.errorDescription ?? "")")
})
[callLogRequest fetchNextOnSuccess:^(NSArray<CallLog *> * callLogs) {
for (CallLog *callLog in callLogs) {
if (callLog.hasRecording) {
for (Recording *recording in callLog.recordings) {
NSLog(@"Recording ID: %@", recording.rid);
NSLog(@"Recording URL: %@", recording.recordingURL);
NSLog(@"Duration: %f seconds", recording.duration);
}
}
}
} onError:^(CometChatCallException * error) {
NSLog(@"Error: %@", error.errorDescription);
}];
Call Status Values
Call Status Values
| Status | Description |
|---|---|
ongoing | Call is currently in progress |
busy | Receiver was busy |
rejected | Call was rejected |
cancelled | Call was cancelled by initiator |
ended | Call ended normally |
missed | Call was missed |
initiated | Call was initiated but not answered |
unanswered | Call was not answered |
Call Category Values
Call Category Values
| Category | Description |
|---|---|
call | Direct call between users |
meet | Meeting/conference call |
Call Direction Values
Call Direction Values
| Direction | Description |
|---|---|
incoming | Call received by the user |
outgoing | Call initiated by the user |