NowChatService-Klasse – iOS
Die NowChatService- Klasse stellt Virtual- und Servicemitarbeiter -Chat-Fähigkeiten bereit.
Mit dieser Klasse können Sie Chatservices starten und anhalten, Chatsitzungen starten, eine Chatbenutzeroberfläche erstellen und ungelesene Nachrichten abonnieren bzw. abbestellen.
| Name | Beschreibung |
|---|---|
| konfigurieren | Konfigurationseinstellungen, die bei der Initialisierung des Service angegeben wurden. Datentyp: NowServiceConfiguration |
| instanceVersion | Version der zugeordneten Instanz ServiceNow, z. B. Vancouver oder Xanadu. Datentyp: Zeichenfolge |
| Netzwerkservice | Netzwerkservice, der diesem Chatservice zugeordnet ist. Datentyp: NetworkService |
| Sitzungstyp | Typ der Sitzung. Mögliche Werte:
Datentyp: SessionType |
NowChatService – init(configuration: NowServiceConfiguration, delegierter: NowChatServiceDelegate?, coreServiceProvider: NowCoreServiceProvider? = nil)
Initialisiert eine neue NowChatService-Instanz.
| Name | Typ | Beschreibung |
|---|---|---|
| konfigurieren | NowServiceKonfiguration | Konfigurationsinformationen, die zum ordnungsgemäßen Initialisieren des Service erforderlich sind. |
| Delegierter | Now Chat Service Delegierter | Optional. NowChat-Rückruf-Delegierten-Objekt, das das NowChatServiceDelegate-Protokoll implementiert. Standard: null |
| coreServiceProvider | NowCoreServicebereitstellung | Optional. Objekt, das das NowCoreServiceProvidering-Protokoll implementiert. Bietet Zugriff auf NowChat-Services. Standard: null |
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
guard let coreService = NowSDK.core() else {
// Error with NowServiceError.sdkNotConfigured
return
}
guard
let instanceUrl = URL(string: "http://sample.service-now.com"),
let serviceConfig = NowSDK.makeServiceConfiguration(for: instanceUrl) else {
// Could not create service –
// NowServiceError.serviceConfigurationInvalid
return
}
let chatService = NowChatService(configuration: serviceConfig, delegate: delegate, coreServiceProvider: coreService)
NowChatService - makeChatUI(theme: NowChatThemeable, chatConfiguration: NowChatConfiguration? = nil) -> Ergebnis<UIViewController, NowChatServiceError> )
Erstellt einen UIViewController, der die Chat-Anwenderoberfläche hostet.
Obwohl diese Funktion die Chat-UI erstellt, müssen Sie die Chatsitzung dennoch initiieren, indem Sie die Funktion startChat() aufrufen. Sie sollten diesen Anruf tätigen, wenn die Chat-UI sichtbar wird. Weitere Informationen finden Sie in der zugehörigen Beispielanwendung und im Mobile SDK Entwicklerhandbuch – iOS.
| Name | Typ | Beschreibung |
|---|---|---|
| Thema | NowChatDesignfähiges Objekt | Designinformationen für die zu erstellende Chat-UI. |
| chatKonfiguration | NowChat-Konfiguration? | Optional. Auf die Chatsitzung anzuwendende Optionen. |
| Typ | Beschreibung |
|---|---|
| Objekt | Erfolg: UIViewController-Objekt, das die Konfigurationsinformationen des UI View Controllers enthält. Fehler: NowChatServiceError-Objekt. Mögliche Fehler:
|
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird, um die Chat-UI zu erstellen.
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
}
}
NowChatService – Herunterfahren ()
Beendet den Chatservice, einschließlich aller aktiven Chatsitzungen.
Nach dem Aufrufen dieser Funktion ist der zugeordnete NowChatService inaktiv und kann nicht wiederverwendet werden. Um eine weitere Chatsitzung einzurichten, erstellen Sie eine neue NowChatService- Instanz, indem Sie die Funktion NowChat.machenChatService() aufrufen.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Keine |
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
private func resetChat() {
chatService?.shutdown()
chatService = nil
initializeChatService()
viewState = makeViewState()
}
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()
}
func makeViewState() -> ViewState {
ViewState(chatEnabled: chatService != nil,
menuItems: menuItems)
}
NowChatService - startChat(contextData: [Zeichenfolge: Beliebig]? = nil, _ Abschluss: @escaping (Ergebnis<Void, NowChatServiceError> ) -> ungültig)
Startet eine Chatsitzung und führt einen Abschlussblock aus, nachdem die Chatsitzung gestartet wurde.
| Name | Typ | Beschreibung |
|---|---|---|
| contextData | [Zeichenfolge: Beliebig]? | Optional. Wörterbuch, das Chat-Kontextvariablen enthält, die an die Chatsitzung übergeben werden. Weitere Informationen zu Chat-Kontextvariablen finden Sie unter Live agent chat context variables. |
| Abschluss | Objekt | Abschlussblock, der nach dem Start der Chatsitzung ausgeführt werden soll. |
| Typ | Beschreibung |
|---|---|
| ungültig oder Zeichenfolge | Rückgabewerte für den Abschlussblock:
Mögliche Fehler:
|
Das folgende Codebeispiel zeigt, wie diese Funktion ohne Kontextdaten aufgerufen wird.
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()
}
}
}
func makeViewState() -> ViewState {
ViewState(chatEnabled: chatService != nil,
menuItems: menuItems)
}
Das folgende Codebeispiel zeigt, wie diese Funktion mit Kontextdaten aufgerufen wird.
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()
}
}
}
func makeViewState() -> ViewState {
ViewState(chatEnabled: chatService != nil,
menuItems: menuItems)
}
NowChatService –subscribeToUnreadMessageCount(pollingInterval: TimeInterval, Abschluss: @escaping (Int) -> Void)
Abonniert den Listener für die Anzahl ungelesener Nachrichten.
| Name | Typ | Beschreibung |
|---|---|---|
| Abfrageintervall | Zeitintervall | Häufigkeit, mit der der Webservice nach der Anzahl ungelesener Chatnachrichten abgefragt wird. Einheit: Sekunden |
| Abschluss | @escaping (Int) -> Ungültig) | Aufzurufender Abschluss-Handler, um die Anzahl der ungelesenen Chat-Nachrichten zu melden. Int: Anzahl der ungelesenen Chatnachrichten. |
| Typ | Beschreibung |
|---|---|
| Keine |
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
…
if viewModel.isPolling {
viewModel.unsubscribeFromUnreadMessageCount()
viewState.pollingInterval = ""
} else {
viewModel.subscribeToUnreadMessageCount(pollingInterval: timeInterval)
}
…
func subscribeToUnreadMessageCount(pollingInterval: TimeInterval) {
chatService.subscribeToUnreadMessageCount(pollingInterval: pollingInterval) { [weak self] count in
self?.unreadMessageCount = count
}
isPolling = true
}
NowChatService – unsubscribeFromUnreadMessageCount()
Hebt das Abonnement für den Empfang des Listeners für die Anzahl ungelesener Nachrichten auf.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Keine |
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
…
if viewModel.isPolling {
viewModel.unsubscribeFromUnreadMessageCount()
viewState.pollingInterval = ""
} else {
viewModel.subscribeToUnreadMessageCount(pollingInterval: timeInterval)
}
…
func unsubscribeFromUnreadMessageCount() {
chatService.unsubscribeFromUnreadMessageCount()
isPolling = false
unreadMessageCount = 0
}