仮想チャットと ライブエージェント チャットを実装する
この Mobile SDK を使用すると、iOSアプリケーション内に仮想チャットサービスと ライブエージェント チャットサービスを簡単に実装できます。
NowChatService API を使用して、チャットユーザーインターフェイスを作成します。UI が作成されたら、チャットセッションを開始してから、チャットサービスを開始する必要があります。他の Mobile SDK 機能サービスと同様に、 NowChatService API は、 startChat() メソッドなど、一部のメソッドに 2 つの実装を提供します。1 つの実装は Combine パブリッシャーを返し、もう 1 つの実装は戻り値を使用して完了ハンドラーを呼び出します。
以下は、チャット 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: [文字列: 任意]?) 関数または NowChatService - startChat(contextData: [String: Any]? = nil, _ completion: @escaping (結果<Void, NowChatServiceError>)) 関数で 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 を参照してください。