目录

简介

需要日志

气泡聊天流

日志分析

步骤1.客户端控制台日志：单击开始聊天.

步骤2. SM ccppublicapps:DB dip to mmca_webhook

步骤3. UCCX MADM:接收构件配置的请求。

第4步：SM Publicapps:200 OK on the Widget Config.

步骤5.客户端控制台日志：对客户端浏览器的响应，以JSON显示详细信息。

步骤6. SM公共应用：传入聊天请求。

步骤7. SM运行时：已创建社交联系人。

步骤8. SM公共应用：将创建的SocialContact更新到公共API。

步骤9. SM运行时：将通知发送到MADM上的CCX Webservice API。

步骤10. UCCX MADM:Web服务显示传入的聊天请求。

步骤11. UCCX MADM:将JMS消息发送到CCX引擎。

步骤12. UCCX MIVR:

步骤13. SM Publicapps:座席加入和聊天会话已启动。

步骤14.客户端控制台日志：座席加入聊天室。

步骤15. SM Publicapps：用户离开聊天室。

步骤16.客户端控制台日志：用户浏览器显示聊天评级成功。

步骤17. SM Publicapps:ccppublicapps从浏览器获得“聊天后”评级。

步骤18. UCCX MIVR:从SM接收的XMPP更新。

步骤19. UCCX MIVR:将聊天评分写入数据库。

简介

本文档介绍气泡聊天流程以及工作气泡聊天的端到端日志分析，可作为解决这些问题的工作参考。

发布了UCCX和SocialMiner(SM)11.6(2)的Unified Contact Center Express(UCCX)解决方案添加了新气泡聊天功能。

气泡聊天（或聊天气泡）功能允许您使用干扰最小、浮动的聊天网络表单与业务联系，该聊天网络表单可随网页移动（滚动），完全可自定义，还可以即时更新任何自定义设置，而无需在网站上重新部署网络表单。

作者：Jayant Suneja、Arunabh Bhattacharjee、Cisco Engineering。

需要日志

为了跟踪整个流程，日志会将聊天发起人（客户）记录到UCCX。

- 客户端控制台日志：以下是最终用户发起聊天时使用的浏览器控制台日志。

- SM日志：ccppublicapps日志、运行时日志、tomcat日志。

- UCCX日志：MIVR日志(带SS_CHAT和SS_ROUTEANDQUEUE调试的引擎日志)、MADM日志(带UCCX_WEBSERVICES的CCX管理日志)。

分析的其他部分（加入聊天室后）与传统聊天流（即Finesse上的SocialMiner Agent小工具与通过XMPP隧道连接的最终客户之间的简单XMPP事件）相同

气泡聊天流

可通过此图中所示的19个步骤来总结流量。

日志中概述了每个步骤。

日志分析

当客户点击Click to chat按钮时，系统会使用聊天构件中的JavaScript代码显示Bubble聊天表单。

气泡聊天表单执行服务器端呈现 — 它获取聊天配置以加载UI，以便最终用户开始聊天。

如果打开聊天构件，您将看到以下格式配置的URL:

https://<SOCIALMINER>/ccp/ui/BubbleChat.html?host=<SOCIALMINER>&wid=<WIDGET_ID>&secure=true

<SOCIALMINER>和<WIDGET_ID>分别是SocialMiner FQDN和小部件ID。

此处收到的配置为JSON形式。

步骤1.客户端控制台日志：单击开始聊天.

1. 最终客户在网页上按Click to chat后，会通过这三个URL访问SM。

2. 请注意，构件ID将在第三个请求中发送。

3. 所有这些OK都应该成功返回，以便加载气泡聊天窗口。

1) GET https://sm-fqdn/ccp/ui/BubbleChat.html?host=sm-fqdn&wid=1&secure=true

[HTTP/1.1 200 OK 0ms]

2) GET https://sm-fqdn/ccp/ui/js/ccp/bubblechat/ccp-chat-components.js

[HTTP/1.1 200 OK 0ms]

