---
sourceDocument: Xanadu API リファレンス
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ja-JP/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - ja-JP

ft:publication_title :

    - Xanadu API リファレンス

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# 仮想チャットと ライブエージェント チャットを実装する

# 仮想チャットと ライブエージェント チャットを実装する {#ariaid-title1}

* リリースバージョン: Xanadu
* 
* 更新日 2024年08月01日
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 所要時間：4分

この Mobile SDK を使用すると、iOSアプリケーション内に仮想チャットサービスと ライブエージェント チャットサービスを簡単に実装できます。
[NowChatService](https://servicenow-prod.fluidtopics.net/uK_YWAqQnCmvhjbRtyg3Bw#NowChatServiceiOSAPI "NowChatService クラスは、仮想チャット機能とライブエージェントチャット機能を提供します。") API を使用して、チャットユーザーインターフェイスを作成します。UI が作成されたら、チャットセッションを開始してから、チャットサービスを開始する必要があります。他の Mobile SDK 機能サービスと同様に、 NowChatService API は、 startChat() メソッドなど、一部のメソッドに 2 つの実装を提供します。1 つの実装は [Combine](https://developer.apple.com/documentation/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](https://www.servicenow.com/docs/access?context=virtual-agent-landing-page&version=xanadu&pubname=xanadu-conversational-interfaces&ft:locale=en-US)」を参照してください。

## ライブエージェントおよび仮想エージェントチャットへのコンテキスト変数の受け渡し {#mobsdk-ios-imp-chat__section_vzg_wqj_k1c}

[NowChatService - startChat(contextData: \[文字列: 任意\]?)](uK_YWAqQnCmvhjbRtyg3Bw#NChatServ-startChat "チャットセッションを開始します。") 関数または [NowChatService - startChat(contextData: \[String: Any\]? = nil, _ completion: @escaping (結果\<Void, NowChatServiceError\>))](uK_YWAqQnCmvhjbRtyg3Bw#NChatServ-startChat_O "チャットセッションを開始し、チャットセッションの開始後に完了ブロックを実行します。") 関数で contextData パラメーターを渡すことで、チャットセッションの開始時にチャットコンテキスト変数を渡すことができます。チャットコンテキスト変数の詳細については、「 [Live agent chat context variables](https://www.servicenow.com/docs/access?context=live-agent-chat-context-vars&version=xanadu&pubname=xanadu-conversational-interfaces&ft:locale=en-US)」を参照してください。  

    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](https://servicenow-prod.fluidtopics.net/GmUUObFTpw5Qwe91KWBzCQ#NowChatColoringiOSProtocol "NowChatColoring プロトコルは、ライブエージェント および 仮想エージェント チャット UI の要素の既定の色を定義します。")」を参照してください。デフォルトでは、チャット UI はすべての NowSDK UI 要素に NowUIColor テーマを使用します。チャットUIにテーマを適用する方法に関するサンプルコードスニペットについては、 [NowChatThemeable プロトコル: iOS](https://servicenow-prod.fluidtopics.net/ImmYNZKZ3AVEc3nR5oVhvg "NowWebThemeable プロトコルには、ネイティブ Web ビューで ServiceNow インスタンスでホストされている Web ページ内で使用される色を上書きできるプロパティが用意されています。") を参照してください。

