가상 및 라이브 에이전트 채팅 구현
이를 Mobile SDK 통해 iOS 애플리케이션 내에서 가상 및 라이브 에이전트 채팅 서비스를 쉽게 구현할 수 있습니다.
NowChatService API를 사용하여 채팅 사용자 인터페이스를 생성합니다. UI가 생성되면 채팅 세션을 시작한 다음 채팅 서비스를 시작해야 합니다. 다른 Mobile SDK 기능 서비스와 마찬가지로 NowChatService API는 startChat() 메서드를 비롯한 일부 메서드에 대해 두 가지 구현을 제공합니다. 한 구현은 Combine 게시자를 반환하고 다른 구현은 반환 결과와 함께 완료 처리기를 호출합니다.
다음은 채팅 UI 및 세션을 초기화하고 시작하는 방법을 보여 주는 샘플 애플리케이션의 코드 조각입니다.
// Create the chat UI
func makeChatScreen() -> UIViewController? {
guard let chatService = chatService else { return nil }
let result = chatService.makeChatUI(theme: CarrascoChatTheme(baseTheme: CarrascoTheme()))
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()
}
}애플리케이션 내에서 채팅 기능을 활용하려면 먼저 인스턴스 ServiceNow 내에서 구성해야 가상 에이전트 합니다. 자세한 내용은 Virtual Agent 문서를 참조하십시오.
및 채팅에 라이브 에이전트가상 에이전트 컨텍스트 변수 전달
또는 NowChatService - startChat(contextData: [string: any]? = nil, _ 완료: @escaping (Result<void, NowChatServiceError>)) 함수에 NowChatService - startChat(contextData: [String: Any]?) 매개변수를 contextData 전달하여 채팅 세션을 시작할 때 채팅 컨텍스트 변수를 전달할 수 있습니다. 채팅 컨텍스트 변수에 대한 자세한 내용은 을 참조하십시오 Live agent chat context variables.
func startChat() {
guard let chatService = chatService else {
debugPrint("Chat service is invalid")
viewState = makeViewState()
return
}
let contextData = ["sys_id": "123456789", "table_name": "wm_task", "active": true] as [String: Any]
chatService.startChat(contextData: contextData) { [weak self] result in
if case .failure(let error) = result {
debugPrint("Chat session initialization failed with error: \(error)")
self?.resetChat()
}
}
}채팅 사용자 인터페이스 테마
makeChatUI() 호출에서 테마 객체를 전달하여 및 가상 에이전트 채팅 UI의 색상을 라이브 에이전트 사용자 지정할 수 있습니다. 사용자 지정할 수 있는 모든 요소의 목록은 을 참조하십시오 NowChatColoring 프로토콜 - iOS. 기본적으로 채팅 UI는 모든 NowSDK UI 요소에 테마를 NowUIColor 사용합니다. 채팅 UI에 테마를 적용하는 방법에 대한 샘플 코드 스니펫은 다음을 NowChatThemeable 프로토콜 - iOS 참조하십시오.