3) GET https://sm-fqdn/ccp/bubblechat?wid=1

[HTTP/1.1 200 OK 289ms]

步骤2. SM ccppublicapps:DB dip to mmca_webhook

1. SM对SM Informix数据库上的mmca_webhook表执行db dip，并在构件ID的帮助下获取此传入聊天请求的Webhook URL。在本例中，它是widegetid=1。

2. 然后，SM使用此webhook URL从UCCX获取构件配置。

0000000323: 10.78.91.166: Aug 06 2018 09:24:09.538 +0530: %CCBU_________CCPAPI-6-REST_API_INFO:

Fetching bubble chat config from hook url:

https://uccx-fqdn/uccx-webservices/chat/config/1

0000000324: 10.78.91.166: Aug 06 2018 09:24:09.538 +0530: %CCBU_________CCPAPI-6-REST_API_INFO:

Fetching bubble chat config from hook url:

https://uccx-fqdn/uccx-webservices/chat/config/1

步骤3. UCCX MADM:接收构件配置的请求。

1. 作为MADM一部分的UCCX Web服务收到此请求以获取构件配置。

2. 构件配置包含字体字体、颜色、聊天构件的样式、表单信息等。

3. 然后，UCCX执行数据库读取并从UCCX Informix(db_cra)上的chatbubble表获取构件配置。

4. 此配置通过ccppublicapps API作为JSON响应返回给用户的浏览器。

7199526: Aug 06 09:31:21.235 IST %MADM-UCCX_WEBSERVICES-7-UNK:[http-bio-443-exec-14] ServiceLogger:

Request Url: https://uccx-fqdn/uccx-webservices/chat/config/1

7199527: Aug 06 09:31:21.235 IST %MADM-UCCX_WEBSERVICES-7-UNK:[http-bio-443-exec-14] ServiceLogger:

Match Found for https://uccx-fqdn/uccx-webservices/chat/config/1

7199528: Aug 06 09:31:21.235 IST %MADM-UCCX_WEBSERVICES-7-UNK:[http-bio-443-exec-14] ServiceLogger:

ChatResource: Received a chat config GET request for chat widget id : 1

第4步：SM Publicapps:200 OK on the Widget Config.

SM收到200 OK，用于其发送至CCX以获取聊天构件配置的GET请求。

10.78.91.166: Aug 06 2018 09:31:21.297 +0530: %CCBU_________CCPAPI-6-REST_API_INFO:

Received success response within 100 milliseconds

10.78.91.166: Aug 06 2018 09:32:38.684 +0530: %CCBU__CCPPUBLICAPPS-6-PUBLICAPPS_SESSION_CREATED:

%[session.id=3F8B8C08D7E8144C7B1AD7AF144A4C1E][session_timeout=300]: ccppublicapps: new publicapps

session

步骤5.客户端控制台日志：对客户端浏览器的响应，以JSON显示详细信息。

1. 以下是上述所有操作中客户端收到的JSON响应示例。

2. 此JSON用于在收到时通过配置的字体、问题陈述、颜色等加载气泡聊天窗口。

注意：完成上述所有操作是为了加载气泡聊天窗口，以便客户现在能够填写其详细信息以开始与联系中心聊天。客户提交聊天详细信息后，进一步的流程与传统/传统聊天流程中的流程相同。

GET https://sm-fqdn/ccp/bubblechat?wid=1[HTTP/1.1 200 OK 289ms]

Response:

