The Helpshift SDK provides delegate callbacks to help app developers track a user's activities within the help section.
All the public APIs in the SDK should be called after initializing the SDK via HelpshiftSdk.install() API
You can set IHelpshiftEventsListener
implementation by calling the HelpshiftSdk.GetInstance().SetHelpshiftEventsListener()
method.
public class HSEventsListener: IHelpshiftEventsListener { public void HandleHelpshiftEvent(string eventName, Dictionary<string, object> eventData) { // all events } public void AuthenticationFailedForUser(HelpshiftAuthenticationFailureReason reason) { //auth failure event } }
using Helpshift; //... //... private HelpshiftSdk help; //.. void Awake(){ // install call here help = HelpshiftSdk.GetInstance(); } void Start(){ // set the listener help.SetHelpshiftEventsListener(new HSEventsListener()); }
Events are not delivered on Unity's main thread. If you are updating any UI elements with these events then you will have to make sure to switch to Unity main thread before triggering any UI updates.
This event gets fired when the Helpshift session starts
HelpshiftEvent.SDK_SESSION_STARTED
null
public class HSEventsListener : IHelpshiftEventsListener { // ... public void HandleHelpshiftEvent(string eventName, Dictionary<string, object> eventData) { if(eventName.Equals(HelpshiftEvent.SDK_SESSION_STARTED)) { Debug.Log("Helpshift session started."); } } //... }
This event gets fired when the Helpshift session ends.
HelpshiftEvent.SDK_SESSION_ENDED
null
public class HSEventsListener : IHelpshiftEventsListener { // ... public void HandleHelpshiftEvent(string eventName, Dictionary<string, object> eventData) { if(eventName.Equals(HelpshiftEvent.SDK_SESSION_ENDED)) { Debug.Log("Helpshift session ended."); } } //... }
This event gets fired when you call Helpshift.RequestUnreadMessageCount(shouldFetchFromServer)
API to request unread messages count.
HelpshiftEvent.RECEIVED_UNREAD_MESSAGE_COUNT
HelpshiftEvent.DATA_MESSAGE_COUNT
int
HelpshiftEvent.DATA_MESSAGE_COUNT_FROM_CACHE
boolean
public class HSEventsListener : IHelpshiftEventsListener { // ... public void HandleHelpshiftEvent(string eventName, Dictionary<string, object> eventData) { if(eventName.Equals(HelpshiftEvent.RECEIVED_UNREAD_MESSAGE_COUNT)) { if(eventData.ContainsKey(HelpshiftEvent.DATA_MESSAGE_COUNT)) { Debug.Log("Unread count: " + eventData[HelpshiftEvent.DATA_MESSAGE_COUNT]); } if(eventData.ContainsKey(HelpshiftEvent.DATA_MESSAGE_COUNT_FROM_CACHE)) { Debug.Log("Is Unread count from cache: " + eventData[HelpshiftEvent.DATA_MESSAGE_COUNT_FROM_CACHE]); } } } //... }
This event contains information about the current ongoing conversation.
HelpshiftEvent.CONVERSATION_STATUS
HelpshiftEvent.DATA_LATEST_ISSUE_ID
string
HelpshiftEvent.DATA_LATEST_ISSUE_PUBLISH_ID
string
HelpshiftEvent.DATA_IS_ISSUE_OPEN
boolean
public class HSEventsListener : IHelpshiftEventsListener { // ... public void HandleHelpshiftEvent(string eventName, Dictionary<string, object> eventData) { if(eventName.Equals(HelpshiftEvent.CONVERSATION_STATUS)) { if(eventData.ContainsKey(HelpshiftEvent.DATA_LATEST_ISSUE_ID)) { Debug.Log("Issue ID : " + eventData[HelpshiftEvent.DATA_LATEST_ISSUE_ID]); } if(eventData.ContainsKey(HelpshiftEvent.DATA_LATEST_ISSUE_PUBLISH_ID)) { Debug.Log("Publish ID : " + eventData[HelpshiftEvent.DATA_LATEST_ISSUE_PUBLISH_ID]); } if(eventData.ContainsKey(HelpshiftEvent.DATA_IS_ISSUE_OPEN)) { Debug.Log("Is issue open : " + eventData[HelpshiftEvent.DATA_IS_ISSUE_OPEN]); } } } //... }
This event is triggered when the user opens or exits the chat screen. This event is triggered with a boolean value of "visible"
key. For your reference, see the below example:
HelpshiftEvent.WIDGET_TOGGLE
HelpshiftEvent.DATA_SDK_VISIBLE
boolean
public class HSEventsListener : IHelpshiftEventsListener { // ... public void HandleHelpshiftEvent(string eventName, Dictionary<string, object> eventData) { if(eventName.Equals(HelpshiftEvent.WIDGET_TOGGLE)) { if(eventData.ContainsKey(HelpshiftEvent.DATA_SDK_VISIBLE)) { Debug.Log("Is SDK Visible " + eventData[HelpshiftEvent.DATA_SDK_VISIBLE]); } } } //... }
This event triggers when the user sends the first message in a conversation. The event data object has a key, message
, which includes the message string the end-user sent to start the conversation. For your reference, see the below example.
HelpshiftEvent.CONVERSATION_START
HelpshiftEvent.DATA_MESSAGE
string
public class HSEventsListener : IHelpshiftEventsListener { // ... public void HandleHelpshiftEvent(string eventName, Dictionary<string, object> eventData) { if (eventName.Equals(HelpshiftEvent.CONVERSATION_START)) { if(eventData.ContainsKey(HelpshiftEvent.DATA_MESSAGE)) { Debug.Log("Conversation started with text: " + eventData[HelpshiftEvent.DATA_MESSAGE]); } } } //... }
This event is triggered when the user adds a message in a conversation. It might be a text message, response via bot input, or an attachment. The event data object has type
and body
keys, which indicates the type and body of the message added by the user. For your reference, see the below example.
HelpshiftEvent.MESSAGE_ADD
HelpshiftEvent.DATA_MESSAGE_TYPE
HelpshiftEvent.DATA_MESSAGE_TYPE_ATTACHMENT
, HelpshiftEvent.DATA_MESSAGE_TYPE_TEXT
HelpshiftEvent.DATA_MESSAGE_BODY
string
public class HSEventsListener : IHelpshiftEventsListener { // ... public void HandleHelpshiftEvent(string eventName, Dictionary<string, object> eventData) { if (eventName.Equals(HelpshiftEvent.MESSAGE_ADD)) { if(eventData.ContainsKey(HelpshiftEvent.DATA_MESSAGE_BODY)) { Debug.Log("New message added with body: " + eventData[HelpshiftEvent.DATA_MESSAGE_BODY]); } if(eventData.ContainsKey(HelpshiftEvent.DATA_MESSAGE_TYPE)) { Debug.Log("New message added with type: " + eventData[HelpshiftEvent.DATA_MESSAGE_TYPE]); } } } //... }
This event is triggered when the user submits a CSAT rating after the conversation ends. The event data object has rating
and additionalFeedback
keys, which indicates the (star) rating and the additional comments provided by the user with the CSAT form. For your reference, see the below example.
HelpshiftEvent.CSAT_SUBMIT
HelpshiftEvent.DATA_CSAT_RATING
int
HelpshiftEvent.DATA_ADDITIONAL_FEEDBACK
string
public class HSEventsListener : IHelpshiftEventsListener { // ... public void HandleHelpshiftEvent(string eventName, Dictionary<string, object> eventData) { if (eventName.Equals(HelpshiftEvent.CSAT_SUBMIT)) { if(eventData.ContainsKey(HelpshiftEvent.DATA_CSAT_RATING)) { Debug.Log("CSAT submitted with rating: " + eventData[HelpshiftEvent.DATA_CSAT_RATING]); } if(eventData.ContainsKey(HelpshiftEvent.DATA_ADDITIONAL_FEEDBACK)) { Debug.Log("CSAT feedback: " + eventData[HelpshiftEvent.DATA_ADDITIONAL_FEEDBACK]); } } } //... }
This event is triggered when the conversation ends (resolved or rejected) and it cannot be reopened.
HelpshiftEvent.CONVERSATION_END
null
public class HSEventsListener : IHelpshiftEventsListener { // ... public void HandleHelpshiftEvent(string eventName, Dictionary<string, object> eventData) { if (eventName.Equals(HelpshiftEvent.CONVERSATION_END)) { Debug.Log("Conversation Ended"); } } //... }
This event is triggered when an agent rejects the conversation.
HelpshiftEvent.CONVERSATION_REJECTED
null
public class HSEventsListener : IHelpshiftEventsListener { // ... public void HandleHelpshiftEvent(string eventName, Dictionary<string, object> eventData) { if (eventName.Equals(HelpshiftEvent.CONVERSATION_REJECTED)) { Debug.Log("Conversation Rejected"); } } //... }
This event is triggered when an agent resolves the conversation.
HelpshiftEvent.CONVERSATION_RESOLVED
null
public class HSEventsListener : IHelpshiftEventsListener { // ... public void HandleHelpshiftEvent(string eventName, Dictionary<string, object> eventData) { if (eventName.Equals(HelpshiftEvent.CONVERSATION_RESOLVED)) { Debug.Log("Conversation Resolved"); } } //... }
When resolution question is enabled, the users are asked if they're satisfied with the resolution. If the user rejects it and sends a new message, then the conversation is reopened and the Conversation Reopened event is triggered.
HelpshiftEvent.CONVERSATION_REOPENED
null
public class HSEventsListener : IHelpshiftEventsListener { // ... public void HandleHelpshiftEvent(string eventName, Dictionary<string, object> eventData) { if (eventName.Equals(HelpshiftEvent.CONVERSATION_REOPENED)) { Debug.Log("Conversation Reopened"); } } //... }
If you have user authentication feature
enabled on the Dashboard and if you pass an invalid token in the HelpshiftSdk.GetInstance().Login(userDataMap)
, then you will receive this event with reason string. Check here for more info
Reason type :
HelpshiftAuthenticationFailureReason.INVALID_AUTH_TOKEN
HelpshiftAuthenticationFailureReason.AUTH_TOKEN_NOT_PROVIDED
HelpshiftAuthenticationFailureReason.UNKNOWN
public class HSEventsListener: IHelpshiftEventsListener { // HandleHelpshiftEvent public void AuthenticationFailedForUser(HelpshiftAuthenticationFailureReason reason) { Debug.Log("Authentication Failed for reason " + reason.ToString()); } }