Transmission de variables de contexte à la Agent actifAgent virtuel 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, _ complétion : @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 apparaît dans l’en-tête de l’invite.
- message: valeur de chaîne qui s’affiche 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 d’ignorer l’invite sans fermer la fenêtre de messagerie instantanée.
- disabledFeatures: liste des fonctionnalités Now Chat à 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. Reportez-vous à 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 d’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()
}
}