{"feedId":"100000","postChatRatingEnabled":true,"messages":{"agentJoinTimeoutMsg":"All our customer care representatives are busy. You may wait or try again later.","transcriptPopupPositiveMsg":"Yes","transcriptPopupMsg":"Chat has ended. Do you want to download the chat transcript?","transcriptPopupNegativeMsg":"No","connectivityErrorMsg":"Chat disconnected due to inactivity timeout or connection failure.","agentLeftMsg":" ${agent_alias} has left the chat","ratingButtonText":"Submit","offHourMessage":"Sorry, we are not available at the moment.","textForTypingMsg":"Type your message and press Enter","agentJoinedMsg":" ${agent_alias} has joined","closeChatPopupMsg":"Do you want to close the chat?","closeChatPopupNegativeMsg":"No","ratingLabel":"Rate your chat experience","chatErrorMsg":"Chat service is currently unavailable. Try later.","closeChatPopupPositiveMsg":"Yes","welcomeMessage":"Thank you for contacting us. A customer care representative would assist you soon."},"contextServiceFieldSets":"","chatForm":{"bubbleStyle":{"titleText":"CCBU Care Startup","titleTextColor":"#0AB7D7","buttonText":"Start Chat","buttonTextColor":"#FFFFFF","buttonBackgroundColor":"#0AB7D7","problemStmtCaption":"Choose a problem statement","afterResumeNewChatMsg":"New Message","agentMessageTextColor":"#FFFFFF","agentMessageBackgroundColor":"#0AC391","fontFace":"Helvetica"},"formFields":["Title","Name","Details","Email","PhoneNumber","AddressLine1","AddressLine2","Anything important to note","Teléfono","Cédula"],"problemStatements":{"caption":"Choose a problem statement","statements":[{"statement":"Insuarance","csqTag":"Chat_Csq1"},{"statement":"Debit","csqTag":"Chat_Csq1"},{"statement":"Credit","csqTag":"Chat_Csq1"},{"statement":"Account","csqTag":"Chat_Csq1"}]}},"proactiveChat":false,"name":"Bubble1162","id":1}

步骤6. SM公共应用：传入聊天请求。

SM收到传入的聊天请求并创建社交联系人：

0000001136: 10.78.91.166: Aug 06 2018 09:32:38.692 +0530: %CCBU__CCPPUBLICAPPS-6-CHAT_ROOM_DETAILS: %[Nickname=Jayant Suneja][RoomJid=socialminer_chat.16@conference.127.0.0.1][RoomSubject=Chat with Jayant Suneja][social_contact_id=null]: Create chat room with the following details

步骤7. SM运行时：已创建社交联系人。

社交联系人由SocialMiner引擎（运行时服务）创建。

