Übergabe von Kontextvariablen an Servicemitarbeiter - und Virtual Agent -Chat
Sie können Chat-Kontextvariablen beim Starten einer Chatsitzung übergeben, indem Sie den Parameter contextData übergeben.
Sie können diesen Wert mit den Funktionen NowChatService - startChat(contextData: [Zeichenfolge: Beliebig]? = nil, _ Abschluss: @escaping (Ergebnis<Void, NowChatServiceError> ) -> ungültig) übergeben.
Weitere Informationen zu Chat-Kontextvariablen finden Sie unter Live agent chat context variables.
Darüber hinaus können Sie beim Starten einer Chatsitzung einen optionalen Parameter NowChatConfiguration übergeben, um einige Verhaltensweisen von NowChat zu ändern.
- closePrompt: Aufforderungstext, der vor dem Beenden eines Chat-Fensters angezeigt wird. Sie definieren diesen Aufforderungstext durch die folgenden Parameter:
- header: Nullfähiger Zeichenfolgenwert, der im Header des Prompts angezeigt wird.
- message: Zeichenfolgenwert, der im Haupttext des Prompts angezeigt wird.
- acceptButtonTitle: Zeichenfolgenwert, der auf der primären Schaltfläche des Prompts angezeigt wird. Diese Schaltfläche schließt das Chat-Fenster.
- declineButtonTitle: Zeichenfolgenwert, der auf der sekundären Schaltfläche des Prompts angezeigt wird. Mit dieser Schaltfläche wird die Aufforderung geschlossen, ohne das Chatfenster zu schließen.
- disabledFeatures: Liste der zu deaktivierenden NowChat-Funktionen. Die Liste der Funktionen, die Sie deaktivieren können, finden Sie in der Aufzählungsklasse NowChatConfiguration.Feature.
- conversationOptions: Liste der Konversationsoptionen, die auf NowChat angewendet werden sollen. Die Liste der Optionen, die Sie anwenden können, finden Sie in der Aufzählungsklasse NowChatConvestation.ConversationOption.
- uiConfiguration: UIConfiguration-Wert, der zum Konfigurieren von UI-Komponenten in NowChat verwendet wird.
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird:
// Close Button Type
func closeButtonText(title: String?) -> NowChatConfiguration.CloseButtonType? {
guard let title else { return nil }
return .text(title)
}
func closeButtonImage(name imageName: String?) -> NowChatConfiguration.CloseButtonType? {
guard let imageName,
let buttonImage = UIImage(named: imageName) else { return nil }
return .image(buttonImage)
}
// Create the chat UI
func makeChatScreen() -> UIViewController? {
guard let chatService = chatService else { return nil }
let closePrompt = NowChatConfiguration.ClosePrompt(header: "Close Window",
message: "Are you sure you want to close the chat window?",
acceptButtonTitle: "Yes",
declineButtonTitle: "No")
let attachmentUploadButton = NowChatConfiguration.AttachmentUploadButton(isVisible: false) // default isVisible = true
let chatConfiguration = NowChatConfiguration(closePrompt: closePrompt,
disabledFeatures: [.startNewConversation],
conversationOptions: [.forceNewConversation, .endConversationOnExit],
uiConfiguration: NowChatConfiguration.UIConfiguration(closeButton: closeButtonImage(name: "arrow.left"), attachmentUploadButton: attachmentUploadButton))
let result = chatService.makeChatUI(theme: CarrascoChatTheme(chatColors: ChatColors()), chatConfiguration: chatConfiguration)
switch result {
case .success(let chatViewController):
return chatViewController
case .failure(let error):
debugPrint("Chat screen creation failed with error: \(error)")
return nil
}
}
// Start the chat session
func startChat() {
guard let chatService = chatService else {
debugPrint("Chat service is invalid")
viewState = makeViewState()
return
}
chatService.startChat { [weak self] result in
if case .failure(let error) = result {
debugPrint("Chat session initialization failed with error: \(error)")
self?.resetChat()
}
}
}
// Initialize the chat service
private func initializeChatService() {
NowChat.makeChatService(instanceUrl: instanceUrl, delegate: self) { [weak self] result in
guard let self = self else { return }
switch result {
case .success(let service):
self.chatService = service
case .failure(let error):
debugPrint("Creating the chat service failed with error: \(error)")
}
self.viewState = self.makeViewState()
}
}