Passing context variables to Live Agent and Virtual Agent chat

reference brazil Updated Sep 10, 2026 2 min read mobsdk-ios-pass-con-variables.md
Raw file servicenow.com

You can pass chat context variables when starting a chat session by passing the contextData parameter.

You can pass this value using the NowChatService - startChat(contextData: [String: Any]? = nil, _ completion: @escaping (Result<Void, NowChatServiceError>) -> Void) functions.

For additional information on chat context variables, see Live agent chat context variables.

In addition, you can also pass an optional NowChatConfiguration parameter when starting a chat session to modify some of the behavior of NowChat.

  • closePrompt: Prompt text that appears before exiting a chat window. You define this prompt text through the following parameters:
    • header: Nullable string value that appears on the prompt’s header.
    • message: String value that appears on the prompt’s main body.
    • acceptButtonTitle: String value that appears on the primary button of the prompt. This button closes the chat window.
    • declineButtonTitle: String value that appears on the secondary button of the prompt. This button dismisses the prompt without closing the chat window.
  • disabledFeatures: List of NowChat features to disable. Refer to the NowChatConfiguration.Feature enum class for the list of features that you can disable.
  • conversationOptions: List of conversation options to apply to NowChat. Refer to the NowChatConvestation.ConversationOption enum class for the list of options that you can apply.
  • uiConfiguration: UIConfiguration value used to configure UI components in NowChat.

The following code example shows how to call this method:

JavaScript
// Close Button Typefunc 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 UIfunc 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 sessionfunc 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 serviceprivate 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()  }}
Search documentation
Search document titles and file paths on the brazil branch