The Control History APIs allow brands to decide which historical or current conversations displays to the consumer when opening the conversation screen. For example, brands can choose to present only the last 180 days of conversation history. Use these APIs when calling showConversation.

The APIs let brands:

  • control which conversations will be presented by status (open/closed), and
  • control the time frame of presented conversations (by days).

Important notes

  • If no conversations match the provided filter, an empty state presents with a message. The default message is "There are no conversations at this time." You can configure the UI elements of the state.

    • Change the text: change the value of conversationEmptyState.

    • Change the text color: change LPConfig → conversationEmptyStateTextColor.

  • When opening the window with closed conversations only, the window opens as a view only mode.

  • To enable the presentation of the Welcome Message, the following configuration needs to be set to true: enableWelcomeMessageForControlHistoryAPI

To see more about the Welcome Message with Quick Replies, visit the following page.

Parameters

LPConversationViewParams includes LPConversationHistoryControlParam:

class LPConversationHistoryControlParam: NSObject {
    var historyConversationsStateToDisplay: LPConversationsHistoryStateToDisplay (default is .all)
    var historyConversationsMaxDays: UInt?
    var historyConversationMaxDaysType: LPConversationHistoryMaxDaysDateType?
}

You have three relevant parameters for LPConversationHistoryControlParam:

LPConversationsHistoryStateToDisplay

Used to present open conversations or closed conversations or all conversations. Updated: To present all conversations please use the enum ".all"

   enum LPConversationsHistoryStateToDisplay: Int {
       case open
       case close
       case all
   }

historyConversationsMaxDays

Used to choose how much conversation history presents to the consumer by days. Not providing a value allows consumers to see the last 2 conversations (more can be seen by scrolling up to fetch additional conversations if stored on the local database, otherwise they'll be retrieved from the LP server).

When using this property, you must also use LPConversationHistoryMaxDaysDateType.

LPConversationHistoryMaxDaysDateType

Used to decide whether to count the days from the conversation start date or end date. If not providing a value, the start date is the default.

enum LPConversationHistoryMaxDaysDateType: Int {
    case startConversationDate
    case endConversationDate
}

Code sample

 func showConversation() {

    let conversationQuery = LPMessagingSDK.instance.getConversationBrandQuery(accountNumber)

    let historyControlParam = LPConversationHistoryControlParam(historyConversationsStateToDisplay: .open,
                                                                historyConversationsMaxDays: 180,
                                                                historyMaxDaysType: .startConversationDate)

    let conversationViewParams = LPConversationViewParams(conversationQuery: self.conversationQuery!,
                                                          containerViewController: self,
                                                          isViewOnly: false,
                                                          conversationHistoryControlParam: historyControlParam)
    let authenticationParams = LPAuthenticationParams(authenticationCode: "zcKZeImY5h7xOVPj",
                                                      jwt: nil,
                                                      redirectURI: nil)
    LPMessaging.instance.showConversation(conversationViewParams, authenticationParams: authenticationParams)
}

Optional: Code sample to enable a welcome message

 func showConversation() {
    // Configuration needs to be set to true to present Welcome Message if one is configured
    LPConfig.defaultConfiguration.enableWelcomeMessageForControlHistoryAPI = true

    // Welcome Message Configuration

    var messageTitle = "Hello Mr.Smith, how may we help you?\n"

    let welcomeMessageParam = LPWelcomeMessage(message: messageTitle,
                                               frequency: .everyConversation)

    // Optional - Configuring Quick Replies
    let options = [
        LPWelcomeMessageOption(value: "My latest bill statement", displayName: "1️⃣ Bill"),
        LPWelcomeMessageOption(value: "A recent order placed", displayName: "2️⃣ Order"),
        LPWelcomeMessageOption(value: "Technical support", displayName: "3️⃣ Support"),
        LPWelcomeMessageOption(value: "Account information", displayName: "4️⃣ Account")
    ]

    do {
        try welcomeMessageParam.set(options: options)
    } catch {
        print(error.localizedDescription)
    }

    let conversationQuery = LPMessagingSDK.instance.getConversationBrandQuery(accountNumber)

    let historyControlParam = LPConversationHistoryControlParam(historyConversationsStateToDisplay: .open,
                                                                historyConversationsMaxDays: 180,
                                                                historyMaxDaysType: .startConversationDate)

    let conversationViewParams = LPConversationViewParams(conversationQuery: self.conversationQuery!,
                                                          containerViewController: self,
                                                          isViewOnly: false,
                                                          conversationHistoryControlParam: historyControlParam,
                                                          welcomeMessage: welcomeMessageParam)

    let authenticationParams = LPAuthenticationParams(authenticationCode: "zcKZeImY5h7xOVPj",
                                                      jwt: nil,
                                                      redirectURI: nil)
    LPMessaging.instance.showConversation(conversationViewParams, authenticationParams: authenticationParams)
}