SNS Logger - WideChat/Rocket.Chat GitHub Wiki
Payload
Subject: 'RC'
TopicArn: `<sns_arn_topic>` (attribute value in the df_config.json, one per DF.agent in the DF.app)
MessageGroupId: `<RC Site Url>`
Message: {
"dialogflowAgentId": "b5983b72-cac6-4f85-b9d0-be61e543dfe6", - added by the logger itself.
"roomId": "be61e543dfe6:wqbFXoeX2kdSZhSyi",
"tabId": "xxxxx" - This will only be added to events sent from the widget, otherwise it will be empty string.
"category": "Agent Transfer",
"action": "failed",
"properties": {"failure_reason": "no agent available"},
"eventType": "customerAction/session", # this label for actions taken by the visitor only. Others are "session" (timeout, agent closes, anything the visitor did not touch)
"timestamp": "2022-09-26T17:50:47.225Z"
}
Events
// Key
// Each actual event has only one Category, one Action, and any number of Properties
{
"Category": [
{"Action1": [
{"Property": "p1"},
{"Property": "p2"}
]},
{"Action2": [
{"Property": "p1"},
{"Property": "p2"}
]}
]
}
---------------------------------------------
// Representation of all possible Rocketchat events
{
"Chat Session": [
{"closed": [
{"close_method": "agent"}, <- SF.app
{"close_method": "chat window"}, <- Widget
{"close_method": "timeout"}, <- SF.app
{"close_method": "visitor_abandonment"} <- RC core?
{"close_method": "df_bot"} <- ?? - maybe DF.app?
{"close_method": "expired_session"} <- SF.app
{"close_method": "liveagent_disconnected"} <- SF.app
{"close_method": "escalation_failure"} <- ??
]},
{"started": [{}]} <- DF.app
],
"Escalation": [
{"attempted": []}, <- DF.app
{"failed": [
{"failure_reason": "outside service hours"}, <- DF.app? - currently not available TODO later.
{"failure_reason": "no agents available"}, <- SF.app - currently represents service hours and any other reason.
{"failure_reason": "salesforce error"}, <- SF.app InternalServer Error / Salesforce configuration error
{"failure_reason": "network/app error"}, <- SF.app - can we distinguish between this error from SF vs. DF?
{"failure_reason": "network/app error"} <- DF.app
{"failure_reason": "invalid target department"} <- DF.app
{"failure_reason": "same target department"} <- DF.app
{"failure_reason": "liveagent bot offline or disabled"} <- DF.app
{"failure_reason": “liveagent session id error"} <- SF.app
{"failure_reason": “error in liveagent request"} <- SF.app
{"failure_reason": “error in checking liveagent response”} <- SF.app
{"failure_reason": “error in liveagent response”} <- SF.app
{"failure_reason": “salesforce internal failure"} <- SF.app
{"failure_reason": “invalid app configuration"} <- SF.app
{"failure_reason": “salesforce chat API not found"} <- SF.app
]},
{"successful": [
{"queue_time": "<seconds the visitor waited in queue before being paired with live agent>"} <- SF.app - RC has it's own timer
{"sf_chat_key": "<sessionId from SF payload>"} <- SF.app this event actually has two properties
]}
],
"Agent Transfer": [
{"successful": []} <- SF.app
],
"Agent Disconnect": [
{"triggered": []} <- SF.app
],
"Transcript Download": [
{"selected": []} <- Widget
],
"Survey": [
{"link_clicked": []} <- Widget
],
"Window": [ <- re-name this "Tab"? Not in Tracking Plan?
{"opened": [
{"session_id": "XXXXXXX"} <- Widget
]},
{"closed": []} <- Widget??
]
}