0000399687: 10.78.91.166: Aug 06 2018 09:32:38.764 +0530: %CCBU__________FEEDS-6-SOCIAL_CONTACT_CREATED: %[SOCIAL_CONTACT_ID=0D66B2241000016500235A740A4E5BA6][SOCIAL_CONTACT_LINK=https://sm-fqdn/ccp/socialcontact/0D66B2241000016500235A740A4E5BA6]: A new social contact was created

步骤8. SM Publicapps:将创建的SocialContact更新到公共API。

已创建社交联系人的更新可在ccppublicapps日志中看到。

0000000337: 10.78.91.166: Aug 06 2018 09:32:38.767 +0530: %CCBU_________CCPAPI-6-CREATE_SOCIAL_CONTACT: SocialContact successfully created with requestId: y3xQxE

0000001142: 10.78.91.166: Aug 06 2018 09:32:38.768 +0530: %CCBU__CCPPUBLICAPPS-6-CHAT_CREATED: %[Contact=https://sm-fqdn/ccp-webapp/ccp/socialcontact/0D66B2241000016500235A740A4E5BA6][Room=socialminer_chat.16@conference.127.0.0.1][Session=3F8B8C08D7E8144C7B1AD7AF144A4C1E][social_contact_id=null]: Chat created

步骤9. SM运行时：将通知发送到MADM上的CCX Webservice API。

从SM向CCX Web服务发送通知，通知CCX有新的传入聊天。

0008541000: 10.78.91.166: Aug 06 2018 09:32:38.940 +0530: %CCBU___NOTIFICATION-6-NOTIFICATION_SUCCEEDED: %[Notification=com.cisco.ccbu.ccp.notification.Notification@1beea47[enqueueTime=1533528158834,rule=com.cisco.ccbu.oamp.omgr.transfer.HttpNotificationRule@15a2eb1[httpUrl=https://uccx-fqdn/uccx-webservices/contact,httpUsername=

,httpPassword=

,sslVerifyCertificates=false,campaignId=100001,tags=[ccx_chat_req],id=100006,name=CCX

Chat Notification for HA - Backup,description=Created by CCX application as part of CCX chat configuration.,changeStamp=1,lastUpdated=1527579740301,ouId=4],screenPopUrl=http://sm-fqdn/results.jsp?scID=0D66B2241000016500235A740A4E5BA6&campaignID=CCX_Chat_Campaign,body=

version="1.0" encoding="UTF-8" standalone="yes"?>

<SocialContact>

<author>Jayant Suneja</author>

<description></description>

<extensionFields>

<extensionField>

<name>AddressLine1</name>

<value>1900</value>

</extensionField>

<extensionField>

<name>AddressLine2</name>

<value>9th street</value>

步骤10. UCCX MADM:Web服务显示传入的聊天请求。

传入聊天联系人由CCX在MADM上接收，并启用了UCCX_WEBSERVICES进行调试。

7199571: Aug 06 09:32:39.079 IST %MADM-UCCX_WEBSERVICES-7-UNK:[http-bio-443-exec-7] ServiceLogger: New incoming contact : <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<contactXML>

<author>Jayant Suneja</author>

<id>0D66B2241000016500235A740A4E5BA6</id>

<integrationAuthTokenGUID>d64fe6ac-9687-4ecd-9f00-0e6ec02c6945</integrationAuthTokenGUID>

<notificationTag>ccx_chat_req</notificationTag>

<publishedDate>1533528158684</publishedDate>

<refURL>http://sm-fqdn/ccp-webapp/ccp/socialcontact/0D66B2241000016500235A740A4E5BA6>

<replyTemplateURL>http://sm-fqdn/multisession/ui/templates/reply/cisco_agent_ms_chat.jsp>

<sourceType>chat</sourceType>

<status>unread</status>

<statusReason>unknown</statusReason>

<statusTimestamp>1533528158756</statusTimestamp>

<tags>

步骤11. UCCX MADM:将JMS消息发送到CCX引擎。

引擎现在通过JMS消息总线通知新联系人，即UCCX MADM(Administration Webservice API)通知MIVR（引擎）对此联系人进行排队。

7199573: Aug 06 09:32:39.080 IST %MADM-UCCX_WEBSERVICES-7-UNK:[http-bio-443-exec-7] ServiceLogger: Sending JMS message to Contact Topic: ContactEvent [operation=ADD, contactXML=ContactXML [author=Jayant Suneja, id=0D66B2241000016500235A740A4E5BA6, replyType=chat, notificationTag=ccx_chat_req, refURL=http://sm-fqdn/ccp-webapp/ccp/socialcontact/0D66B2241000016500235A740A4E5BA6, replyTemplateURL=http://sm-fqdn/multisession/ui/templates/reply/cisco_agent_ms_chat.jsp, integrationAuthTokenGUID=d64fe6ac-9687-4ecd-9f00-0e6ec02c6945, userExtensionFields=[UserExtensionField [name=AddressLine1, value=1900], UserExtensionField [name=AddressLine2, value=9th street], UserExtensionField [name=Anything important to note, value=Bill Issue], UserExtensionField [name=Cédula, value=Bill Issue], UserExtensionField [name=Details, value=Test Bubble Chat], UserExtensionField [name=Email, value=xxxx@gmail.com], UserExtensionField [name=Name, value=Jayant Suneja], UserExtensionField [name=PhoneNumber, value=97xxxxxxxx], UserExtensionField [name=Teléfono, value=Bill Issue], UserExtensionField [name=Title, value=Mr.], UserExtensionField [name=ccxqueuetag, value=Chat_Csq1], UserExtensionField [name=h_chatOrigin, value=CISCO_BUBBLE], UserExtensionField [name=h_chatRoom, value=socialminer_chat.16@conference.127.0.0.1], UserExtensionField [name=h_widgetName, value=Bubble1162]], tags=[ccx_chat_req], sourceType=chat, status=unread, statusReason=unknown, publishedDate=1533528158684, title=CCX_Chat, campaignPublicId=null, statusTimestamp=1533528158756]]

步骤12. UCCX MIVR:

聊天子系统(SS_CHAT)对聊天联系人进行排队，路由和队列子系统(SS_ROUTEANDQUEUE)将聊天分配给座席。这在UCCX引擎日志(MIVR)中看到，启用了SS_CHAT和SS_ROUTEANDQUEUE进行调试。

3722751: Aug 06 09:32:39.144 IST %MIVR-SS_CHAT-7-UNK:[pool-8-thread-15] ChatSubsystemLogger: com.cisco.wf.subsystems.chat.observer.ContactNotificationObserver : Contact Notification received - ContactNotification [requestId=, contactId=0D66B2241000016500235A740A4E5BA6, contactState=QUEUED, handlerQueue=-1, startTime=1533528159105, endTime=-1, queueWaitDuration=0, handlingDuration=-1, terminalStateContact=ChatContact(Contact[id=0D66B2241000016500235A740A4E5BA6,state=QUEUED,dispReason=UNKNOWN]), dispositionReason=UNKNOWN, mediaType=CHAT, sequenceNumber=0, statusTimeStamp=1533528158756]. Notification Type UPDATE

3722752: Aug 06 09:32:39.144 IST %MIVR-SS_ROUTEANDQUEUE-7-UNK:[pool-8-thread-15] RouteAndQueueSubsystemLogger: ALLOCATED Contact [0D66B2241000016500235A740A4E5BA6] to Agent [Jabber@ge.nt1]

向座席发送接受聊天的通知，并在用户和座席之间创建房间。

所有这一切的流程与旧聊天相同，因此不会从此流程的日志中覆盖太多内容。

步骤13. SM Publicapps:座席加入和聊天会话已启动。

创建XMPP隧道后，已建立聊天会话。用户的聊天构件和SocialMiner聊天小工具（在Finesse上托管）现在通过XMPP连接，您可以看到正在发送和接收的在线状态事件。

0000001149: 10.78.91.166: Aug 06 2018 09:32:46.842 +0530: %CCBU__CCPPUBLICAPPS-6-PRESENCE_EVENT_RECEIVED: %[CustomerNickname=Jayant Suneja][Nickname=Jabber@ge.nt1][SocialContactID=0D66B2241000016500235A740A4E5BA6][Status=joined][Username=socialminer_chat.16@conference.127.0.0.1/Jabber@ge.nt1]: Received presence event

0000001152: 10.78.91.166: Aug 06 2018 09:32:51.168 +0530: %CCBU__CCPPUBLICAPPS-6-TYPING_STATUS_RECEIVED: %[From=socialminer_chat.16@conference.127.0.0.1/Jabber@ge.nt1][Nickname=Jabber@ge.nt1][SocialContactID=0D66B2241000016500235A740A4E5BA6][Text=composing]: Typing Status received

步骤14.客户端控制台日志：座席加入聊天室。

客户端日志显示代理加入聊天室。聊天构件中也会显示相同的内容。

Mon Aug 06 2018 09:32:48 GMT+0530 (India Standard Time):CISCO_BUBBLE_CHAT:Received chat room

status event of type chatroom_agent_joined

注意：客户现在可以结束聊天了。与旧式聊天相比，此处的流量略有不同，因为新增了气泡聊天功能的聊天后评分功能。

步骤15. SM Publicapps：用户离开聊天室。

用户离开聊天室，现在座席独自进入聊天室。这也会显示用户离开房间。

0000001185: 10.78.91.166: Aug 06 2018 09:33:26.738 +0530: %CCBU__CCPPUBLICAPPS-6-LEAVE_CHAT_ROOM:

%[ChatRoomName=socialminer_chat.16@conference.127.0.0.1][Nickname=Jayant Suneja]

[User=ccp_chatclient][social_contact_id=0D66B2241000016500235A740A4E5BA6]: Leave chat room

注意：如果启用帖子聊天评级，则用户提交帖子聊天评级后，SM会收到此聊天评级。

步骤16.客户端控制台日志：用户浏览器显示聊天评级成功。

使用用户浏览器上收到的200 OK成功提交聊天评级。

Mon Aug 06 2018 09:33:34 GMT+0530 (India Standard Time):CISCO_BUBBLE_CHAT:Feedback submitted

successfully. Response code: 200

Mon Aug 06 2018 09:33:34 GMT+0530 (India Standard Time):CISCO_BUBBLE_CHAT:Successfully ended

the chat session. Response code: 200 ccp-chat-components.js:1:14634

Mon Aug 06 2018 09:33:34 GMT+0530 (India Standard Time):CISCO_BUBBLE_CHAT:Successfully cleaned up

步骤17. SM Publicapps:ccppublicapps从浏览器获得“聊天后”评级。

对SM收到的反馈进行评分。

10.78.91.166: Aug 06 2018 09:33:34.277 +0530: %CCBU__CCPPUBLICAPPS-6-CHAT_FEEDBACK_RECEIVED :

%[ChatFeedback=com.cisco.ccbu.ccp.publicapps.api.chat.ChatFeedback@d82623[rating=4]][Session=

3F8B8C08D7E8144C7B1AD7AF144A4C1E][social_contact_id=0D66B2241000016500235A740A4E5BA6]:

Received chat feedback

注意：当SM收到包含评分信息的聊天反馈时，该信息首先保存在SM数据存储上的社交联系人中，然后通知CCX。如果SM datastore发生故障，提交聊天评级会失败，并显示“CCPPUBLICAPPS-3-UPDATE_CHAT_SOCIALCONTACT_EXTENSION_FIELD_FAILED”片段

步骤18. UCCX MIVR:从SM接收的XMPP更新。

SM向CCX发送XMPP更新，通知它从最终用户收到的评级。

3723269: Aug 06 09:33:34.290 IST %MIVR-SS_CHAT-7-UNK:[Smack Packet Reader (1)] ChatSubsystemLogger: createXMPPSession: PacketExtensionProvider.parseExtension:<SocialContact><campaignPublicId>CCX_Chat_Campaign</campaignPublicId><extensionFields><extensionField><name>h_chatRoom</name><value>socialminer_chat.16@conference.127.0.0.1</value></extensionField><extensionField><name>h_chatOrigin</name><value>CISCO_BUBBLE</value></extensionField><extensionField><name>C&#233;dula</name><value>Bill Issue</value></extensionField><extensionField><name>Details</name><value>Test Bubble Chat</value></extensionField><extensionField><name>PhoneNumber</name><value>97xxxxxxxx</value></extensionField><extensionField><name>h_agentName</name><value>Jabber@ge.nt1</value></extensionField><extensionField><name>h_rating</name><value>4</value>

步骤19. UCCX MIVR:将聊天评分写入数据库。

提交的聊天评分会写入CCX数据库并保存在textratingdetail表中，此表是UCCX 11.6(2)上新添加的表。

此表的主要用途是存储聊天评级以供报告。

3723276: Aug 06 09:33:34.299 IST %MIVR-SS_ROUTEANDQUEUE-7-UNK:[Smack Listener Processor (1)]

RouteAndQueueSubsystemLogger: com.cisco.wf.subsystems.routeandqueue.aggregator.historical.

HistoricalManager : Writing Historical Record: TRDR: ContactID=0D66B2241000016500235A740A4E5BA6,

rating=4, ratingTime=java.util.GregorianCalendar[time=1533528214299,areFieldsSet=true,

areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,

useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,

YEAR=2018,MONTH=7,WEEK_OF_YEAR=32,WEEK_OF_MONTH=2,DAY_OF_MONTH=6,DAY_OF_YEAR=218,DAY_OF_WEEK=2,

DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=4,HOUR_OF_DAY=4,MINUTE=3,SECOND=34,MILLISECOND=299,

ZONE_OFFSET=0,DST_OFFSET=0]