Now ChatServiceklasse: IOS
Die Now Chatservice Klasse stellt virtuelles und bereit ServicemitarbeiterChat-Fähigkeiten.
Mit dieser Klasse können Sie Chat-Services starten und stoppen, Chat-Sitzungen starten, eine Chat-Anwenderoberfläche erstellen und ungelesene Nachrichten abonnieren/abbestellen.
| Name | Beschreibung |
|---|---|
| konfigurieren | Konfigurationseinstellungen, die bei der Initialisierung des Service bereitgestellt wurden. Datentyp: Jetzt Servicekonfiguration |
| Instanzversion | Version des zugeordneten ServiceNowInstanz, z. B. vancouver oder xanadu. Datentyp: Zeichenfolge |
| Netzwerkservice | Netzwerkservice, der diesem Chatservice zugeordnet ist. Datentyp: Netzwerkservice |
| Sitzungstyp | Typ der Sitzung. Mögliche Werte:
Datentyp: Sitzungstyp |
NowChatService – init(Konfiguration: NowServiceConfiguration, Delegierter: NowChatServiceDelegate?, coreServiceProvider: NowCoreServiceProviding? = Null)
Initialisiert eine neue NowChatService-Instanz.
| Name | Typ | Beschreibung |
|---|---|---|
| konfigurieren | Jetzt Servicekonfiguration | Konfigurationsinformationen, die zum ordnungsgemäßen Initialisieren des Service erforderlich sind. |
| Delegierter | NowChatservice-Delegierter | Optional. NowChat-Rückrufdelegierungsobjekt, das das NowChatServiceDelegate-Protokoll implementiert. Standard: Null |
| CoreServiceanbieter | Jetzt CoreServicebereitstellung | Optional. Objekt, das das NowCoreServiceProviding-Protokoll implementiert. Bietet Zugriff auf Now Chat-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(Design: NowChatThemeable, chatConfiguration: NowChatConfiguration? = null) -> Result<UIViewController, NowChatServiceError>)
Erstellt UIViewController Die die Chat-Anwenderoberfläche hostet.
Obwohl diese Funktion die Chat-UI erstellt, müssen Sie die Chat-Sitzung trotzdem initiieren, indem Sie aufrufen StartChat() Funktion. Sie sollten diesen Anruf tätigen, wenn die Chat-UI sichtbar wird. Weitere Informationen finden Sie in der zugehörigen Beispielanwendung und Mobile SDK Entwicklerleitfaden – iOS.
| Name | Typ | Beschreibung |
|---|---|---|
| Design | Now ChatThemeable Objekt | Designinformationen für die zu erstellende Chat-UI. |
| Chatkonfiguration | Now Chatkonfiguration? | Optional. Optionen, die auf die Chatsitzung angewendet werden sollen. |
| 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
}
}
Now ChatService – shutdown()
Fährt den Chat-Service herunter, einschließlich aller aktiven Chatsitzungen.
Nach dem Aufrufen dieser Funktion wird der zugeordnet Now Chatservice Ist inaktiv und kann nicht wiederverwendet werden. Um eine weitere Chatsitzung einzurichten, erstellen Sie eine neue Now Chatservice Instanz durch Aufrufen von Now Chat.makeChatService() Funktion.
| 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 (Result<Void, NowChatServiceError>) -> Annullieren)
Startet eine Chatsitzung und führt einen Abschlussblock aus, nachdem die Chatsitzung gestartet wurde.
| Name | Typ | Beschreibung |
|---|---|---|
| ContextData | [Zeichenfolge: Beliebig]? | Optional. Wörterbuch mit Chat-Kontextvariablen, 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: @Escape (Int) -> Stornieren)
Abonniert den Listener für die Anzahl ungelesener Nachrichten.
| Name | Typ | Beschreibung |
|---|---|---|
| Abfrageintervall | Zeitintervall | Häufigkeit, mit der der der Webservice nach der Anzahl der ungelesenen Chatnachrichten abgefragt werden soll. Einheit: Sekunden |
| Abschluss | @Escaping (Int) -> Annullieren) | Abschlusshandler, der aufgerufen werden soll, um die Anzahl der ungelesenen Chatnachrichten 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 den Empfang des Listeners für die Anzahl ungelesener Nachrichten ab.
| 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
}