One-click Connect allows a support agent to:
- See basic information about what the Visitor is doing with the application.
- Remotely initiate a screen share session for an application user.
Presence must be configured for your group by Glance Support before you can use the Presence functionality in your application.
To support One-click Connect, an application must connect to the Glance Presence Service in order to receive messages relayed by the Agent. Each application user must connect with his own unique Visitor ID.
The One-click Connect API is implemented on
Typically an application will connect to the Presence service while the Visitor is logged into the application, and will disconnect when the Visitor logs out or exists the application.
You should make all
PresenceVisitor API calls from the main thread.
Default UI for Mobile
The Glance SDK provides a Default UI on mobile platforms for sessions initiated via One-click. When an Agent initiates a session via One-click:
A confirmation message is displayed in the mobile.
If the visitor clicks Accept, a session starts using the visitor ID as the session key.
Glance logs if the visitor clicks Accept or Decline.
See the documentation for
Glance.Visitor.init. Before connecting to the Glance Presence service, an application must call
Glance.Visitor.init with a Visitor ID.
- The same Visitor ID should be used when the same visitor is logged into the application on another device, or in a web application instrumented for Glance One-click Cobrowse.
- Only one user can be signalable by the One-Click service at a time with a given Visitor ID.
- If two application instances connect using the same Visitor ID, the most recently active application has “focus” and will receive any signals sent by the Agent.
- By default, the Visitor ID will also be used as the session key for any screensharing session started with
- The application should wait for
EventVisitorInitializedto fire before calling
Connecting to Presence
The Visitor must be connected to send presence information or receive signals from the Agent.
Once EventVisitorInitialized has fired, the application may call
GlancePresenceVisitor connect to connect to the presence service. The application should wait for the
EventPresenceConnected event before attempting to call any additional
The application may also receive
EventPresenceNotConfigured if there is an error connecting to the Presence service.
For mobile platforms only: if
pushNotifications is true, the application will request permission to send push notifications, if not already granted. This allows the application to be signaled even when running in the background. See “Background / Foreground” Transitions.
If the SDK is already connected, calling
connect() again does nothing.
While connected to the Presence service, the application will notify the service about various visitor side events:
|Event||Data||Agent Side Event|
e.g. no gserver configured for sdk version
To disconnect from the Presence service, typically on logout or application exit, the application should call
NOTE: If the connection to the presence service drops, the Glance SDK automatically reconnects.
|EventPresenceConnected||Info||The Glance SDK successfully connected (or reconnected after a connection drop) to the presence service.|
|EventPresenceConnectFail||Warning||The connection to the Presence service has dropped. The Glance SDK will automatically attempt to reconnect, and will fire
- reason: Diagnostic text message suitable for logging. Applications can continue to call
|EventPresenceShowTerms||Info||The Agent has signaled the Visitor to display a screen share Terms and Conditions dialog box. If the Visitor agrees to the terms, the application should start a screen share session. This event only needs to be handled if not using the Default UI.
– sessionkey: The key to use for the session, if the user agrees to start
– onetermsurl: A link to the terms and conditions web page that should be displayed in the dialog box.
|EventPresenceSignal||Info||A signal was received from the Agent. In a future implementation, this event can be used to handle custom signals from the Agent.|
|EventPresenceBlur||Info||Another application or web page has connected to the Presence service, and this application is losing focus. The application will automatically regain focus the next time
|EventPresenceSendFail||Warning||A signal could not be sent to the Agent because the connection to the presence service is currently down.|
|EventPresenceNotConfigured||Warning||Presence is disabled for the group or is not correctly configured.|
|EventPresenceDisconnected||Info||The Glance SDK has successfully disconnected from the Presence service.|
|glancePresenceDialogDidTapYes||Info||The visitor tapped Accept within the presence terms dialog.|
|glancePresenceDialogDidTapNo||Info||The visitor tapped Decline within the presence terms dialog.|
Monitoring User Activity
Glance.PresenceVisitor.presence(map<string, string> data)
When Presence is connected, information can be sent to the agent side as the user navigates through the application. The Agent side CRM integration can display this information to let the Agent know what the user is doing in the application.
data is a property map which is delivered to the Agent as a JSON object in the onpresence event. Standard properties that may be in the data map are:
- url: A string indicating what area of the application the visitor is currently using.
presence() can result in
EventPresenceSendFail events if the Glance SDK happens to be temporarily disconnected from the presence service at the time presence is called. The Glance SDK does not queue presence messages to be resent upon reconnect.
You may specify custom properties in the call to
presence(), but they must be prefixed with “c_” to prevent conflicts with standard properties.
Presence is not intended to transfer large data sets. The maximum number of properties allowed is 20 with a limit of 2,000 characters per property and 10,000 total size. The maximum length of a property name is 64 characters. Attempting to send presence data which exceeds these limits results in an
An application may call
presence() whenever a visitor accesses a new area of the application. This allows an Agent to see what area of the application a visitor is using, even before establishing the screenshare session.
If an application’s connection has been “blurred” by another application, calling
presence() causes the application to reconnect to presence and take focus. A best practice is to only call
presence() when a user interacts with the application.
presence() should be called on average no more than once per minute for typical application usage.
Background / Foreground Transitions
Passing visibility information to the Presence Service allows the Agent to be informed as to whether the Visitor is actively using the application.
For mobile platforms, the Glance SDK will automatically notify the Agent as the application is moved into background or foreground operation.
Desktop applications must call
For desktop platforms, call
Glance.PresenceVisitor.SignalVisibility to let the Presence Service know when the application moves to the background or foreground. Pass visible = false when the application is deactivated, and visible = true when the application is activated.
When the application is not visible, the Visitor continues to appear present on the Agent side, and the application is signalable, for as long as allowed by the operating system up to a maximum of ten minutes.
Signaling a mobile application in the background requires that push notifications be enabled.
GlancePresenceVisitor SignalAgent(eventName, eventProperties)
Notifies the Agent about something that happened on the Visitor side.
Events that are recognized by standard Glance CRM integrations:
|Event Name||Event Properties|
|“terms”||“status” : [“displayed”|”accepted”|”declined”]|
Custom events may be sent using
signalAgent. However any custom events must be prefixed with “c_” to avoid potential conflicts with the Glance event namespace.
Creating a Custom UI
The SDK provides a default user interface to request confirmation and show Terms and Conditions. The URL to a Terms web page is configured in the agent-side CRM system.
To provide your own UI, after calling
Then handle the EventPresenceShowTerms event. In your event handing you should:
- Display your terms and conditions and options to accept (start screen share) or decline.
- Notify the agent terms have been displayed by calling
- Notify the agent of accept or decline by calling
- On accepting, call
// pseudo code, will vary by programming language Glance.StartParams sp = new Glance.StartParams(); sp.key = visitorId; sp.presenceStart = true; Glance.Visitor.StartSession(sp);
Platform-specific examples of custom user interface are provided in the glance-networks gitlab repository.