컨텍스트 변수를 및 가상 에이전트 채팅에 라이브 에이전트 전달
채팅 세션을 시작할 때 매개변수를 전달하여 채팅 컨텍스트 변수를 전달할 수 있습니다 contextData .
함수를 사용하여 이 값을 전달할 수 있습니다 NowChatService - startChat(contextData: [String: Any]? = nil, _ completion: @escaping (결과<무효, NowChatServiceError>) -> 무효) .
채팅 컨텍스트 변수에 대한 자세한 내용은 다음 문서를 참조하십시오 Live agent chat context variables.
또한 채팅 세션을 시작할 때 선택적 NowChatConfiguration 매개변수를 전달하여 NowChat의 일부 동작을 수정할 수도 있습니다.
- closePrompt: 채팅 창을 나가기 전에 나타나는 프롬프트 텍스트입니다. 다음 매개변수를 통해 이 프롬프트 텍스트를 정의합니다.
- header: 프롬프트의 헤더에 표시되는 Nullable 문자열 값입니다.
- message: 프롬프트의 본문에 표시되는 문자열 값입니다.
- acceptButtonTitle: 프롬프트의 기본 버튼에 표시되는 문자열 값입니다. 이 버튼을 누르면 채팅 창이 닫힙니다.
- declineButtonTitle: 프롬프트의 보조 버튼에 표시되는 문자열 값입니다. 이 버튼은 채팅 창을 닫지 않고 프롬프트를 해제합니다.
- disabledFeatures: 비활성화할 NowChat 기능 목록입니다. 비활성화할 수 있는 기능 목록은 NowChatConfiguration.Feature 열거형 클래스를 참조하십시오.
- conversationOptions: NowChat에 적용할 대화 옵션 목록입니다. 적용할 수 있는 옵션 목록은 NowChatConvestation.ConversationOption 열거형 클래스를 참조하십시오.
- uiConfiguration: NowChat에서 UI 구성요소를 구성하는 데 사용되는 UIConfiguration 값입니다.
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
// 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()
}
}