CXone Mobile SDK事件圖
此頁面提供聊天互動期間發生的常見事件的圖表和說明。
應用程式變為活躍狀態
此序列圖可擷取行動應用程式變為活躍、準備聊天、處理訪客和客戶資訊以及與後端服務通訊時的流程。 如果發生任何錯誤,則會進行適當處理並記錄。
初始狀態
-
SDK 的初始狀態設定為initial。
-
行動應用程式進入前台。
聊天準備:
-
使用者透過呼叫prepare(brandId:channelId:)啟動聊天準備。
-
如果聊天狀態不是初始狀態或離線狀態,則傳回IllegalChatStateError。
-
否則,SDK 將聊天狀態設定為preparing並用onChatUpdated()通知 UI。
通道配置:
-
SDK 透過getChannelConfiguration()向後端請求通道配置。
-
如果伺服器發生錯誤,則會傳回ServerError,並且聊天狀態將重設為initialize。
-
否則,將接收通道配置,並且 SDK 會建立目標 ID。
-
如果訪客 ID 或客戶 ID 為null,則會在本地建立並儲存。
訪客與客戶處理:
-
SDK 在後端呼調用createOrUpdateVisitor(visitorId:customerId:deviceToken:)。
-
如果伺服器發生錯誤,聊天狀態將重設為initialize。
-
否則,訪客和客戶處理為成功。
聊天準備狀態:
-
聊天狀態設定為prepared。
-
UI 透過onChatUpdated()進行通知。
-
在行動應用程式和後端之間追蹤頁面瀏覽量分析。
應用程式進入後台
此序列圖可擷取行動應用程式進入後台、處理頁面視圖追蹤以及與後端服務通訊時的流程。 如果出現任何錯誤,都會得到適當的處理。 當應用程式進入後台時,這表示它不再是您在裝置上看到或與之互動的主要事項。 想像一下您正在使用訊息應用程式,然後按主頁按鈕或切換到另一個應用程式。 訊息傳遞應用程式現在位於後台。 它仍在運行,但您沒有主動使用。 當您最小化應用程式、切換到不同的應用程式或鎖定手機時,會發生這種情況。 應用程式仍然存在,但不再位於前台。
應用程式進入後台:
-
UI 會顯示一個方塊,指示應用程式正在進入背景。
-
UI 使用pageViewEnded通知 SDK 頁面視圖已結束。
-
後端收到pageViewEnded事件。
-
如果出現伺服器錯誤,則會進行處理。
-
否則,事件成功。
-
斷開連接與狀態處理:
-
UI 使用disconnect()啟動斷開連接。
-
根據當前狀態:
-
如果準備,SDK 將狀態設定為initial。
-
如果已經準備好,SDK 會斷開通訊端並將狀態設為prepared。
-
檢視頁面
此序列圖表示使用者在行動應用程式中查看頁面時的流程,包括與 SDK 和後端服務的互動。 它顯示使用者查看頁面,追蹤造訪詳細資訊以及與後端服務通訊時的分析事件。 如果出現任何錯誤,都會得到適當的處理。
應用程式啟動參考:
-
此圖表引用應用程式進入活躍事件。
查看頁面事件:
-
使用者查看頁面,UI 透過viewPage(title:url:)通知 SDK。
-
檢查聊天模式:
-
如果未準備好,則傳回illegalChatStateError。
-
否則,將檢查造訪詳細資訊是否過期。
-
如果過期,則會建立新的造訪詳細資訊(UUID 和過期時間)。
-
如果有效,SDK 會調整目前到期時間。
-
-
如果未傳送最後查看的頁面,則 SDK 會結束頁面檢視。
-
儲存目前最後查看的頁面標題、URI 和時間戳記。
-
如果發生故障,例如伺服器錯誤,則會處理。
-
後端互動:
-
SDK 與後端服務通訊:
-
visitorVisit(date:)被調用來記錄造訪。
-
pageView(title:uri:timestamp)被調用來記錄頁面視圖。
-
如果出現伺服器錯誤,則會進行處理。
-
打開聊天
此序列圖可擷取使用者開啟聊天、處理 OAuth 以及與後端服務建立連接時的流程。 如果出現任何錯誤,都會得到適當的處理。
應用程式啟動參考:
-
此圖表引用應用程式進入活躍事件。
聊天開始:
-
應用程式使用者開啟聊天,UI 啟動與connect()的連接。
-
檢查聊天狀態:
-
如果連接,SDK 會建立WebSocket連接。
-
如果是初始或準備,則傳回IllegalChatStateError。
-
如果準備好,將檢查聊天模式:
-
如果即時聊天且即時聊天狀態為離線,則聊天狀態設定為offline。
-
否則,建立WebSocket連接。
-
OAuth處理取決於它是啟用還是停用。
-
-
OAuth處理:
-
如果啟用OAuth:
-
SDK 重新連接reconnectCustomerEventData(accessToken:)。
-
如果出現伺服器錯誤,則會進行處理。
-
否則,收到CustomerReconnectedEvent。
-
-
如果OAuth被停用:
-
SDK 透過authorizeCustomerEventData(authorizationCode:codeVerifier:)進行授權。
-
如果出現伺服器錯誤,則會進行處理。
-
否則,接收CustomerAuthorizedEvent,並儲存存取權杖和客戶身份。
-
聊天連接狀態:
-
聊天狀態設定為connected。
-
UI 透過onChatUpdated()進行通知。
-
根據聊天是單執行緒 在單執行緒應用程式中,每位聯絡人都只能有一個聊天執行緒。 聯絡人與貴組織的任何互動都將在該聊天執行緒中進行。或多執行緒 在多執行緒應用程式中,聯絡人可以根據需要建立多個執行緒來討論新主題。 這些執行緒可同時執行。,顯示相關的聊天視圖。
單執行緒
此序列圖擷取使用者與單執行緒 在單執行緒應用程式中,每位聯絡人都只能有一個聊天執行緒。 聯絡人與貴組織的任何互動都將在該聊天執行緒中進行。聊天互動、處理執行緒恢復以及與後端服務通訊時的流程。 如果出現任何錯誤,都會得到適當的處理。
應用程式啟動參考:
-
此圖引用開放聊天事件。
執行緒恢復:
-
SDK 從本機儲存載入執行緒 ID。
-
如果來自外部平台的任何執行緒 ID 儲存在本機,SDK 將使用RecoverMessagingThreadEvent(threadId:)復原訊息傳遞執行緒。
-
如果沒有可用的 UUID,SDK 會嘗試使用RecoverMessagingThreadEvent(nil)進行復原。
執行緒存在檢查:
-
如果執行緒存在,則收到ThreadRecoveredEvent。
-
聊天和執行緒狀態設定為ready。
-
UI 透過onThreadUpdated()進行通知。
-
-
如果執行緒不存在,則收到ThreadRecoverFailedEvent。
-
聊天狀態設定為就緒。
-
UI 透過onChatUpdated()進行通知。
-
註釋表示不需要執行緒復原。
-
聊天互動:
-
UI 顯示聊天視窗以供使用者與客服專員互動。
多執行緒
此序列圖可擷取使用者與多執行緒 在多執行緒應用程式中,聯絡人可以根據需要建立多個執行緒來討論新主題。 這些執行緒可同時執行。聊天互動、處理執行緒檢索以及與後端服務通訊時的流程。 如果出現任何錯誤,都會得到適當的處理。
應用程式啟動參考:
-
此圖引用開放聊天事件。
執行緒清單檢索:
-
SDK 使用FetchThreadListEvent從後端擷取執行緒清單。
-
如果出現伺服器錯誤,則會進行處理。
-
否則,擷取執行緒清單。
執行緒處理:
-
如果執行緒存在:
-
SDK 將每個執行緒的狀態設為received並載入最後的訊息。
-
執行緒中繼資料已加載,狀態設定為loaded。
-
聊天狀態設定為ready,並通知 UI。
-
-
如果不存在執行緒:
-
聊天狀態設定為ready,並通知 UI。
-
建立或打開執行緒:
-
如果建立一個新執行緒:
-
使用者開始執行緒建立。
-
-
如果打開現有執行緒:
-
使用者選擇一個執行緒。
-
UI 使用openThread(thread:)開啟執行緒。
-
執行緒從後端復原。
-
如果出現伺服器錯誤,則會進行處理。
-
否則,復原執行緒,並將狀態設為ready。
-
聊天互動:
-
使用者與客服專員進行聊天。
即時聊天
此序列圖展示即時聊天互動的後端流程。 即時聊天是即時數位聊天選項,而聊天訊息是非同步訊息選項,類似於私人訊息或直接訊息。
建立執行緒
此序列圖擷取使用者建立新聊天執行緒、處理執行緒建立以及與 SDK 通訊時的流程。 如果出現任何錯誤,都會得到適當的處理。
使用者詳細資訊和聊天前:
-
如果未提供客戶名稱,UI 將顯示使用者詳細資訊表單視圖。
-
如果聊天前資訊可用,UI 將顯示聊天前表單視圖。
執行緒建立:
-
使用者開始對話。
-
UI 使用createThread(customFields:)開始執行緒建立。
-
如果聊天模式不是多執行緒且執行緒已經存在:
-
返回unsupportedChannelConfigError。
-
將顯示錯誤警報。
-
-
否則:
-
SDK 使用 UUID 在本地建立執行緒。
-
UUID 儲存在本機。
-
執行緒狀態設定為pending。
-
UI 透過onThreadUpdated()進行通知。
-
與客服專員聊天
此序列圖可擷取最終使用者透過聊天與客服專員互動、處理歡迎訊息以及與後端服務通訊時的流程。 如果出現任何錯誤,都會得到適當的處理。
聊天初始化:
-
使用者使用sendMessage(message:)傳送訊息。
-
如果有歡迎消息:
-
SDK 使用SendOutboundMessageEvent(welcomeMessage:)傳送傳出歡迎訊息。
-
如果出現伺服器錯誤,則會進行處理。
-
否則,收到MessageCreatedEvent,並更新UI。
-
-
SDK 使用sendMessageEvent傳送使用者訊息。
-
如果出現伺服器錯誤,則會進行處理。
-
否則,收到MessageCreatedEvent,並更新UI。
-
結束聯絡
此序列圖可擷取使用者結束聊天、處理對話關閉以及與後端服務通訊時的流程。 如果出現任何錯誤,都會得到適當的處理。
聊天結束:
-
使用者按下結束對話。
-
UI 使用endConversation()通知 SDK 結束對話。
-
後端收到EndConversationEvent。
-
如果出現伺服器錯誤,則會進行處理。
-
否則,案例狀態將更改,並且執行緒狀態將設定為closed。
-
UI 透過onThreadUpdated()進行通知。
-
結束聯絡體驗視圖:
-
UI 顯示結束聯絡視圖。
處理大事件
AWSAPI 閘道的限制之一是其在一條訊息中最多只能傳送 128 KB。 要將較大的事件從伺服器傳送到用戶端:
-
在伺服器上,將較大的事件上載到公開可用的 S3 貯體。
-
然後,用戶端可以透過WebSocket僅接收該檔案的 URL,並透過 REST 下載實際的事件正文。