| name | call-logs |
| description | Fetch call history using CallLogsRequest with pagination and filters. Use when displaying call logs, filtering by type/status/recording, or accessing recordings. Triggers on "call logs", "call history", "CallLogsRequest", "fetch recordings". |
| inclusion | manual |
CometChat Calls SDK v5 — Call Logs
Overview
Retrieve call history using CallLogsRequest with pagination, filtering by type, status, direction, recordings, and specific users/groups.
Key Imports
import CometChatCallsSDK
Implementation
Basic Fetch
let request = CallLogsRequest.CallLogsBuilder()
.set(limit: 30)
.build()
request.fetchNext(onSuccess: { callLogs in
for log in callLogs {
print("Session: \(log.sessionID), Duration: \(log.totalDurationInMinutes), Status: \(log.status)")
}
}, onError: { error in
print("Error: \(error?.errorDescription ?? "")")
})
Filtered Queries
CallLogsRequest.CallLogsBuilder().set(callType: SessionType.video).set(limit: 20).build()
CallLogsRequest.CallLogsBuilder().set(hasRecording: true).build()
CallLogsRequest.CallLogsBuilder().set(callStatus: CallStatus.missed).set(callDirection: CallDirection.incoming).build()
CallLogsRequest.CallLogsBuilder().set(uid: "user_id").build()
Pagination
request.fetchNext(onSuccess:onError:)
request.fetchPrevious(onSuccess:onError:)
Access Recordings
for callLog in callLogs {
if callLog.hasRecording {
callLog.recordings?.forEach { recording in
print("URL: \(recording.recordingURL)")
print("Duration: \(recording.duration) seconds")
}
}
}
Gotchas
CallLogsRequest is from the Calls SDK, not the Chat SDK
set(callType:) takes SessionType enum: .video or .audio
set(callDirection:) takes CallDirection enum: .incoming or .outgoing
- Auth token is automatically resolved from the SDK's stored login token — no need to pass it manually
- Create a new
CallLogsRequest to reset pagination
Sample App Reference
CallLogsView.swift — Fetching and displaying call history in a SwiftUI List