Transmission de variables de contexte à la Agent actif messagerie instantanée et Agent virtuel à la messagerie instantanée
Vous pouvez transmettre des variables de contexte de messagerie instantanée lors du démarrage d’une session de messagerie instantanée en transmettant le contextData paramètre.
Vous pouvez transmettre cette valeur à l’aide des NowChatService : startChat(contextData : [string : Any] ? = nil, _ completion : @escaping (Result<Void, NowChatServiceError>) -> Void) fonctions.
Pour plus d’informations sur les variables de contexte de messagerie instantanée, reportez-vous à la section Live agent chat context variables.
En outre, vous pouvez également transmettre un paramètre facultatif NowChatConfiguration lors du démarrage d’une session de chat pour modifier certains comportements de NowChat.
- closePrompt: texte d’invite qui s’affiche avant de quitter une fenêtre de messagerie instantanée. Vous définissez ce texte d’invite via les paramètres suivants :
- header: valeur de chaîne pouvant être nullée qui s’affiche dans l’en-tête de l’invite.
- message: valeur de chaîne qui apparaît dans le corps principal de l’invite.
- acceptButtonTitle: valeur de chaîne qui apparaît sur le bouton primaire de l’invite. Ce bouton ferme la fenêtre de messagerie instantanée.
- declineButtonTitle: valeur de chaîne qui apparaît sur le bouton secondaire de l’invite. Ce bouton permet de fermer l’invite sans fermer la fenêtre de messagerie instantanée.
- disabledFeatures: liste des fonctionnalités de NowChat à désactiver. Reportez-vous à la classe d’énumération NowChatConfiguration.Feature pour obtenir la liste des fonctionnalités que vous pouvez désactiver.
- conversationOptions: liste des options de conversation à appliquer à Now Chat. Consultez la classe d’énumération NowChatConvestation.ConversationOption pour obtenir la liste des options que vous pouvez appliquer.
- uiConfiguration: valeur UIConfiguration utilisée pour configurer les composants de l’interface utilisateur dans Now Chat.
L’exemple de code suivant montre comment appeler cette méthode :
// 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()
}
}