### Start a Cellular Network Conversation with LiveCommunicationKit
Source: https://developer.apple.com/documentation/livecommunicationkit/preparing-your-app-to-be-the-default-dialer-app
Initiates a cellular network conversation using LiveCommunicationKit. It requires creating a Handle for the recipient and a StartCellularConversationAction, then using TelephonyConversationManager to start the conversation. Error handling is included for the dialing process.
```swift
// ...
let manager = TelephonyConversationManager.sharedInstance
let cellularServices = manager.cellularServices
// Code to choose a cellular service.
// ...
// Start a cellular network conversation.
func startCellularConversation(_ phoneNumber: String, using cellularService: CellularService? = nil) async throws {
let handle = Handle(type: .phoneNumber, value: phoneNumber)
do {
let action = StartCellularConversationAction(handle, cellularService: cellularService)
try await manager.startCellularConversation(action)
} catch {
print("error dialing \(error)")
// ...
// Additional error handling.
throw error
}
}
```
--------------------------------
### StartCellularConversationAction Initialization
Source: https://developer.apple.com/documentation/livecommunicationkit/startcellularconversationaction/init%28_%3Acellularservice%3A%29
Initializes an action to start a cellular conversation with a specified recipient handle and an optional cellular service.
```APIDOC
## init(_:cellularService:)
### Description
Creates an action that initiates a cellular network conversation.
### Method
Initializer
### Endpoint
N/A (Initializer)
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```swift
init(
_ handle: Handle,
cellularService: CellularService? = nil
)
```
### Response
#### Success Response (200)
N/A (Initializer)
#### Response Example
None
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```swift
init(
_ handle: Handle,
cellularService: CellularService? = nil
)
```
### Response
#### Success Response (200)
N/A (Initializer)
#### Response Example
None
## Parameters
`handle` (Handle) - Required - The handle of the conversation’s recipient.
`cellularService` (CellularService?) - Optional - The cellular service for the conversation.
## Discussion
If you don’t provide an cellular service, the system chooses a service for the conversation or fails the action.
## See Also
### Request creation
`init(ConversationHistoryManager.RecentConversation)`
Creates an action that initiates a cellular conversation using information from a recent conversation.
```
--------------------------------
### Start Cellular Conversation Swift
Source: https://developer.apple.com/documentation/livecommunicationkit/telephonyconversationmanager/startcellularconversation%28_%3A%29
Starts a cellular conversation using the provided action. This method is available on iOS 26.0+, iPadOS 26.0+, and Mac Catalyst. It takes a StartCellularConversationAction as input and can throw errors.
```swift
final func startCellularConversation(_ action: StartCellularConversationAction) async throws
```
--------------------------------
### Initialize ConversationHistoryManager (Swift)
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationhistorymanager/conversationhistorydidupdate/init%28%29
The init() method is the initializer for the ConversationHistoryManager class. It is available on iOS, iPadOS, and Mac Catalyst starting from version 26.0. This method is essential for setting up an instance of the ConversationHistoryManager.
```swift
init()
```
--------------------------------
### Start a VoIP Conversation with LiveCommunicationKit
Source: https://developer.apple.com/documentation/livecommunicationkit/initiating-voip-conversations-with-livecommunicationkit
This Swift code snippet demonstrates how to initiate an outgoing VoIP conversation using LiveCommunicationKit. It utilizes `ConversationManager` and `StartConversationAction` to manage the conversation lifecycle, including reporting connection status.
```swift
// ...
let configuration: ConversationManager.Configuration
let manager: ConversationManager
// Code to set up the manager and configuration for the conversation.
// ...
// Start the conversation.
func startOutgoingConversation(handles: [Handle], isVideo: Bool) async throws {
let uuid = UUID()
let action = StartConversationAction(
conversationUUID: uuid,
handles: handles,
isVideo: isVideo
)
try await manager.perform([action])
// Code to initiate a VoIP conversation using your VoIP services.
// ...
Task {
try await Task.sleep(for: .seconds(1))
for conversation in manager.conversations {
if conversation.uuid == uuid {
// Report conversation status.
manager.reportConversationEvent(.conversationConnected(Date()), for: conversation)
}
}
}
}
```
--------------------------------
### Indicate Conversation Start with fulfill(dateStarted:)
Source: https://developer.apple.com/documentation/livecommunicationkit/startconversationaction/fulfill%28datestarted%3A%29
The fulfill(dateStarted:) instance method is used to indicate that a local participant has successfully started a conversation. It requires a Date object specifying the exact time the conversation commenced. This method is available on iOS, iPadOS, Mac Catalyst, visionOS, and watchOS starting from version 17.4 (or 1.1 for visionOS).
```swift
final func fulfill(dateStarted: Date)
```
--------------------------------
### Conversation.Event.conversationStartedConnecting(_:)
Source: https://developer.apple.com/documentation/livecommunicationkit/conversation/event/conversationstartedconnecting%28_%3A%29
This event informs the system that a conversation has started the process of connecting participants at a specific point in time.
```APIDOC
## Conversation.Event.conversationStartedConnecting(_:)
### Description
Informs the system that a conversation has started to connect participants at a point in time.
### Method
Not Applicable (Event)
### Endpoint
Not Applicable (Event)
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
None
### Response
#### Success Response (200)
None
#### Response Example
None
### Related Events
* `case conversationConnected(Date)`
* `case conversationEnded(Date, Conversation.EndedReason)`
* `case conversationUpdated(Conversation.Update)`
```
--------------------------------
### Swift: conversationManagerDidBegin(_:) Delegate Method
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationmanagerdelegate/conversationmanagerdidbegin%28_%3A%29
This Swift method is called on the delegate when your app successfully starts a ConversationManager. It is a required method for implementing the ConversationManagerDelegate protocol. The method receives the ConversationManager instance that was started as a parameter.
```swift
func conversationManagerDidBegin(_ manager: ConversationManager)
```
--------------------------------
### Instance Method: fulfill(dateStarted:)
Source: https://developer.apple.com/documentation/livecommunicationkit/startconversationaction/fulfill%28datestarted%3A%29
Indicates that a local participant successfully started a conversation. Available on iOS 17.4+, iPadOS 17.4+, Mac Catalyst 17.4+, visionOS 1.1+, and watchOS 10.4+.
```APIDOC
## Instance Method: fulfill(dateStarted:)
### Description
Indicates that a local participant successfully started a conversation.
### Method
Instance Method
### Endpoint
N/A (This is a client-side method)
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```swift
// Example usage within your application
let conversationKit = LiveCommunicationKit()
let startTime = Date()
conversationKit.fulfill(dateStarted: startTime)
```
### Response
#### Success Response
N/A (This is a client-side method)
#### Response Example
N/A
```
--------------------------------
### Start Cellular Conversation (Swift)
Source: https://developer.apple.com/documentation/livecommunicationkit/telephonyconversationmanager/sharedinstance
Initiates a new cellular conversation using the `startCellularConversation` function. This function requires a `StartCellularConversationAction` object as input and can throw errors.
```swift
func startCellularConversation(StartCellularConversationAction) async throws
```
--------------------------------
### LiveCommunicationKit - conversationManagerDidBegin(_:)
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationmanagerdelegate/conversationmanagerdidbegin%28_%3A%29
This delegate method is called when your app has successfully started a conversation manager. It provides the conversation manager instance to the delegate.
```APIDOC
## Instance Method
### conversationManagerDidBegin(_:)
Tells the delegate that your app has started a conversation manager.
**Availability**
iOS 17.4+, iPadOS 17.4+, Mac Catalyst 17.4+, visionOS 1.1+, watchOS 10.4+
```swift
func conversationManagerDidBegin(_ manager: ConversationManager)
```
### Parameters
#### `manager`
- **ConversationManager** - Required - The conversation manager that your app started.
### See Also
- `func conversationManagerDidReset(ConversationManager)`: Tells the delegate that the app has reset the conversation manager.
```
--------------------------------
### Create Outgoing Conversation Action (Swift)
Source: https://developer.apple.com/documentation/livecommunicationkit/startconversationaction/init%28conversationuuid%3Ahandles%3Aisvideo%3A%29
Initializes an action to start an outgoing conversation. Requires iOS 17.4+, iPadOS 17.4+, Mac Catalyst 17.4+, visionOS 1.1+, or watchOS 10.4+. Takes a conversation UUID, an array of handles for remote members, and a boolean indicating if it's a video call.
```swift
init(
conversationUUID: UUID,
handles: [Handle],
isVideo: Bool
)
```
--------------------------------
### Fulfill StartConversationAction
Source: https://developer.apple.com/documentation/livecommunicationkit/startconversationaction
Marks a StartConversationAction as fulfilled, indicating that a local participant has successfully initiated a conversation. This method takes the date when the conversation started as an argument and is vital for tracking the lifecycle of conversation actions.
```swift
func fulfill(dateStarted: Date)
```
--------------------------------
### Initialize Merge Conversation Action (Swift)
Source: https://developer.apple.com/documentation/livecommunicationkit/mergeconversationaction/init%28conversationuuid%3Aconversationuuidtomergewith%3A%29
Creates an action that merges two conversations using their unique identifiers. This initializer is part of the LiveCommunicationKit framework and is available on multiple Apple platforms starting from specific OS versions.
```swift
init(
conversationUUID: UUID,
conversationUUIDToMergeWith: UUID
)
```
--------------------------------
### SetTranslatingAction Initialization
Source: https://developer.apple.com/documentation/livecommunicationkit/settranslatingaction
Initializes a SetTranslatingAction to start or stop translation for a conversation. It requires the conversation ID, a boolean indicating whether to translate, and the local and remote languages.
```APIDOC
## Initializing SetTranslatingAction
### Description
Creates an action that starts or stops translation for a given conversation.
### Method
`init`
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
* **conversationID** (UUID) - Required - The unique identifier of the conversation.
* **isTranslating** (Bool) - Required - A boolean value indicating whether to start (true) or stop (false) translation.
* **localLanguage** (Locale.Language) - Required - The language of the local participant.
* **remoteLanguage** (Locale.Language) - Required - The language of the remote participant.
### Request Example
```swift
let action = SetTranslatingAction(conversationID: conversationId, isTranslating: true, localLanguage: .english, remoteLanguage: .spanish)
```
### Response
#### Success Response (200)
This initializer does not return a value directly upon creation. The action is then executed via a conversation context.
#### Response Example
N/A
```
--------------------------------
### Initialize LiveCommunicationKit Translation Action
Source: https://developer.apple.com/documentation/livecommunicationkit/settranslatingaction/init%28conversationid%3Aistranslating%3Alocallanguage%3Aremotelanguage%3A%29
Creates an action to start or stop translation for a given conversation. This initializer requires a conversation ID, a boolean indicating if translation is active, and the local and remote participant languages. Available on iOS and iPadOS 26.0 and later.
```swift
init(
conversationID: UUID,
isTranslating: Bool,
localLanguage: Locale.Language,
remoteLanguage: Locale.Language
)
```
--------------------------------
### Initialize ConversationManager with Configuration (Swift)
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationmanager/init%28configuration%3A%29
Creates a new conversation manager using a provided configuration object. This initializer is available on iOS, iPadOS, Mac Catalyst, visionOS, and watchOS starting from version 17.4 (or 1.1 for visionOS).
```swift
convenience init(configuration: ConversationManager.Configuration)
```
--------------------------------
### Initialize Pause Conversation Action
Source: https://developer.apple.com/documentation/livecommunicationkit/pauseconversationaction/init%28conversationuuid%3Aispaused%3A%29
Creates an action to start or stop audio and video streams for a conversation. This initializer requires the conversation's unique identifier and a boolean value specifying whether to pause the streams. Available on iOS 17.4+ and later.
```swift
init(
conversationUUID: UUID,
isPaused: Bool
)
```
--------------------------------
### Get Conversation Capabilities (Swift)
Source: https://developer.apple.com/documentation/livecommunicationkit/conversation/update/capabilities
Retrieves the supported capabilities of a conversation after a system update. This property is optional and returns a Conversation.Capabilities object.
```swift
var capabilities: Conversation.Capabilities?
```
--------------------------------
### Handle.Kind Enumeration Definition
Source: https://developer.apple.com/documentation/livecommunicationkit/handle/kind
Defines the possible types for a participant's handle within a conversation. This enumeration is available on iOS, iPadOS, Mac Catalyst, visionOS, and watchOS starting from version 17.4 (or 1.1 for visionOS).
```swift
enum Kind
```
--------------------------------
### Conversation Started Connecting Event
Source: https://developer.apple.com/documentation/livecommunicationkit/conversation/event
Represents the event where the system has initiated the process of connecting participants to a conversation. It includes the timestamp when this connection attempt began. This is a case within the Conversation.Event enumeration.
```swift
case conversationStartedConnecting(Date)
```
--------------------------------
### Declare StartConversationAction Class
Source: https://developer.apple.com/documentation/livecommunicationkit/startconversationaction
Declares the StartConversationAction class, a core component for initiating outgoing conversations within the LiveCommunicationKit framework. This class is available on iOS, iPadOS, Mac Catalyst, visionOS, and watchOS starting from version 17.4 (or 1.1 for visionOS).
```swift
final class StartConversationAction
```
--------------------------------
### CellularService Structure Definition (Swift)
Source: https://developer.apple.com/documentation/livecommunicationkit/cellularservice
Defines the CellularService structure, which represents a cellular service account for starting or joining a conversation. It includes attributes like label and id, and conforms to several standard Swift protocols.
```swift
struct CellularService
```
--------------------------------
### Conversation.State.left Case Example (Swift)
Source: https://developer.apple.com/documentation/livecommunicationkit/conversation/state-swift.enum/left
This code snippet demonstrates the usage of the 'left' case within the Conversation.State enum in Swift. It represents a conversation that has ended and all media sessions have been terminated. This is a simple enum case declaration.
```swift
case left
```
--------------------------------
### ConversationManager.Configuration.supportsVideo
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationmanager/configuration-swift.struct/supportsvideo
This property indicates whether the application supports video communication in addition to audio. It is available on iOS, iPadOS, Mac Catalyst, visionOS, and watchOS starting from version 17.4 (or 1.1 for visionOS, 10.4 for watchOS).
```APIDOC
## Instance Property: supportsVideo
### Description
A Boolean value that indicates whether the app supports video in addition to audio.
### Availability
iOS 17.4+
iPadOS 17.4+
Mac Catalyst 17.4+
visionOS 1.1+
watchOS 10.4+
### Syntax
```swift
var supportsVideo: Bool
```
### See Also
#### Configuration options
- `var iconTemplateImageData: Data?`
- `var includesConversationInRecents: Bool`
- `var maximumConversationGroups: Int`
- `var maximumConversationsPerConversationGroup: Int`
- `var ringtoneName: String?`
- `var supportedHandleTypes: Set`
- `var supportsAudioTranslation: Bool`
```
--------------------------------
### Initialize ConversationManager Configuration (Swift)
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationmanager/configuration-swift.struct/init%28ringtonename%3Aicontemplateimagedata%3Amaximumconversationgroups%3Amaximumconversationsperconversationgroup%3Aincludesconversationinrecents%3Asupportsvideo%3Asupportedhandletypes%3A%29
Creates a new configuration for a conversation manager. This initializer takes parameters such as ringtone name, icon image data, maximum conversation group limits, and support for video and handle types. It is available on iOS, iPadOS, Mac Catalyst, visionOS, and watchOS starting from specific versions.
```swift
init(
ringtoneName: String?,
iconTemplateImageData: Data?,
maximumConversationGroups: Int,
maximumConversationsPerConversationGroup: Int,
includesConversationInRecents: Bool,
supportsVideo: Bool,
supportedHandleTypes: Set
)
```
--------------------------------
### Get Conversation Start Date (Swift)
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationhistorymanager/recentconversation/date
Retrieves the date when a recent conversation was initiated. This property is available on iOS 26.0+, iPadOS 26.0+, and Mac Catalyst. It returns a standard Swift Date object.
```swift
let date: Date
```
--------------------------------
### LiveCommunicationKit - init(_:)
Source: https://developer.apple.com/documentation/livecommunicationkit/startcellularconversationaction/init%28_%3A%29
Creates an action that initiates a cellular conversation using information from a recent conversation.
```APIDOC
## POST /websites/developer_apple_livecommunicationkit/init
### Description
Creates an action that initiates a cellular conversation using information from a recent conversation. This initializer is available on iOS 26.0+ and iPadOS 26.0+.
### Method
POST
### Endpoint
/websites/developer_apple_livecommunicationkit/init
### Parameters
#### Request Body
- **recentConversation** (ConversationHistoryManager.RecentConversation) - Required - A recent conversation to use for the new dial request.
### Request Example
```json
{
"recentConversation": {
"handle": "+1234567890",
"account": "account123",
"timestamp": "2023-10-27T10:00:00Z"
}
}
```
### Response
#### Success Response (200)
- **actionInitiated** (boolean) - Indicates if the action to initiate the conversation was successfully created.
#### Response Example
```json
{
"actionInitiated": true
}
```
### See Also
- `init(Handle, cellularService: CellularService?)`
```
--------------------------------
### LiveCommunicationKit - init(conversationUUID:digits:tone:)
Source: https://developer.apple.com/documentation/livecommunicationkit/playtoneaction/init%28conversationuuid%3Adigits%3Atone%3A%29
Creates an action that plays a sequence of tones that indicate an interaction with the keypad.
```APIDOC
## init(conversationUUID:digits:tone:)
### Description
Creates an action that plays a sequence of tones that indicate an interaction with the keypad.
### Method
Initializer
### Endpoint
N/A (Initializer)
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```swift
init(
conversationUUID: UUID,
digits: String,
tone: PlayToneAction.Tone
)
```
### Response
#### Success Response (200)
N/A (Initializer)
#### Response Example
N/A (Initializer)
### Parameters
`conversationUUID` (UUID) - The unique identifier of the conversation to which this action will be applied.
`digits` (String) - The digits tapped by the user into the keypad or included in the dial string.
`tone` (PlayToneAction.Tone) - The tone to play.
```
--------------------------------
### LiveCommunicationKit - isTranslating Property
Source: https://developer.apple.com/documentation/livecommunicationkit/settranslatingaction/istranslating
The isTranslating property is a boolean value that indicates whether the translation feature should be started or stopped. It is available for iOS and iPadOS starting from version 26.0.
```APIDOC
## LiveCommunicationKit - isTranslating Property
### Description
A value that indicates whether to start or stop translation.
### Availability
iOS 26.0+
iPadOS 26.0+
### Property
`final let isTranslating: Bool`
### See Also
* Accessing action attributes
* `let localLanguage: Locale.Language` - The local participant’s language.
* `let remoteLanguage: Locale.Language` - The remote participant’s language.
```
--------------------------------
### Initialize PlayToneAction with Tones
Source: https://developer.apple.com/documentation/livecommunicationkit/playtoneaction/init%28conversationuuid%3Adigits%3Atone%3A%29
Creates an action to play keypad tones for a given conversation. Requires a conversation UUID, the digits entered, and the specific tone to be played. This initializer is available on multiple Apple platforms.
```swift
init(
conversationUUID: UUID,
digits: String,
tone: PlayToneAction.Tone
)
```
--------------------------------
### LiveCommunicationKit Initializer: init(conversationUUID:timeoutDate:)
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationaction/init%28conversationuuid%3Atimeoutdate%3A%29
Initializes a new conversation action with a specified conversation UUID and an optional timeout date.
```APIDOC
## Initializer: init(conversationUUID:timeoutDate:)
### Description
Creates a conversation action.
### Method
`convenience init`
### Endpoint
N/A (Initializer)
### Parameters
#### Path Parameters
N/A
#### Query Parameters
N/A
#### Request Body
N/A
### Request Example
```swift
convenience init(
conversationUUID: UUID,
timeoutDate: Date = Date(timeIntervalSinceNow: 30)
)
```
### Response
#### Success Response (200)
N/A (Initializer)
#### Response Example
N/A (Initializer)
## Parameters
`conversationUUID`
The unique identifier of the action’s associated conversation.
`timeoutDate`
The point in time that marks when the action can’t be completed anymore.
```
--------------------------------
### Declare Generic Handle Kind (Swift)
Source: https://developer.apple.com/documentation/livecommunicationkit/handle/kind/generic
This code snippet demonstrates how to declare the 'generic' case for Handle.Kind in Swift. This case represents an unspecified handle type and is available on iOS, iPadOS, Mac Catalyst, visionOS, and watchOS starting from version 17.4 (or 1.1 for visionOS).
```swift
case generic
```
--------------------------------
### ConversationHistoryManager.RecentConversation.date
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationhistorymanager/recentconversation/date
Retrieves the point in time when the conversation started.
```APIDOC
## Instance Property
### date
The point in time when the conversation started.
**Availability:** iOS 26.0+, iPadOS 26.0+, Mac Catalyst
```swift
let date: Date
```
### Description
This property returns a `Date` object indicating the exact moment a conversation began. It is crucial for ordering conversations chronologically or for time-based filtering and analysis.
### Method
N/A (Instance Property)
### Endpoint
N/A (Instance Property)
### Parameters
N/A
### Request Example
N/A
### Response
#### Success Response (200)
- **date** (Date) - The date and time the conversation started.
#### Response Example
```json
{
"date": "2023-10-27T10:30:00Z"
}
```
```
--------------------------------
### LiveCommunicationKit Initializer
Source: https://developer.apple.com/documentation/livecommunicationkit/unmergeconversationaction/init%28conversationuuid%3A%29
Initializes an action to unmerge conversations.
```APIDOC
## init(conversationUUID:)
### Description
Creates an action that separates two previously merged conversations.
### Method
Initializer
### Endpoint
N/A (This is an initializer, not a network endpoint)
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```swift
init(conversationUUID: UUID)
```
### Response
#### Success Response (N/A)
N/A
#### Response Example
N/A
## Parameters
`conversationUUID` (UUID) - Required - The unique identifier of the conversation that represents two previously merged conversations.
```
--------------------------------
### Initialize LiveCommunicationKit Handle
Source: https://developer.apple.com/documentation/livecommunicationkit/handle/init%28type%3Avalue%3Adisplayname%3A%29
Creates a new handle to identify a participant in a conversation. Requires specifying the handle type, its raw value, and an optional display name. If the display name is not provided, the raw value will be used.
```swift
init(
type: Handle.Kind,
value: String,
displayName: String? = nil
)
```
--------------------------------
### Create StartCellularConversationAction with Handle and CellularService
Source: https://developer.apple.com/documentation/livecommunicationkit/startcellularconversationaction
Initializes a StartCellularConversationAction to begin a cellular network conversation. Requires a Handle to identify the participant and an optional CellularService to specify the service account.
```swift
init(Handle, cellularService: CellularService?)
```
--------------------------------
### PlayToneAction.Tone.single Case Example (Swift)
Source: https://developer.apple.com/documentation/livecommunicationkit/playtoneaction/tone-swift.enum/single
This code snippet demonstrates the 'single' case within the PlayToneAction.Tone enum. This case is used to signify that a single digit has been entered by a user. It is available on iOS 17.4, iPadOS 17.4, Mac Catalyst 17.4, visionOS 1.1, and watchOS 10.4 or later.
```swift
case single
```
--------------------------------
### markConversationsAsRead(_:)
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationhistorymanager/markconversationsasread%28_%3A%29
Marks a list of conversations as read. This method is available on iOS, iPadOS, and Mac Catalyst starting from version 26.0.
```APIDOC
## Instance Method markConversationsAsRead(_:)
### Description
Marks a list of conversations as read.
### Method
`async throws`
### Endpoint
N/A (Instance Method)
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
* **recentConversations** (Array) - Required - A list of recent conversations that you want to mark as read.
### Request Example
```json
{
"recentConversations": [
{
"conversationId": "conv_123",
"lastMessageId": "msg_456"
}
]
}
```
### Response
#### Success Response (200)
This method does not return a value upon success, but it may throw an error.
#### Response Example
N/A
```
--------------------------------
### Handle.Kind.phoneNumber
Source: https://developer.apple.com/documentation/livecommunicationkit/handle/kind/phonenumber
Represents a phone number within the LiveCommunicationKit. This type is available on various Apple platforms starting from specific OS versions.
```APIDOC
## Handle.Kind.phoneNumber
### Description
A phone number.
### Availability
iOS 17.4+
iPadOS 17.4+
Mac Catalyst 17.4+
visionOS 1.1+
watchOS 10.4+
### Type Definition
```swift
case phoneNumber
```
### See Also
- `case emailAddress`: An email address.
- `case generic`: An unspecified handle type.
```
--------------------------------
### Initialize StartConversationAction
Source: https://developer.apple.com/documentation/livecommunicationkit/startconversationaction
Initializes a StartConversationAction object to begin an outgoing conversation. Requires a unique conversation identifier, a list of participant handles, and a boolean indicating if the conversation will include video. This method is crucial for setting up new conversations.
```swift
init(conversationUUID: UUID, handles: [Handle], isVideo: Bool)
```
--------------------------------
### Initialize Cellular Conversation Action
Source: https://developer.apple.com/documentation/livecommunicationkit/startcellularconversationaction/init%28_%3Acellularservice%3A%29
Creates an action that initiates a cellular network conversation. Requires a handle for the recipient and optionally accepts a cellular service. If no cellular service is provided, the system will attempt to select one or the action may fail.
```swift
init(
_ handle: Handle,
cellularService: CellularService? = nil
)
```
--------------------------------
### init(conversationUUID:conversationUUIDToMergeWith:)
Source: https://developer.apple.com/documentation/livecommunicationkit/mergeconversationaction/init%28conversationuuid%3Aconversationuuidtomergewith%3A%29
This initializer creates a MergeConversationAction, which merges two conversations identified by their UUIDs. It takes two UUID parameters, representing the unique identifiers of the conversations to be merged.
```APIDOC
## init(conversationUUID:conversationUUIDToMergeWith:)
### Description
Creates an action that merges two conversations.
### Method
Initializer
### Parameters
#### Parameters
- **conversationUUID** (UUID) - Required - The unique identifier of the first conversation.
- **conversationUUIDToMergeWith** (UUID) - Required - The unique identifier of the other conversation.
### Request Example
```json
{
"conversationUUID": "your_conversation_uuid",
"conversationUUIDToMergeWith": "other_conversation_uuid"
}
```
### Response
#### Success Response (200)
- **Merge Successful** (Boolean) - Indicates if the merge was successful.
#### Response Example
```json
{
"mergeSuccessful": true
}
```
```
--------------------------------
### ConversationHistoryManager.RecentConversation.Status.connected
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationhistorymanager/recentconversation/status-swift.enum/connected
Represents the status of a recent conversation being connected on the current device. This status is available starting from iOS 26.0 and iPadOS 26.0.
```APIDOC
## ConversationHistoryManager.RecentConversation.Status.connected
### Description
The conversation was connected on this device.
### Method
N/A (Enum Case)
### Endpoint
N/A (Enum Case)
### Parameters
N/A
### Request Example
N/A
### Response
#### Success Response (N/A)
- **status** (enum) - The conversation status, specifically `.connected`.
#### Response Example
N/A
### See Also
- `case answeredElsewhere`: The conversation was answered on another device.
- `case cancelled`: The outgoing conversation was cancelled by the initiating participant before it was connected.
- `case missed`: The receiving participant didn’t answer the incoming conversation.
- `case unknown`: The conversation’s status is unknown.
```
--------------------------------
### Initialize Cellular Conversation Action (Swift)
Source: https://developer.apple.com/documentation/livecommunicationkit/startcellularconversationaction/init%28_%3A%29
Creates an action to initiate a cellular conversation using data from a `RecentConversation`. This initializer leverages existing conversation details like handles and account information for the new dial request. It requires iOS, iPadOS, or Mac Catalyst version 26.0 or later.
```swift
init(_ recentConversation: ConversationHistoryManager.RecentConversation)
```
--------------------------------
### ConversationManager Initialization
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationmanager/init%28configuration%3A%29
Initializes a new ConversationManager instance with the provided configuration. This allows for customization of conversation settings upon creation.
```APIDOC
## POST /websites/developer_apple_livecommunicationkit/ConversationManager/init(configuration:)
### Description
Creates a new conversation manager with a given configuration.
### Method
POST
### Endpoint
/websites/developer_apple_livecommunicationkit/ConversationManager/init(configuration:)
### Parameters
#### Request Body
- **configuration** (ConversationManager.Configuration) - Required - A collection of options for configuring the conversation manager.
### Request Example
```json
{
"configuration": {
"example_setting": "value"
}
}
```
### Response
#### Success Response (200)
- **manager_id** (string) - A unique identifier for the newly created conversation manager.
#### Response Example
```json
{
"manager_id": "conv-mgr-12345"
}
```
```
--------------------------------
### Swift: ConversationHistoryManager.RecentConversation.Status Enum Cases
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationhistorymanager/recentconversation/status-swift.enum/missed
Provides examples of different connection statuses for a conversation within the ConversationHistoryManager.RecentConversation.Status enum. These cases help determine how a conversation concluded.
```swift
case answeredElsewhere
case cancelled
case connected
case unknown
```
--------------------------------
### Conversation Manager and Related Interfaces
Source: https://developer.apple.com/documentation/livecommunicationkit/conversation
Documentation for managing and observing VoIP conversations.
```APIDOC
## VoIP Conversations
### Class ConversationManager
An interface for managing and observing VoIP conversations.
### Protocol ConversationManagerDelegate
Methods for managing conversations and receiving VoIP conversation updates.
### Class ConversationHistoryManager
An interface for managing and providing conversation history.
```
--------------------------------
### Create StartCellularConversationAction from Recent Conversation
Source: https://developer.apple.com/documentation/livecommunicationkit/startcellularconversationaction
Initializes a StartCellularConversationAction using data from a recent conversation. This allows for quick re-initiation of previously established cellular conversations.
```swift
init(ConversationHistoryManager.RecentConversation)
```
--------------------------------
### LiveCommunicationKit Overview
Source: https://developer.apple.com/documentation/livecommunicationkit/index
LiveCommunicationKit provides functionalities for managing VoIP conversations, integrating with system communication apps, and enabling your app to be a default dialer or calling app.
```APIDOC
## LiveCommunicationKit Framework
### Description
LiveCommunicationKit allows you to offer VoIP conversation functionalities in your app, and to integrate your communication services with other communication apps in the system. With LiveCommunicationKit, your app can initiate and receive VoIP conversations, and forward cellular network conversations to the system. Using LiveCommunicationKit in your app allows people to configure their device to use your app as the default dialer or calling app.
### Topics
- **Essentials**: Initiating and receiving VoIP conversations, preparing your app to be the default dialer.
- **Cellular network conversations**: Manage cellular conversations using `TelephonyConversationManager`, `StartCellularConversationAction`, `CellularService`, and `Handle`.
- **VoIP conversations**: Manage and observe VoIP conversations using `ConversationManager`, `ConversationManagerDelegate`, `ConversationHistoryManager`, and `Conversation`.
- **Conversation actions**: Perform actions on conversations such as `EndConversationAction`, `JoinConversationAction`, `MergeConversationAction`, `MuteConversationAction`, `PauseConversationAction`, `PlayToneAction`, `SetTranslatingAction`, `StartConversationAction`, and `UnmergeConversationAction`.
```
--------------------------------
### Define ConversationAction Class
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationaction
Defines the ConversationAction class, which represents an action within a conversation. This class is available on iOS, iPadOS, Mac Catalyst, visionOS, and watchOS starting from version 17.4.
```swift
class ConversationAction
```
--------------------------------
### Instance Property: handles
Source: https://developer.apple.com/documentation/livecommunicationkit/startconversationaction/handles
Retrieves the handles of all remote members who receive an invite to join the conversation.
```APIDOC
## Instance Property: handles
### Description
The handles of all remote members who receive an invite to join the conversation.
### Method
GET
### Endpoint
N/A (Instance Property)
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```
// Accessing the handles property on a LiveCommunicationKit instance
let invitedHandles = liveCommunicationKitInstance.handles
```
### Response
#### Success Response (200)
- **handles** ([Handle]) - An array of Handle objects representing the invited remote members.
#### Response Example
```json
{
"handles": [
{
"type": "email",
"value": "member1@example.com"
},
{
"type": "phoneNumber",
"value": "+1234567890"
}
]
}
```
```
--------------------------------
### Handle Structure
Source: https://developer.apple.com/documentation/livecommunicationkit/handle
Details about the Handle structure, including its creation, type, and attributes.
```APIDOC
## Handle
A way to reach a participant, such as a phone number or email address.
### Topics
#### Creation
`init(type: Handle.Kind, value: String, displayName: String?)`
Creates a new handle that identifies a participant in a conversation.
#### Type
`var type: Handle.Kind`
The type of the handle; for example a phone number or email address.
`enum Kind`
Values that define the handle that identifies a participant in a conversation.
#### Attributes
`var displayName: String`
The name for a participant in a conversation that appears in the conversation UI.
`var value: String`
The raw value of the handle.
### Relationships
#### Conforms To
* `Decodable`
* `Encodable`
* `Equatable`
* `Hashable`
* `Sendable`
* `SendableMetatype`
```
--------------------------------
### ConversationManager - perform(_:)
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationmanager/perform%28_%3A%29
Asynchronously performs a series of actions for a given conversation using the ConversationManager.
```APIDOC
## POST /websites/developer_apple_livecommunicationkit/perform
### Description
Tells the conversation manager to asynchronously perform actions for a conversation.
### Method
POST
### Endpoint
/websites/developer_apple_livecommunicationkit/perform
### Parameters
#### Request Body
- **actions** (array[ConversationAction]) - Required - An array of actions to perform for a conversation.
### Request Example
```json
{
"actions": [
{
"type": "sendMessage",
"content": "Hello!"
}
]
}
```
### Response
#### Success Response (200)
- **status** (string) - Indicates the success of the operation.
#### Response Example
```json
{
"status": "success"
}
```
### See Also
- `func invalidate()` - Invalidates the conversation manager, ends all conversations, and fails all pending conversation actions.
```
--------------------------------
### Access Conversation Participant Handles (Swift)
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationhistorymanager/recentconversation/handles
Retrieves the handles of a conversation's participants. This property is an array of Handle objects and is available on iOS, iPadOS, and Mac Catalyst starting from version 26.0.
```swift
let handles: [Handle]
```
--------------------------------
### Mark Conversation as Read in Swift
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationhistorymanager/markconversationasread%28_%3A%29
Marks a specific recent conversation as read using the ConversationHistoryManager. This asynchronous method can throw errors and is available on iOS, iPadOS, and Mac Catalyst starting from version 26.0.
```swift
final func markConversationAsRead(_ recentConversation: ConversationHistoryManager.RecentConversation) async throws
```
--------------------------------
### Declare ConversationManager Class - Swift
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationmanager
Declares the ConversationManager class, an interface for managing and observing VoIP conversations. This class is available on iOS, iPadOS, Mac Catalyst, visionOS, and watchOS starting from version 17.4.
```swift
final class ConversationManager
```
--------------------------------
### Swift Initializer: ConversationManager.Configuration with Audio Translation
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationmanager/configuration-swift
Initializes a new ConversationManager.Configuration object, allowing for the specification of audio translation support. Requires parameters for ringtone, icon data, conversation group limits, recency inclusion, video support, handle types, and audio translation.
```swift
init(ringtoneName: String?, iconTemplateImageData: Data?, maximumConversationGroups: Int, maximumConversationsPerConversationGroup: Int, includesConversationInRecents: Bool, supportsVideo: Bool, supportedHandleTypes: Set, supportsAudioTranslation: Bool)
```
--------------------------------
### Instance Method: fulfill(dateEnded:)
Source: https://developer.apple.com/documentation/livecommunicationkit/endconversationaction/fulfill%28dateended%3A%29
Indicates that the conversation was successfully ended for the local member. This method is available on iOS, iPadOS, Mac Catalyst, visionOS, and watchOS starting from version 17.4.
```APIDOC
## Instance Method: fulfill(dateEnded:)
### Description
Indicates that conversation was successfully ended for the local member.
### Method
Instance Method
### Endpoint
N/A (Instance Method)
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```swift
// Example usage (conceptual, as this is an instance method)
let conversationKit = LiveCommunicationKit()
conversationKit.fulfill(dateEnded: Date())
```
### Response
#### Success Response
N/A (Instance Method)
#### Response Example
N/A (Instance Method)
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Parameters
#### `dateEnded` (Date) - Required
The date when the conversation ended.
### Request Example
```swift
// Example of calling the method
let endedDate = Date()
// Assuming 'self' is an instance of a class conforming to the relevant protocol
self.fulfill(dateEnded: endedDate)
```
### Response
#### Success Response (200)
N/A (This is a method call, not an API endpoint response)
#### Response Example
N/A
```
--------------------------------
### Instance Method: fulfill()
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationaction/fulfill%28%29
Reports that the action was successful. This method is available on iOS 17.4+, iPadOS 17.4+, Mac Catalyst 17.4+, visionOS 1.1+, and watchOS 10.4+.
```APIDOC
## Instance Method: fulfill()
### Description
Reports that the action was successful.
### Method
`final func fulfill()`
### Endpoint
N/A (Instance Method)
### Parameters
None
### Request Example
N/A (Instance Method)
### Response
N/A (Instance Method)
### See Also
* `func fail()` - Reports that performing the action failed.
```
--------------------------------
### Initialize LiveCommunicationKit Conversation
Source: https://developer.apple.com/documentation/livecommunicationkit/conversation/update/init%28localmember%3Amembers%3Aactiveremotemembers%3Acapabilities%3A%29
Initializes a LiveCommunicationKit Conversation object with details about local and remote participants, and the conversation's capabilities. This initializer is crucial for setting up or updating the state of a communication session.
```swift
init(
localMember: Handle? = nil,
members: Set? = nil,
activeRemoteMembers: Set? = nil,
capabilities: Conversation.Capabilities? = nil
)
```
--------------------------------
### Get Conversation UUID (Swift)
Source: https://developer.apple.com/documentation/livecommunicationkit/conversation/uuid
Retrieves the unique identifier for a LiveCommunicationKit conversation. This property is available on iOS 17.4+, iPadOS 17.4+, Mac Catalyst 17.4+, visionOS 1.1+, and watchOS 10.4+.
```swift
final let uuid: UUID
```
--------------------------------
### Access StartConversationAction Attributes
Source: https://developer.apple.com/documentation/livecommunicationkit/startconversationaction
Provides access to the handles of remote participants invited to the conversation and a boolean indicating if the conversation is video-enabled. These attributes are essential for understanding the state and participants of an ongoing or initiated conversation.
```swift
let handles: [Handle]
let isVideo: Bool
```
--------------------------------
### Initialize PlayToneAction - Swift
Source: https://developer.apple.com/documentation/livecommunicationkit/playtoneaction
Initializes a PlayToneAction object to play a sequence of tones representing keypad input. This initializer requires the conversation's unique identifier, the tapped digits, and the specific tone to be played.
```swift
init(conversationUUID: UUID, digits: String, tone: PlayToneAction.Tone)
```
--------------------------------
### Declare TelephonyConversationManager Class
Source: https://developer.apple.com/documentation/livecommunicationkit/telephonyconversationmanager
Declares the final class TelephonyConversationManager, which is part of the LiveCommunicationKit framework for initiating cellular network conversations. This class is available on iOS, iPadOS, and Mac Catalyst starting from version 26.0.
```swift
final class TelephonyConversationManager
```
--------------------------------
### Define JoinConversationAction Class
Source: https://developer.apple.com/documentation/livecommunicationkit/joinconversationaction
Defines the JoinConversationAction class, a final class intended for joining incoming conversations. This class is available on iOS, iPadOS, Mac Catalyst, visionOS, and watchOS starting from version 17.4 (or 1.1 for visionOS).
```swift
final class JoinConversationAction
```
--------------------------------
### ConversationManager.Configuration Initializer
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationmanager/configuration-swift.struct/init%28ringtonename%3Aicontemplateimagedata%3Amaximumconversationgroups%3Amaximumconversationsperconversationgroup%3Aincludesconversationinrecents%3Asupportsvideo%3Asupportedhandletypes%3A%29
Initializes a new configuration for a conversation manager with detailed settings for ringtones, icons, conversation limits, and media support.
```APIDOC
## Initializer: ConversationManager.Configuration
### Description
Creates a new configuration for a conversation manager, allowing customization of various aspects like ringtones, icon images, conversation group limits, and media type support (audio/video).
### Method
Initializer
### Endpoint
N/A (This is an initializer for a class)
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```swift
let configuration = ConversationManager.Configuration(
ringtoneName: "my_custom_ringtone",
iconTemplateImageData: nil, // Provide PNG data if available
maximumConversationGroups: 10,
maximumConversationsPerConversationGroup: 5,
includesConversationInRecents: true,
supportsVideo: true,
supportedHandleTypes: [.email, .phoneNumber]
)
```
### Response
#### Success Response (200)
N/A (Initializers do not return HTTP responses)
#### Response Example
N/A
### Parameters Details
- **`ringtoneName`** (String?) - The name of the sound resource in the app bundle for your app’s ringtone.
- **`iconTemplateImageData`** (Data?) - The PNG data for the icon image of your app.
- **`maximumConversationGroups`** (Int) - The maximum number of conversation groups.
- **`maximumConversationsPerConversationGroup`** (Int) - The maximum number of conversations per conversation group.
- **`includesConversationInRecents`** (Bool) - A Boolean value that indicates whether your app includes a conversation in the system’s Recents list after the conversation ends.
- **`supportsVideo`** (Bool) - A Boolean value that indicates whether your app supports video in addition to audio.
- **`supportedHandleTypes`** (Set) - The supported handle types (e.g., email, phone number).
```
--------------------------------
### Conversation Class Overview
Source: https://developer.apple.com/documentation/livecommunicationkit/conversation
Provides details about the Conversation class, its properties, and states.
```APIDOC
## Class Conversation
A type that describes a video or audio conversation.
### Properties
- **localMember** (`Handle?`) - The handle that identifies the local participant to remote participants.
- **state** (`Conversation.State`) - The current state of the conversation.
- **uuid** (`UUID`) - The unique identifier for a conversation.
### Enums
- **State**: Values that describe the current state of a conversation.
- **Event**: Values that tell the system what happened during a conversation.
- **EndedReason**: Values that describe why a conversation ended.
### Structs
- **Update**: A type that describes new, changed, or deleted capabilities and attributes of a conversation.
- **Capabilities**: A type that describes capabilities of a conversation.
### Conforms To
- `Copyable`
- `CustomDebugStringConvertible`
- `Escapable`
- `Observable`
- `Sendable`
- `SendableMetatype`
```
--------------------------------
### Swift: Conversation Duration Property
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationhistorymanager/recentconversation/duration
The 'duration' property represents the length of a conversation in seconds, measured from when the system successfully connected all participants. This property is available on iOS, iPadOS, and Mac Catalyst starting from version 26.0.
```swift
let duration: TimeInterval
```
--------------------------------
### ConversationManagerDelegate Methods
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationmanagerdelegate
This section outlines the methods available for the ConversationManagerDelegate protocol, categorized by their functionality.
```APIDOC
## ConversationManagerDelegate Protocol
Methods for managing conversations and receiving VoIP conversation updates.
### Observing the conversation manager
`func conversationManagerDidBegin(ConversationManager)`
**Description**: Tells the delegate that your app has started a conversation manager.
**Required**: Yes
`func conversationManagerDidReset(ConversationManager)`
**Description**: Tells the delegate that the app has reset the conversation manager.
**Required**: Yes
### Receiving status updates
`func conversationManager(ConversationManager, conversationChanged: Conversation)`
**Description**: Tells the delegate that a conversation changed.
**Required**: Yes
`func conversationManager(ConversationManager, didActivate: AVAudioSession)`
**Description**: Tells the delegate that the app activated the conversation’s audio session.
**Required**: Yes
`func conversationManager(ConversationManager, didDeactivate: AVAudioSession)`
**Description**: Tells the delegate that the app deactivated a conversation’s audio session.
**Required**: Yes
### Performing actions
`func conversationManager(ConversationManager, perform: ConversationAction)`
**Description**: Tells the delegate that the system requires a conversation action.
**Required**: Yes
`func conversationManager(ConversationManager, timedOutPerforming: ConversationAction)`
**Description**: Tells the delegate that a conversation action wasn’t completed and timed out.
**Required**: Yes
```
--------------------------------
### Get ConversationHistoryManager Shared Instance (Swift)
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationhistorymanager/sharedinstance
Retrieves the singleton instance of `ConversationHistoryManager`. This instance is used to manage conversation history within the LiveCommunicationKit framework. It is available on iOS 26.0+, iPadOS 26.0+, and Mac Catalyst.
```swift
static let sharedInstance: ConversationHistoryManager
```
--------------------------------
### ConversationManager Initialization
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationmanager
Provides details on how to create and configure a new ConversationManager instance.
```APIDOC
## Initializing ConversationManager
### Description
Creates a new conversation manager with a given conversation configuration.
### Method
`convenience init(configuration: ConversationManager.Configuration)`
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
- **configuration** (ConversationManager.Configuration) - Required - The configuration of a conversation manager.
### Request Example
```swift
let configuration = ConversationManager.Configuration(/* ... */)
let manager = ConversationManager(configuration: configuration)
```
### Response
#### Success Response (200)
N/A (Initializers do not return a value in this context).
#### Response Example
N/A
```
--------------------------------
### Declare PauseConversationAction Class (Swift)
Source: https://developer.apple.com/documentation/livecommunicationkit/pauseconversationaction
Declares the PauseConversationAction class, a fundamental component for managing conversation media streams. This class is available on iOS, iPadOS, Mac Catalyst, visionOS, and watchOS starting from version 17.4 (or 1.1 for visionOS).
```swift
final class PauseConversationAction
```
--------------------------------
### Handle.Kind Cases
Source: https://developer.apple.com/documentation/livecommunicationkit/handle/kind
Represents the specific types of handles that can identify a participant. These include an email address, a phone number, or an unspecified generic type. These cases are fundamental to distinguishing how a participant is referenced.
```swift
case emailAddress
case phoneNumber
case generic
```
--------------------------------
### Define StartCellularConversationAction Structure
Source: https://developer.apple.com/documentation/livecommunicationkit/startcellularconversationaction
Defines the structure for the StartCellularConversationAction, which is used to initiate a cellular conversation. This action leverages the system's default calling application for routing.
```swift
struct StartCellularConversationAction
```
--------------------------------
### Declare MuteConversationAction Class (Swift)
Source: https://developer.apple.com/documentation/livecommunicationkit/muteconversationaction
Declares the MuteConversationAction class, a type representing an action to mute or unmute a conversation. This class is part of the LiveCommunicationKit framework and is available on iOS, iPadOS, Mac Catalyst, visionOS, and watchOS starting from version 17.4.
```swift
final class MuteConversationAction
```
--------------------------------
### StartConversationAction
Source: https://developer.apple.com/documentation/livecommunicationkit/startconversationaction
Represents an action to initiate an outgoing conversation, causing remote participants' devices to ring.
```APIDOC
## Class: StartConversationAction
### Description
An action that starts an outgoing conversation and causes the devices of a remote participant to ring.
### Initializer
#### `init(conversationUUID: UUID, handles: [Handle], isVideo: Bool)`
Creates an action that starts an outgoing conversation.
### Attributes
#### `handles: [Handle]`
The handles of all remote members who receive an invite to join the conversation.
#### `isVideo: Bool`
A value that specifies if the conversation contains a video stream.
### Methods
#### `fulfill(dateStarted: Date)`
Indicates that a local participant successfully started a conversation.
### Inheritance
This class inherits from `ConversationAction`.
```
--------------------------------
### Perform Conversation Actions (Swift)
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationmanager/perform%28_%3A%29
The `perform(_:)` method asynchronously executes a series of actions for a given conversation. It takes an array of `ConversationAction` objects as input and can throw errors if the operation fails. This method is crucial for managing the flow of conversations within the LiveCommunicationKit framework.
```swift
final func perform(_ actions: [ConversationAction]) async throws
```
--------------------------------
### Access Conversation Attributes - Swift
Source: https://developer.apple.com/documentation/livecommunicationkit/conversationhistorymanager/recentconversation
Provides access to key attributes of a recent conversation, including its start date, direction, duration, participant handles, read status, and overall status. These properties allow for detailed inspection of conversation metadata.
```swift
let date: Date
let direction: ConversationHistoryManager.RecentConversation.Direction
let duration: TimeInterval
let handles: [Handle]
let isRead: Bool
let status: ConversationHistoryManager.RecentConversation.Status
```