ConversationParamProtocol
protocol ConversationParamProtocol {
func getConversations() -> [Conversation]?
func getConversations(_ predicate: NSPredicate?) -> [Conversation]?
func getClosedConversations() -> [Conversation]?
func getActiveConversation() -> Conversation?
func getOpenConversation() -> Conversation?
func getLatestClosedConversation(_ conversationsCount: Int) -> [Conversation]?
func createNewConversation() -> Conversation
func getQueryType() -> String
func isConversationRelatedToQuery(_ conversation: Conversation) -> Bool
func getBrandID() -> String
func getQueryUID() -> String
func getQueryProperties() -> [String : Any]
}
ConversationQueryType
enum ConversationQueryType: String {
case Brand = "Brand"
case Consumer = "Consumer"
}
LPAuthenticationParams
class LPAuthenticationParams: NSObject {
var authenticationCode: String? // Code Flow authentication or PKCE code flow authentication
var jwt: String? // Implicit Flow authentication
var redirectURI: String? // Code Flow authentication
var codeVerifier: String? // Used for PKCE code flow authentication
var issuerDisplayName: String? //Used to specify IDP in Multiple IDP Scenerio. If not using MIDP leave blank.
var certPinningPublicKeys: [String]? //Cert pining validation public keys
var type: LPAuthenticationType = .signup // User authentication type with "signup" as default
}
LPAuthenticationType
enum LPAuthenticationType: Int {
case signup // The old unauthenticated method is deprecated as of July 2019
case unauthenticated // New unauthenticated method for users without identity
case authenticated // Authenticated users
}
LPCampaignInfo
class LPCampaignInfo: NSObject {
var campaignId: Int
var engagementId: Int
var sessionId: String? // if "nil" SDE will not be sent to Agent
var visitorId: String? // if "nil" SDE will not be sent to Agent
var contextId: String
}
LPConversationCloseReason
enum LPConversationCloseReason: Int {
case agent = 0
case consumer
case system
}
LPConversationHistoryControlParam
class LPConversationHistoryControlParam: NSObject {
var historyConversationsStateToDisplay: LPConversationsHistoryStateToDisplay? // control what kind of conversation to show (Open/Close)
var historyConversationsMaxDays: UInt? //get conversation that Closed/Opens in the last X days
historyConversationMaxDaysType: LPConversationHistoryMaxDaysDateType? //Control if filter the max days by conversation start date or by conversation close date
}
LPConversationHistoryMaxDaysDateType
enum LPConversationHistoryMaxDaysDateType: Int {
case startConversationDate // Default
case endConversationDate
}
LPConversationsHistoryStateToDisplay
enum LPConversationsHistoryStateToDisplay: Int {
case open
case close
}
LPConversationViewParams
class LPConversationViewParams: NSObject {
var conversationQuery: ConversationParamProtocol!
var containerViewController: UIViewController? // nil = WindowMode
var isViewOnly = false
var conversationHistoryControlParam: LPConversationHistoryControlParam? // nil = no history control filter
}
LPEngagementDetails
class LPEngagementDetails: NSObject {
var campaignId: Int // CampaignID
var engagementId: Int // EngagementID
var connectorId: Int
var engagementRevision: Int
var conversationId: String? // Returned when there's an open conversation
var status: String?
var contextId: String?
}
LPGetEngagementResponse
class LPGetEngagementResponse: NSObject {
var engagementDetails: [LPEngagementDetails]? // Optional Engagement Details response in case received from the server, per the Engagement's request
var sessionId: String?
var visitorId: String?
var pageId: String? // PageID of the Engagement. If not sending one in request, a new one will be generated from server in the response
}
LPLog
class LPLog: NSObject {
var timestamp: String?
var className: String?
var funcName: String?
var text: String?
var logLevel: LogLevel?
}
LPMonitoringInitParams
class LPMonitoringInitParams: NSObject {
var appInstallId: String // App Install ID of the Mobile Campaign of the Brand
}
LPMonitoringParams
class LPMonitoringParams: NSObject {
var entryPoints: [String]? // Entry points array of the Mobile App
var engagementAttributes: [[String:Any]]? // Array of Engagement Attributes. SDE will not be sent to Agent if seesionID and visitorID are nil.
var pageId: String? // PageID to send the SDEs for
}
LPNotification
class LPNotification: NSObject {
var text: String
var user: LPUser
var accountID: String
var isRemote: Bool
var toString : String
}
LPSendSDEResponse
class LPSendSDEResponse: NSObject {
var sessionId: String?
var visitorId: String?
var pageId: String? // PageID of the Engagement. If not sending one in request, a new one will be generated from server in the response
}
LPUser
class LPUser: NSObject {
var firstName: String?
var lastName: String?
var profileImageURL: String?
var phoneNumber: String?
var employeeID: String?
var uid: String?
}
LogLevel
enum LogLevel: Int {
case TRACE
case DEBUG
case INFO
case WARNING
case ERROR
case OFF
}
LPPKCEResponce
class LPPKCEResponce: NSObject {
var codeVerifier: String // JWE generated by LP to be added in LPAuthenticationParams to be passed in showConversation() and on reconnect().
var codeChallenge: String // Code Challenge to be used by the brand endpoint.
var codeChallengeMethod: String //Encryption method used for the code challenge currently will always be S256 as that is the only supported type.
}
LPGetConversationsResponse
class LPGetConversationsResponse: NSObject {
var data: [LPConversationDataDetails]? // Contains the data of the open conversation
var links: LPConversationLinksDetails? // Contains the URL of the request made
var message: String? // typically only exists when there is a 4xx or 5xx response from the API
var code: String? // typically only exists when there is a 4xx or 5xx response from the API
}
LPConversationDataDetails
class LPConversationDataDetails: NSObject {
var id: String? // if fullData is false on checkActiveConversationFromServer() this will be the only item returned inside the data object.
var createdTs: String?
var lastUpdatedTs: String?
var brandId: String?
var skillId: String?
var state: String?
var stage: String?
var dialogs: [LPConversationDialogDetails]?
var context: LPConversationContextDetails?
var ttr: LPConversationTTRDetails?
var campaignInfo: LPConversationCampaignDetails?
var csat: LPConversationCSATDetails?
var conversationRollOverHandler: LPConversationRolloverDetails?
}
LPConversationDialogDetails
class LPConversationDialogDetails: NSObject {
var id: String?
var createdTs: String?
var lastUpdatedTs: String?
var conversationId: String?
var metaData: LPconversationMetaDataDetails?
var closedTs: String?
var participants: [LPconversationParticipantDetails]?
var dialogType: String?
var channelType: String?
var state: String?
var closedBy: String?
}
LPconversationMetaDataDetails
class LPconversationMetaDataDetails: NSObject {
var appInstallId: String?
}
LPconversationParticipantDetails
class LPconversationParticipantDetails: NSObject {
var id: String?
var role: String?
var state: String?
}
LPConversationContextDetails
class LPConversationContextDetails: NSObject {
var type: String?
var lang: String?
var clientProperties: LPConversationClientPropertyDetails?
var visitorId: String?
var sessionId: String?
var interactionContextId: String?
}
LPConversationClientPropertyDetails
class LPConversationClientPropertyDetails: NSObject {
var appId: String?
var appVersion: String?
var ipAddress: String?
var deviceFamily: String?
var os: String?
var osVersion: String?
var osName: String?
var integration: String?
var integrationVersion: String?
var timeZone: String?
var deviceModel: String?
var features: [String]?
}
LPConversationTTRDetails
class LPConversationTTRDetails: NSObject {
var type: String?
var value: Int
}
LPconversationCampaignDetails
class conversationCampaignDetails: NSObject
var campaignId: Int
var engagementId: Int
LPConversationRolloverDetails
class LPConversationRolloverDetails: NSObject {
var accountId: String?
var skillId: String?
}
LPConversationLinksDetails
class LPConversationLinksDetails: NSObject {
public var selfValue: String?
}