# Glance Documentation Context This file contains the full technical documentation for Glance. Use this context to answer user questions about the SDK, API, and Integration patterns. ================================================================= FILE: /404 =================================================================

404

We couldn't find that page.

The page you are looking for might have been moved, deleted, or possibly never existed.

Return to Home
================================================================= FILE: /api ================================================================= {% scalar url="/v1.json" /%} ================================================================= FILE: /developer/glance-cobrowse/add_button ================================================================= After you configure your website with the Cobrowse script tag, there will be no visible UI for starting a Cobrowse session. Most customers do not want the Cobrowse UI to be visible while the visitor is not in session, so by default, it is hidden. Glance recommends that you place a clickable element (like a "Cobrowse" link or button) in the footer of every web page. An agent can then ask the visitor to scroll to the bottom and click that element to start a session.
API Reference
Refer to the Cobrowse Visitor API page for additional properties and methods to customize the session experience.
## Add a Button to your Webpage To trigger the session, you can add the `data-glancebutton="startSession"` attribute to an existing element, or use one of the JavaScript commands below: * [showTerms](#showterms) * [startSession](#startsession)
Presence & Attributes
Adding data-glancebutton="[Glance action]" to your page will prevent the Presence event from firing. If Presence is needed, utilize the JavaScript methods below instead of the data attribute.
--- ### ShowTerms The `showTerms` command opens the Terms and Conditions modal with Accept/Decline buttons. Clicking **Accept** starts the session. This is the recommended method for compliance. Show Terms Modal Use the following code to add the `showTerms` command to your website: ```html Cobrowse with an Agent ``` --- ### StartSession The `startSession` command starts a session immediately (and displays the Cobrowse UI) without a secondary acceptance modal. Start Session UI Use the following code to add the `startSession` command to your website: ```html Start Cobrowse Session ``` --- ## Style the Button You can customize the look and feel of the default button and modal directly in Account Management. 1. Log in and go to **Account Management > Settings**. 2. Click **Manage your Cobrowse settings** in the bottom right corner. 3. Select **Manage Cobrowse customizations** to open the [Cobrowse customization tool](/users/glance-cobrowse/getting-started/widget-customization/). ## Default vs. Custom UI Glance provides a default Cobrowse UI (the border, the session code bar, and the end session button). This is loaded automatically. If you wish to build a completely custom interface (e.g., your own React/Angular components), you can suppress the default UI: 1. Set `data-ui="custom"` on your script tag to prevent loading the default UI script. 2. Implement the `setUIReady()` call in your code. 3. Listen for session events to update your own UI. Refer to the [Cobrowse Visitor API](/developer/legacy_api/visitor_agent/visitor/#properties-and-methods) page to customize the visitor experience. ## Session Code Every Cobrowse session has a **Session Code**. This is a unique identifier available to both the visitor and agent, allowing them to connect. The code may be randomly generated and exchanged over the phone, or it can be assigned automatically via integration with the customer website. After an unidentified visitor clicks the **Show** button, the session code is displayed: Session Code Toolbar ================================================================= FILE: /developer/glance-cobrowse/attributes ================================================================= The script tag generator allows Glance administrators to modify attributes to create a custom script tag that enables Cobrowse on websites. This user-friendly interface will let users fill out each individual attribute for the script tag and then generate a script that can be copied and pasted into their website. Script Tag Generator The following attributes can be found within the script tag. ## Read-Only Tag Read-only attributes are generated based on previous selections made by the user. The following attributes are generated within the script as read only: * **script id** - The identifier used for this script, defaults to `glance-cobrowse`. * **src** - The source of the cobrowse loader script. * **data-groupid** - Your assigned Group ID number provided by Glance. * **data-site** - The environment (staging or production) that this tag will be deployed to. Select the **Staging** or **Production** tab to identify what needs to be generated for this script. * **data-ws** - The webserver being used (e.g., `www.glance.net`). When implementing the script tag on your website, this can be changed for use in beta or a customer-specific environment.
Note
Your Cobrowse script tag includes your company's unique Group ID. If you have multiple Glance groups, make sure when you are testing that the correct Group ID is in the tag, and that you are joining sessions as a Glance user in that group.
### Script Tag Versions: Staging and Production There are two versions of the script tag: one for your staging website, and one for your production website. Which profile of Cobrowse is used on your site is specified by the site attribute in the script tag. You should use Staging for your own internal staging environment and Production for your live site.
Warning
Cobrowse will not work on a website accessed at localhost with the file://protocol. If you are trying out Cobrowse on a local website, please access it via a host name added to your local hosts file or equivalent.
## Basic ### data-presence **Definition:** Determines if the presence scripts are loaded and when the connection is made to the presence server. Omit this attribute if you are not using presence. **Default:** `on` **Options:** `on`, `api` * **on** will load the presence scripts and automatically connect to the presence server if a visitor id is defined in the `data-visitorid` script tag attribute. * **api** will load the presence scripts, but it is the customer's responsibility to manage the connection and other aspects of the interaction. See [Presence Visitor API.](/developer/presence/presence_visitor_api/) ### data-cookiedomain **Definition:** The domain to use for the Cobrowse session cookie. This setting is typically required only for staging sites hosted on a [public suffix domain](https://publicsuffix.org/) such as `azurewebsites.net` or `herokuapp.com`. Specify the full host name as the cookie domain. For example, if your staging site is `abcco.azurewebsites.com`, specify `data-cookiedomain="abcco.azurewebsites.com"` **Default:** N/A **Options:** Hostname of page to be Cobrowsed ### data-cookietype **Definition:** The type of cookie to use for the Cobrowse session. Possible values include the following: * **normal** (default): A non-secure cookie on your website domain. Use this value if visitors need to be able to navigate to insecure pages during a Cobrowse session. * **secure**: A secure cookie on your website domain. You may use this value if visitors will only need to be able to navigate to secure pages during a Cobrowse session. * **ls**: Local storage on your website domain. You may use this value if you would like to avoid adding a cookie to your domain, and if your visitors only navigate to pages on the same local domain. * **dual**: Both local storage and a cookie are used. Use this value if you have existing code which may delete cookies on your website domain, including the Cobrowse session cookie. **Default:** `normal` **Options:** `normal`, `secure`, `ls`, `dual` ## Advanced ### data-additionalgroupids **Definition:** Specify additional Group IDs in the script tag, for example: `data-additionalgroupids="59923,50920"`. It is possible for you to tag different pages with different sets of group ids, but a primary Group ID (`data-groupid`) must be specified and it is used as a default. **Default:** N/A **Options:** Comma separated list of Group IDs ### data-inputevents **Definition:** Maps input events to Glance Cobrowse actions. The `data-inputevents` format is `{ "[modifier]-[keycode]" : "[Glance action]", ...}`. Example: ```html data-inputevents='{"ctrl-13":"startSession", "shift-13":"showTerms"}' ``` **Default:** N/A **Options:** The key code can be any standard JavaScript key code mapped to Cobrowse actions.
Note
Use single and double quotes exactly as shown in the above example. The outer quotes around the attribute value should be single quotes, and the quotes within the attribute value must be double quotes. Customers should still provide a link or button in addition to the key combinations to allow for starting sessions on mobile devices.
### data-scriptserver **Definition:** If you are hosting the script on your own server, add this attribute to tell Glance where to find the additional script and CSS resources that you host. **Default:** N/A **Options:** `[servername]` ### data-startpaused **Definition:** Allows you to start the session in a paused state. Clicking **Enabled** sets `data-startpaused="1"`. **Default:** N/A **Options:** `1`, `omit` * **1** starts the session in a paused state. * **omit** starts the session in an unpaused state. ### data-ui **Definition:** When implementing a custom UI, include this to prevent loading of the default UI script. **Default:** N/A **Options:** `custom`, `omit` ### data-video **Definition:** Starting video size. **Default:** N/A **Options:** `small`, `large`, `off` ## Additional The following attributes can be added to the script tag outside of the script tag generator. ### data-visitorid **Definition:** The visitor id is used when connecting to the presence service if presence is enabled. If defined prior to the session starting, the visitorid will be used as the session key by default. For more information on the visitor id, see [Cobrowse Visitor API](/developer/legacy_api/visitor_agent/visitor/#cobrowse-visitor-api). This attribute is optional and may be omitted. If included, it must be present when the script tag is initially loaded. **Options:** Because the visitor id is often used as the session key, it must adhere to the requirements of a valid session key. See session key requirements under [Using StartSession](/developer/legacy_api/visitor_agent/visitor/#using-startsession). ================================================================= FILE: /developer/glance-cobrowse/cross-domain/advanced ================================================================= This page highlights additional situations that may arise when setting up Cobrowse Cross-Domain. ## Multiple Group IDs Organizations utilizing multiple Glance group IDs may find it simpler to create a single helper page on each domain that supports the dynamic specification of the group ID and data-site attributes based on parameters in the helper page's URL. During the Cross-Domain flow, Glance will automatically append the appropriate group ID and data-site values in the URL of each helper page being opened. For example: ```text https://www.yourwebsite.com/helper.html?GlanceSession=1&groupid=&data-site= ``` Below is the sample JavaScript. Ensure you place this inside a script tag on your helper page: ```javascript function addCobrowseScript() { var allowedGroupIDs = ["12345", "23456", "34567", "45678", "56789"]; var urlParams = new URLSearchParams(window.location.search); var groupId = urlParams.get("groupid"); // Check to make sure the group id in the query string is on the allowed list if (!allowedGroupIDs.includes(groupId)) { // If no group ID found in the query string, or there is one that's not on the allowed list // replace with the desired default group id groupId = "12345"; } // Use production as the default, unless staging is specified var dataSite = urlParams.get("data-site") === "staging" ? "staging" : "production"; var theCobrowseScript = document.createElement("script"); theCobrowseScript.setAttribute("id", "glance-cobrowse"); theCobrowseScript.setAttribute("type", "text/javascript"); theCobrowseScript.setAttribute("data-groupid", groupId); theCobrowseScript.setAttribute("data-site", dataSite); theCobrowseScript.setAttribute("charset", "UTF-8"); theCobrowseScript.setAttribute( "src", `https://www.cdn.glance.net/cobrowse/CobrowseJS.ashx?group=${groupId}&site=${dataSite}&script=XDOM` ); document.head.append(theCobrowseScript); } window.addEventListener("load", addCobrowseScript); ```
Note
The group IDs in the above sample must be replaced with the group IDs for the organization.
================================================================= FILE: /developer/glance-cobrowse/cross-domain ================================================================= If you expect your Cobrowse sessions to involve interactions across multiple domains, additional configuration is required. ## Setting up Helper Pages To successfully navigate from one domain to another during a Cobrowse session, the Cobrowse script needs to open a "helper page" on the second domain, write a cookie to that domain, and close the helper. This must be done prior to the transition; the helper page will be visible to the visitor briefly before closing automatically. For the fastest and most reliable domain transitions, Glance recommends putting a lightweight helper page on each domain, using this page as a template: ```html Glance Cobrowse Cross Domain Helper ``` Be sure to replace the "YOUR_GROUP_ID" with your group's number (in both locations) as well as the `data-site` value as appropriate.
Note
* The helper URL cannot be a page that redirects somewhere else. * The helper URL cannot require authentication to access.
Alternatively, you can use any existing page on the website which contains a Cobrowse script tag. --- ## Configuring Domains and Helper Pages on your Account Once you have settled on the helper page you are using for each domain, you need to configure the domains and helper page URLs in Glance. Glance will only allow session information to be passed to and from these trusted domains. Follow these instructions to configure cross-domain Cobrowse: 1. As an administrator, log in at [glance.net/login](https://www.glance.net/login). 2. Click on the **Settings** tab, scroll to the **Cobrowse Settings** section near the bottom, and click **Manage Your Cobrowse Settings**. 3. Scroll down to the **Cross-Domain Cobrowse** section. 4. Add each domain as well as a helper page. For example: Cross-Domain Settings Configuration *Example configuration:* - **Domain:** `www.abc.com` - **Helper Page URL:** `https://www.abc.com/glancehelper`
Note
Both the original domain and the destination domain need to be listed. That is, if a session starts on **abc.com** and continues to **def.com**, both **abc.com** and **def.com** need to be listed here.
### Domains vs. Subdomains If your website includes multiple "sub-domains" for the same domain, generally only the top level domain needs to be included. For example, if you have pages on **a.mycompany.com** and **b.mycompany.com**, you only need to add one entry for **mycompany.com**. An exception would be in the case where `data-cookiedomain` is specified in the Cobrowse script tag in order to specify that the cookie be written on the subdomain. In this case, you would use the subdomain specified in the `data-cookiedomain` attribute. So for example, if your script tag has `data-cookiedomain="a.mycompany.com"`, then you would need to add **a.mycompany.com** to the list of domains for cross-domain Cobrowse. --- ## Moving from One Domain to Another At some point during a Cobrowse session, the session information must be passed to all of the domains other than the one on which the session starts. There are several options for making this happen, depending on how your website visitors navigate from one domain to another. ### Static Anchor Tag Links If your visitors navigate to another domain by clicking on an anchor tag `` link, Glance manages the domain transition automatically. The first time a customer clicks on such a link, a popup helper window appears briefly before the browser redirects to the page specified in the anchor tag. From that point on during the session, the visitor may navigate seamlessly between all domains. If you are navigating between domains with links in anchor tags, then your configuration work is complete. ### JavaScript Domain Transitions If your website uses JavaScript, not static links, to redirect the visitor to a new domain, you will need to call the JavaScript method [GLANCE.Cobrowse.Visitor.crossDomain()](/developer/legacy_api/visitor_agent/visitor/#using-crossdomain) to pass the session information to the other domains. You can call `GLANCE.Cobrowse.Visitor.crossDomain()` at any time before a domain transition, although it is logical to do this either when the [session starts](#setting-up-cross-domain-cobrowse-at-session-start) or on the [navigation event](#setting-up-cross-domain-cobrowse-on-navigation). See below for examples of each implementation. If you would like to ask the visitor for permission before continuing the session on other domains, call `GLANCE.Cobrowse.VisitorUI.promptCrossDomain()`, which shows a confirmation message with Yes / No buttons. The message displayed can be customized on the Account Cobrowse Settings page. ### Pop-up Blockers Because `crossDomain()` opens a new window, it must be called in response to a user action such as a click or keystroke, in order to avoid triggering a pop-up blocker. `promptCrossDomain()` does not trigger a pop-up blocker because the user clicks "Yes" to start the cross domain process. --- ## Examples ### Setting up Cross-Domain Cobrowse at Session Start Calling `crossDomain()` or `promptCrossDomain()` at session start time is a good option in situations where it's difficult to identify the domain transitions and add the API calls as needed. The below code would be used to call `crossDomain()` at the start of the Cobrowse session. ```javascript jQuery(document).ready(function () { GLANCE.Cobrowse.Visitor.addEventListener("sessionstart", function () { GLANCE.Cobrowse.Visitor.crossDomain(); }); }); ``` The sample above works on most browsers. Visitors using Apple Safari may see a pop-up blocker warning the first time they run a cobrowse session. Use `promptCrossDomain()` instead to avoid pop-up blockers, or if a confirmation prompt is desired. ### Setting up Cross-Domain Cobrowse on Navigation The code below is an example of calling `crossDomain()` at the time of the transition to the other domain. This approach is appropriate in situations where crossing domains happens infrequently and it would therefore be unnecessary to send session information to the other domains every time a session is launched. In this example, the website has a button which redirects to a page on another domain using JavaScript.
Note
`crossDomain()` only needs to be called once during a session, although it's ok to call it multiple times.
```html ``` ```javascript function redirect() { // First check to see if a cobrowse session is active // If not, proceed with the redirect as normal if (!GLANCE.Cobrowse.Visitor.inSession()) { window.location = "https://www.example.com"; return; } // In a cobrowse session, send the session information to // other domains and then open https://www.example.com GLANCE.Cobrowse.Visitor.crossDomain({ url : "https://www.example.com", target : "_self" }); } jQuery(document).ready(function () { jQuery("#redirect-button").click(redirect); }); ``` In the following example, `crossDomain()` is called to send session information to other domains, and then a new window is opened on another domain. ```javascript GLANCE.Cobrowse.Visitor.crossDomain().then(function() { window.open("https://www.example.com", "_blank"); }); ``` ### Troubleshooting * If you experience Cross-Domain Cobrowse issues where the agent does not follow the visitor, verify that the Cobrowse script tag is identical on the main website and all helper pages. * If your organization utilizes multiple Glance groups and you want to deploy one set of code that references all the groups, refer to the Advanced Cross-Domain page. ================================================================= FILE: /developer/glance-cobrowse ================================================================= Get Glance Cobrowse up and running for your team in no time. This section provides an overview of the steps required for setting up Cobrowse on your company website.
At a high level, the workflow for setting up Cobrowse on the visitor side is: 1. [Find your Cobrowse script tag.](./quickstart/#1-find-your-cobrowse-script-tag) 2. [Customize the script tag.](./quickstart/#2-customize-the-script-tag) 3. [Add the Cobrowse script tag.](./quickstart/#3-add-the-script-tag) 4. [Adding a Cobrowse Button for the Visitor](./add_button) Setting up Cobrowse on the agent side can be completed by adding the following implementation method: * [Browser Agent SDK](/developer/sdk/browseragent/) - A fully customizable solution that allows you to determine how a session begins. ================================================================= FILE: /developer/glance-cobrowse/quickstart ================================================================= For your convenience, Glance generates a customized cobrowse script tag for your account that you can copy and paste into your company website. ## 1. Find your Cobrowse Script Tag To locate your unique script tag: 1. Navigate to [glance.cx](https://www.glance.cx/) and click **Login**. 2. Log in using your **Glance Address** and **Password**. 3. Under **Account Management**, click the **Settings** tab. Script Tag Location 4. In the bottom left corner of the **Settings** tab, click on **Manage your Cobrowse settings**. Scroll down to the **Script Tag Generator** section. --- ## 2. Customize the Script Tag Modify your script tag by updating the attributes directly in the generator. Refer to the [Attributes Guide](../attributes) for a complete breakdown of each option. Script Tag Generator
Recommendation
Glance recommends that you start with the default script tag provided in your account settings, and then customize it as needed.
--- ## 3. Add the Script Tag Once you have customized your tag, it must be added to all pages within the website that should be viewable by an agent. * **Location:** The script tag can be placed in the `<head>` or `<body>` section of your website. * **Scope:** Pages without the script tag cannot be viewed. If a visitor navigates to an untagged page during a session, the agent's screen will darken (paused state) until the visitor returns to a tagged page. Body Tag Example
Advanced Setup
If your team uses a tag management tool (GTM, Adobe Launch), embeds iframes, or operates a self-hosted setup, refer to the Advanced Script Tag Management guide.
--- ## 4. Add a Start Button After the script is loaded, you need a way for the customer to start the session. See the [Add a Start Button](../add_button) guide to learn how to add a **Join Session** button to your UI. ## Next Steps Once the visitor side is established, you need to set up the Agent side. * **[Agent Join Page](https://www.glance.net/agentjoin/AgentJoin.aspx):** The simplest way to test. Agents enter the code provided by the visitor. * **[Browser Agent SDK](/developer/sdk/browseragent):** A fully customizable solution that lets you build the "Join" experience directly into your CRM or agent desktop. ================================================================= FILE: /developer/glance-cobrowse/script_tag ================================================================= ### Tag Management Tools If your team utilizes a tag management tool (Tealium, Google Tag Manager, Tag Commander, SuperTag, etc.), you may use this to deploy the Cobrowse tag in the head section of the webpages. However, some tag managers (Google Tag Manager, Ensighten, etc.) may not allow you to add attributes to a javascript tag as in the previous examples. To work around this, you can implement your tag into two separate sections: the meta attributes tag and the JavaScript loader tag. The meta attributes tag will include all the attributes needed (`data-groupid`, `data-site`, `data-scriptserver`) as well as all the optional attributes you might want to use (i.e., `data-ui`, `data-inputelements`, etc.). The JavaScript loader tag will provide the link to your group's Cobrowse script with the appropriate version. The meta tag must come first. If not, you will see a "data-groupid missing" error in the console. An example of a leading meta attribute tag looks like this: ```html ``` The script tag must be included on the page itself, as well as within certain iframes. If using a script tag only, the id must be `glance-cobrowse`. If using a meta tag and a script tag, the meta tag id should be `glance-cobrowse` and the script tag id should be `cobrowsescript`.
Note
Always embed the script tag via https to ensure the integrity of the JavaScript file.
#### Use a Meta Tag for Attributes In some environments, it is not possible to add arbitrary attributes to a script tag. Cobrowse parameters can alternatively be specified in a meta tag as shown in the following example: ```html ``` #### Manage Tags The Glance Cobrowse script works with tag management systems such as Tealium and Ensighten and can be added to the page after the page load if desired. If adding the script tag dynamically, the following is the best cross-browser approach: 1. Create the script element and set all attributes except the src attribute. 2. Add the script tag to the document. 3. Set the script tag src attribute. --- ### iframes Iframes must also include a script tag, unless one of the following conditions apply: * The iframe is dynamically built using JavaScript. * The hostname and protocol of the iframe match the parent. For example, the parent is at `https://www.mycompany.com`, and the iframe is also at `https://www.mycompany.com`. In the above listed cases, Glance is able to automatically include the iframe in the Cobrowse session. If the parent is at `www.mycompany.com` and the iframe is at `photos.mycompany.com`, the iframe *must* have its own script tag. Also the iframe URL protocol, HTTP or HTTPS, must match the parent. If your site contains iFrames of third-party content, you must add the third-party site to the Trusted Sites list.
Warning
Iframes will not be included in a Cobrowse session if they are sandboxed to prevent js.
--- ### Self-Hosting Scripts Glance recommends referencing the Cobrowse script from the Glance CDN at [cdn.glance.net](https://cdn.glance.net). When you use the Glance CDN: * Glance can easily provide you with updates and enhancements to the Cobrowse product. * Changes made using the button customization tool will be automatically applied without involving your website development team. You can, however, host the scripts on your own server if you prefer. Glance will provide upgraded scripts approximately once per quarter, and will support the current version and at least one version prior.
Warning
Excel Cobrowsing is not supported for customers who self-host the Cobrowse script.
Glance provides a tool to help generate a single customized self-hosting package, which includes: * The standard JavaScript, HTML, and CSS that is currently included in the self-hosting package. * Your group's staging and production custom skin CSS file with your color and branding customizations. * Your group's staging and production custom visitor text JSON files with customized widget text.
Note
Glance must turn on self-hosting in order for this package to be available in **Account Management**.
To host the script on your company website instead of accessing it from our CDN, you will need to: 1. Download the package by going to the **Cobrowse Settings** section of **Account Management**. Scroll down to the **Self-hosting Package** section. 1. Each version of Cobrowse has its own unique package link. 2. If you don't see a link for the version you are expecting, contact Glance support. 2. For Cobrowse versions 6.3.0+, download the corresponding video package from `https://cdn.glance.net/video/packages/GlanceVideo_X.X.X.zip` (Replace the Xs with the same version number as the base package downloaded in Step 1).
Note
The video package is required even if your sessions are not using video.
3. Unzip the contents of the packages and place them on your server. Place the base package from Step 1 in a folder named `Cobrowse` and the video package from Step 2 (if using Cobrowse 6.3.0+) in a sibling folder named `video`. * The URL path to the script must contain the word `cobrowse` exactly once, as the script uses this keyword to calculate relative paths for loading its dependencies. * For example, if you plan to host your files at `https://www.yourcompany.com/glance/` then you would create the following folders: * `https://www.yourcompany.com/glance/cobrowse` * `https://www.yourcompany.com/glance/video` 4. Reference the location of the `GlanceCobrowseLoader_X.X.XM.js` file in the src attribute of your script tag, as shown in the following example: ```javascript ``` If you are hosting the script on your own server, add the attribute `data-scriptserver` which tells Glance where to find the additional script and CSS resources that you host, as shown in the following example: `data-scriptserver='https://myscriptserver.net/scripts'`
Warning
None of the other scripts, images, or style sheets in the package should be referenced in your website.
--- ### Upgrade a Self-hosted Script Periodically, Glance releases updates to the Cobrowse JavaScript package. To upgrade your website to use the latest scripts, you will need to download a new package and put it on your website. The GlanceCobrowseLoader script in the new package is named with the new version number. You have a couple of options for dealing with upgrades: To generate and download the self-hosting package: 1. Once a new release is available, update your website to point to the new version. In other words, in the script tag above, change the version number to match the version number you are upgrading to. 2. Use a configuration setting on your website to control the version number, for example: `src="https://www.yourcompany.com/glance/GlanceCobrowseLoader_<%=GlanceCobrowseVersion%>M.js"` 3. Copy the `GlanceCobrowseLoader_x.y.zM.js` script to a generic name "GlanceCobrowseLoader.js" and reference that name in the script `src` attribute. You will need to make sure that your server applies appropriate cache headers so that visitors will be getting the latest version after you upgrade. ================================================================= FILE: /developer/glance-cobrowse/trouble ================================================================= ## Session Issues **Could not parse domain** If you see "could not parse domain from..." or `ERR_DOMAINPARSE` in the javascript console, then you may be accessing the website with a hostname from which Glance cannot parse a domain. Use a hostname like `something.com` or `http://www.something.com/` or `abc.def.something.edu`, or if you can't change the hostname, then set the cookiedomain as explained in the Cobrowse [Getting Started](/developer/glance-cobrowse) section.
Warning
Local file:// urls and localhost:// won't work. You need to add an entry to your lmhosts file.
**Session ends right after starting it** Often, this is a problem writing the Glance session cookie. For example, it is not possible for Glance to write a Cobrowse session cookie for a website accessed on a public suffix domain such as "`azurewebsites.net`." In this scenario, a session will appear to start, but will immediately end. If you are just testing a staging site, you can add an entry to your lmhosts file and access the site via some other name. If you run your production site on such a domain, you can configure Glance to write the session cookie using a full hostname instead of the domain. See the "`data-cookiedomain`" attribute of the Cobrowse script tag as documented in Cobrowse [Attributes](/developer/glance-cobrowse/attributes). **Quote characters** Verify that the quote characters in your script tag are correct. Some editors change plain quotes to curved (or "smart") quotes when copying and pasting. If you have a `data-inputevents` attribute on the script tag, verify that you are using double quotes inside the attribute value, and single quotes as outer quotes around the value. The value of `data-inputevents` must be valid JSON. **Script tag ID** If using a script tag only, the id must be `glance-cobrowse`. If using a meta tag and a script tag, the meta tag id should be `glance-cobrowse` and the script tag id should be `cobrowsescript`. **Plugin** If you have been using the Glance Cobrowse Plugin for demos or testing, make sure it is disabled. The plugin is not compatible with instrumented websites. **Only one script tag at the top-level and in each iframe** Verify that there is a script tag in the top level page. A script tag in an iframe is not sufficient. Verify that you do not have multiple Cobrowse script tags in a single document (except for script tags in different iframes). This can cause `SCRIPT_NOT_LOADED` errors when attempting to start sessions from a chat window. **Content Security Policy** If the website has CSP headers, then they must be configured to allow cross domain ajax and websocket requests to Glance. **Ad Blockers** Ad blockers may interfere with Cobrowse functionality. If you have completed all of the required set up and Cobrowse is still not working, trying disabling any ad blockers that you have installed in your browser. **Load Time Delays** Customers may experience load time delays during the first session run on a newly deployed cserver without a primed cache. Delay times can vary based on session volume, the number of CSS files on a page, and the responsiveness of the customer's website. --- ## Built-in properties overridden **WebSocket, XMLHttpRequest** Some javascript libraries override the standard WebSocket or XMLHttpRequest implementations and can prevent Glance from connecting. Type `window.WebSocket` and `window.XMLHttpRequest` into the javascript console. "Native code" indicates that these objects have not been clobbered. **Third party libraries like prototype** Are you using a library like Prototype or mootools which might be modifying built in functionality such as adding `Array.prototype.toJSON`? As a test, enter the following in the js console: `JSON.stringify([1,2,3])` You should get: `"[1,2,3]"` (with only one set of quotes) **Window.self** A common and perfectly legitimate coding construct is: `var self = this;` This can be problematic if var is mistakenly omitted: `self = this; // may overwrite Window.self` Any code with this error will cause problems starting a Cobrowse session. **Using JSLint to detect inadvertent overrides** Running JSLint on your JavaScript can help detect inadvertent global variable declarations. One convenient way to do this is via the [Notepad++ JSLint plugin](https://sourceforge.net/projects/jslintnpp/). Look for errors such as `Undeclared 'some variable name'`. --- ## Visitor tries to start a session and gets an error "Unable to connect to Glance," how can I fix this? Did it work before? If so, did you just add a new CSS Selector to mask some page elements? Delete it and try again. If the Visitor can now start a session, the problem may be the syntax of that CSS Selector that is not supported by Glance today. For example: `#orderPayment\.cardNumber` This is a valid CSS selector. It includes the " \ " character to escape the "." period, since the period should not be in an ID name. But this masking selector will cause the "unable to connect" error. Each time the Visitor starts a session, the latest list of masking CSS Selectors are downloaded. Programmatically that "Start Cobrowse" process today is written in (old) ASP code, so it can share all of our existing load balancing and color selection logic. But ASP lacks built-in functions to generate JSON. The selectors are sent using JSON and JSON needs to escape CSS's escape character. So double escaping might work: `#orderPayment\\.cardNumber` This is not recommended, as this problem should be fixed in the future. In the meantime, try a different selector without the period, such as one of these (less precise) selectors:
`input[id*=cardNumber]`
`input[id$=cardNumber]` --- ## Trouble Setting up Cross Domain Cobrowse? **Cross Domain Error: Untrusted Origin** If you are setting up cross domain Cobrowse, you must remember to enter the primary domain in the Glance backend in addition to the secondary domain that the visitor may be navigating to. If you don't, you will see an error that says `UNTRUSTED_ORIGIN`. --- ## Console Errors **404 error Getting the CustomSkin CSS file** Custom skin not yet created - this is harmless. **404 errors with CAM turned on** It is normal to get 404 errors on the visitor side when CAM (Cobrowse Asset Management) is turned on. The cobrowse script works by creating a copy of the browser DOM and sending it to the agent. To support CAM, resource URLs in the DOM copy are converted to relative urls. On the agent side, these relative urls combine with a `` tag pointing to the Glance Cobrowse server. The resulting combined urls are used by the agent's browser to access resources via the CServer. The DOM copy created by the cobrowse script is not rendered on the visitor side, and is never added into the main DOM that is visible to the user. However most browsers (in anticipation that the DOM copy may be rendered at some point) prefetch the resources that are referenced in it. The visitor browser prefetches those relative urls, which when combined with the visitor's page url or base tag, result in urls for non-existent pages. **Blocked Script Execution for Sandboxed Iframes** Iframes using the sandbox attribute may prevent Cobrowse from injecting scripts which are necessary for the iframe to be rendered on the agent side. In these situations, you will see a console error similar to the following: ```text Blocked script execution in 'about:blank' because the document's frame is sandboxed and the 'allow-scripts' permission is not set. ``` If the iframe in question does not render visible content on the page, then the error can safely be ignored. If you wish to avoid the console error in this situation, mask the iframe. However, if the iframe does provide visible content to the user, then the sandbox permissions will need to be adjusted to include `allow-scripts` in order for the Glance script to run within them. --- ## UI issues **The stop button doesn't work, what should I do?** Check to see if you have the injector enabled. **I am having visitor UI issues, what can I do?** If the button, border, agent cursor, or gestures do not appear correctly, there may be CSS on the website that conflicts with Glance's button UI. Often this can be fixed by adding "Custom CSS" in the button customization tool. You can also build your own Cobrowse UI using Glance's API that is compatible with your website. **How can I move the button to the left?** If you require the button to be on the left, follow these steps: 1. Go to the **Glance Client Admin Portal**. 2. Choose **Settings**. 3. Select **Manage your Cobrowse settings**. 4. Go to **Button Customization**. 5. Click on **Custom CSS**. 6. Copy and paste the following code: ```css #glance_cobrowse_btn { bottom: 0px; left : 12px; right : auto } ``` 7. Publish to production after confirming that it behaves as expected. --- ## Trouble on the Agent Side? **Agent freezes on first view, how can I fix this?** If the agent freezes viewing the first screen, there are several possible causes. In all cases, the first step is to look at the agent side JavaScript console. Some common scenarios include: **The viewer side javascript was not retrieved** The Network tab will show errors attempting to get the viewer side JS such as `CobrowseViewer...M.js`. Look at the http status code to see why the script can't be accessed. **The browser can't open a websocket connection** The console may show errors related to failure to open a websocket connection. There may be a proxy configuration that is blocking websockets. A good diagnostic is to test whether the same browser can connect from outside the corporate network. **There are console errors similar to** `Blocked a frame with origin "https://s1006.glance.net" from accessing a cross-origin frame.` 1. Navigate to `chrome://flags` or `edge://flags`. * `Origin-keyed Agent Clusters` must be set to **Default**. 2. Navigate to `chrome://policy` or `edge://policy`. * Search for `OriginAgentClusterDefaultEnabled` within the Browser Policies. If it is enabled, remove it. 3. On Edge, navigate to `edge://settings/?search=security` to check if the browser has Enhanced Security Mode enabled. * Disable Enhanced Security Mode if it is enabled. **I am seeing mixed content warnings in console, what should I do?** Console shows a message like this: *This content should also be served over HTTPS.* This happens when the Cobrowse viewer is in a secure (https) iframe (e.g. Salesforce integration, moxie...) and the visitor is on an insecure (http) page. The fix is to uncheck "Agent follows visitor protocol" on the backend Cobrowse settings page. Then the agent side stays https always, avoiding the mixed content. The downside is that sometimes CSS/images/fonts cannot be accessed by the agent over https. **A portion of the page is blank on the agent side, how can I fix this?** If iframe contents are not appearing on the agent side, verify that any iframes on different subdomains or protocols have their own script tag. **Hover states** If hover states do not show up on the agent side, contact Glance for custom tuning. **Dropdown boxes look funny or do not show up on the agent side** Native dropdown boxes on the visitor side can't be rendered exactly on the agent side, because the agent may be using a different browser, and JavaScript on the agent side can't control the opening and closing of dropdowns. The agent side tries to copy any CSS that is applied on the visitor side for dropdown boxes to get them to look as similar as possible, but this is imperfect. You may have to add CSS on the agent side to force the dropdowns to look a certain way. Contact Glance for custom tuning. **Fonts/icons are not rendering, what can I do?** If your site hosts fonts that are not accessible cross-origin, those fonts will not render on the agent side. To work around this, Glance can host the fonts. Send us the font files (.svg, .woff) and the corresponding font-family names used in the website CSS. **CSS/Styling is missing on the agent side, how can I fix this?** If the agent can join the session, but the page format, fonts, or colors are not correct, then CSS files may be missing on the agent side. The agent side console will usually show an error in this case. CSS may be missing because: * The visitor side website is behind a firewall which the agent cannot access. The agent needs access to the website for CSS and other resources. * The website will only serve CSS if there is a login cookie. Usually if the agent logs into the visitor website before joining the Cobrowse session, the agent can access CSS and other resources. * The visitor page is http and the CSS is not available on the agent side over https. The fix is to uncheck **Agent follows visitor protocol** on the back end Cobrowse Settings page. * The website does not have a valid cert (e.g. a test site) and the visitor is viewing an https page. The agent browser may not want to retrieve the CSS from a server with an invalid cert. **How can I stop CSS animations replaying multiple times?** If a website includes CSS animations, those animations will replay on the agent side whenever there is a DOM change which involves re-adding the animated elements to the page. This can be annoying. It can be best to turn off certain animations by adding Agent CSS in the backend settings page. **Video is not showing properly for agent or visitor, what can I do?** If the video is not showing up properly for an agent or visitor, it may be caused from the video object not being made relative to the Glance button. Follow these steps to make sure that it stays on top of the button so it will be visible: 1. Naivgate to [Glance.CX](https://www.glance.cx/) and click **Login**. 2. Log in with your **Glance address** and **password**. 3. Choose **Settings**. 4. Select **Manage your Cobrowse settings**. 5. Under **Button Customization**, go to the **Custom CSS** section. 6. Add the following Custom CSS in the group: ```css .video { position: relative !important; } #glance_ssnkey_box { position: relative; } ``` **The page scrolls on start session, how can I fix this?** If your start session link is at the bottom of a page, clicking the link to start a session may cause the page to scroll up to the top. To avoid this, follow one of these examples for your start session link: ```html Start Cobrowse Start Cobrowse ``` **Cobrowse fails for IE, what should I do?**
Note
As of Jan 1, 2021 IE 11 will no longer be a supported browser for agents connecting to any type of Glance session, including Cobrowse, Screen Share, Agent Video, etc. A website visitor using IE 11 and attempting to start a cobrowse session on a web property configured to use a version above 4.15 will default to 4.15.
**Cobrowse fails multiple times with zero session time, what should I do?** This is a fairly common problem with new deployments, whereby Cobrowse sessions are launched, the session tab pops up and immediately goes away. When you review the session logs, they are listed, but the duration is 0. This is likely the result of the web site being hosted on a Public suffix domain, that does not allow JavaScript to launch. You will have to relocate your website to a private domain to get Cobrowse to work properly. [https://publicsuffix.org/](https://publicsuffix.org/) --- ## JavaScript Console Errors **Blocked script execution** On the agent side it is normal to see "Blocked script execution" errors. The agent viewer sandboxes all "third party" iFrames because the agent side should never run JavaScript other than the Glance viewer scripts which apply updates that are sent by the visitor side. --- ## Trouble Configuring for Salesforce? You can find information on configuring for Salesforce in the [Glance for Salesforce](/developer/integrations/salesforce/) section. If you have further questions, contact [Glance Support](/users/account-management/contact). --- ## Button and Record Errors **The connect button does nothing when I click it, how can I fix this?** If the JavaScript was successfully added to all the necessary pages on the website and a session was started on Chrome for a visitor in the Salesforce Community on a Mozilla browser in Stage by entering the Glance code into the G4SF add-on in Salesforce. But, when the Connect button is selected, nothing happens even though pop-ups are enabled, go through the following steps to resolve the issue. To resolve the issue, set up the Profile to have the appropriate permissions: 1. Navigate to the console and enter **Profiles** in the **Quick Find / Search** text box. 2. Select **Manage Users**. 3. Go to **Profiles** and locate the profiles that are assigned to the users of the Glance for Salesforce application. 4. Select the **Profile Name** and scroll down to the **Apps** section. 5. Click on the **Custom Permissions** to open the Glance permissions. 6. At the top of the Custom Permissions page, select the **Edit** button. 7. Ensure that there is only **one** `G4S.Glance for Salesforce _Enabled Custom Permissions_`- either **G4S.Glance for Salesforce** or **G4S.Glance for Salesforce - Panorama**. Make sure that it coordinates with the appropriate configuration for the client. **Glance Cobrowse activity record fails to be created?** To make sure that the activity record does not fail to be created, configure IE to trust the `https://*.glance.net` domain. --- ## Invalid HTML If the agent's view does not match the visitor's, it may be due to invalid HTML on the visitor's side, as it is possible to build and render a malformed HTML structure using JavaScript. In a Cobrowse session, the contents of the visitor's page are scanned, transmitted, and re-rendered in the agent's view. If the HTML has been constructed invalidly via JavaScript on the visitor's side, the agent's browser may attempt to correct it during rendering, potentially leading to visual mismatches between the visitor and agent. Common examples of invalid HTML that can cause mismatches include nested buttons, or placing a div element inside a p element. To see how browsers attempt to correct these issues, try rendering the following two HTML snippets in a browser and inspect the resulting DOM tree: **Invalid HTML will be corrected** ```html

This is a paragraph element in red

This is a div element in blue

``` **Invalid HTML constructed with JavaScript will not be corrected** ```html

This is a paragraph element in red

``` To determine if invalid HTML is causing the issue, try running `GLANCE.checkHTML()` and `GLANCE.runTroubleshooter()` from the visitor-side browser console. These tools scan for common types of invalid HTML but may not catch every issue. If no problems are reported, try comparing the visitor's DOM to the agent's, focusing on the point where the structures begin to diverge. ================================================================= FILE: /developer =================================================================

Developers

Tools, libraries, and guides to help you integrate Glance's Cobrowse and video capabilities directly into your web, mobile, and desktop applications.

## AI Assistance Use our context file to train your AI session on Glance documentation instantly.
LLMS.TXT
https://docs.glance.net/llms.txt View File →
================================================================= FILE: /developer/integrations/agent_workspace/amazon ================================================================= Amazon Connect Integration Overview ## Prerequisites * All high-level prerequisites as listed in the [Getting Started](/developer/integrations/agent_workspace/#getting-started) section. * Access to an [Amazon Connect Instance](https://docs.aws.amazon.com/connect/latest/adminguide/tutorial1-set-up-your-instance.html). ## Add the Glance Application To incorporate the Glance Application in Amazon Connect: 1. Navigate to the Third-Party Applications section in Amazon Connect, and click **Add Application**. Add Application in Amazon Connect 2. Under **Basic Information**, input the following: * For **Display name**, enter "Glance". * For **Namespace**, enter "Glance". * Enter an optional description for the Glance application. Basic Information Configuration 3. Under the **Access** section, enter the following: * For **Access URL**, enter the URL provided by Glance. * For **Approved Origins**, enter `https://www.glance.net`, and the URL for your IDP environment, e.g. `https://.okta.com` Access URL and Approved Origins Configuration ## Joining Sessions from Amazon Connect 1. Navigate to the Agent Workspace application. 2. From the Agent Workspace, click the **Apps** menu and select the Glance application. Agent Workspace Apps Menu 3. You will be prompted to sign in to your Identity Provider. Log in with your credentials. 4. The Glance application is now available and you can join Glance Sessions. Glance Application Active in Amazon Connect ================================================================= FILE: /developer/integrations/agent_workspace/dynamics ================================================================= ## Prerequisites * All high-level prerequisites as listed in the [Getting Started](/developer/integrations/agent_workspace/#getting-started) section. ## Add the Glance Application The following steps describe how to embed Glance controls within the Customer Service Hub workstream. 1. Click the **Pages** tab. 2. Select the view and form to add the Glance controls (i.e., **Customers** -> **Contacts view** -> **Contacts form**) then click the pencil icon. Select view and form in Dynamics 3. Select the **Components** tab from the left menu, scroll down to the **Layout** section and drag **1-column tab** to the form on the right. 4. Rename the section to "Glance Collaboration". Rename section to Glance Collaboration 5. Scroll down to the **Display** section and drag **</> HTML web resource** into the **Glance Collaboration** section. Drag HTML web resource into section 6. Within **Add HTML web resource** click **+ New web resource**. Click New web resource 7. Create an HTML file containing an iframe, replacing "GLANCE URL" with the organization-specific URL provided by Glance. For example: ```html ``` 8. Click **Choose file** and upload the HTML file created in the previous step. Complete the rest of the form and click **Save**. Upload HTML file and Save 9. Click **Save and publish** in the upper right corner. If changes to the iframe are required, utilize the **Properties** panel on the right. Save and publish properties panel ## Joining a Session from Microsoft Dynamics 1. Navigate to the Dynamics Customer Service Hub. 2. Select either **Contacts** or **Cases** from the left navigation pane. 3. Click the **Summary** tab. 4. Log in with your credentials when prompted to sign in to your Identity Provider. Identity Provider login prompt in Dynamics 5. The Glance application is now available within the Glance Collaboration section. ================================================================= FILE: /developer/integrations/agent_workspace/five9 ================================================================= Five9 Integration Overview ## Prerequisites * All high-level prerequisites as listed in the [Getting Started](/developer/integrations/agent_workspace/#getting-started) section. * Access to a Five9 Instance, and access to the Virtual Contact Center (VCC) Admin Application. * You have created a campaign and associated skill for agents you want to utilize Glance. * You've added the following URLs to the Allowed Sites list: * In the Virtual Contact Center (VCC) application, navigate to **Actions > Configuration > Web > Web Sites Allowed to Access REST API (CORS)** section and add the following URLs: * Your IDP URL, e.g. `https://.okta.com` * The URL to the Generic Package, provided by Glance. * `https://www.glance.net` * `https://cdn.glance.net` Allowed Sites configuration in Five9 VCC ## Add the Glance Connector to Five9 1. From the Virtual Contact Center (VCC) Admin Application, under the **Connectors** section, click the plus sign to create a new connector for Glance. 2. Enter a name and description. 3. For **URL**, enter the URL provided by Glance. 4. For **Method**, select **GET**. 5. For **Execution Mode**, choose **In Browser**. 6. For **CTI Web Services**, choose **Current browser window**. 7. Click **Save**. Add Glance Connector in Five9 VCC ## Joining Glance Sessions from Five9 1. Navigate to the Agent Desktop Application. 2. When logging in, select the skill you associated with Glance. 3. From the Agent Dashboard, select the Campaign where Glance is enabled. 4. When the interaction is started, you will be prompted to sign in to your Identity Provider to access the Glance application. Log in with your credentials. 5. The Glance application is now available and you can join Glance Sessions. Glance application active in Five9 Agent Desktop ================================================================= FILE: /developer/integrations/agent_workspace/genesys ================================================================= # Genesys Cloud CX This page will guide you through enabling and configuring Glance for [Genesys Cloud CX](https://www.genesys.com/genesys-cloud). ## Prerequisites Before you begin, you must have completed the following: * A [Genesys Cloud CX](https://www.genesys.com/genesys-cloud) account. * A Glance Account (Group ID) and the following: * [Provisioned agent user accounts](/users/account-management/manage_users) with abilities to join Glance sessions. * A site that is configured with the [Glance Cobrowse script tag](/developer/glance-cobrowse/quickstart/). * For [1-click connect](/users/glance-cobrowse/getting-started/cobrowse_requirements), ensure that you set the following script tag parameters: * Set `data-presence` to `API`. * Set `data-cookiedomain` to the URL for your website domain. ## Overview At a high level, the installation process for enabling Glance in Genesys Cloud CX is as follows: 1. [Install the Glance application.](./manual_install) 2. [Add users to the Glance role in Cloud CX.](./roles_auth) 3. [Configure 1-Click Connect, and test joining Glance sessions.](./roles_auth/#authentication) 4. [View the attached data and create reports.](./reporting) ================================================================= FILE: /developer/integrations/agent_workspace/genesys/joining_sessions ================================================================= Glance offers a few different ways to join sessions: * **1-click connect:** Agent-initiated flow where the Join button will light up orange, and the agent can send a request to the visitor to share their browser, no key exchange required. * **Key-based sessions:** Visitor clicks a button or link on the website to generate a key, which is relayed to the agent. * **Mobile camera share sessions:** Enter the customer's phone number to send a text to share their video stream. Glance provides a default configuration to map [Glance Visitor IDs](/users/glance-cobrowse/getting-started/cobrowse_requirements) to interactions. ## Joining from 1-Click Connect 1. As an agent, accept the inbound interaction. 2. Click on the Glance interaction widget tab. 3. The **Join** button will light up orange if the customer is present and available to receive a Cobrowse request. 4. Click **Join** to send the request to the visitor. 1-Click Connect Join Button in Genesys Cloud CX 5. The visitor accepts the request. 6. The visitor and agent are connected. ## Joining from Key-Entry 1. As an agent, accept the inbound interaction. 2. Click on the Glance interaction widget tab. 3. Ask the visitor to click a link or a button on the website to generate a key. 4. Enter the key and click **Join**. Key-Entry Join Interface in Genesys Cloud CX 5. The visitor and agent are connected. ## Joining Mobile Camera Share Sessions 1. As an agent, accept the inbound interaction. 2. Click on the Glance interaction widget tab. 3. Send a request to the visitor to share their mobile video through a text message. Mobile Camera Share SMS Interface in Genesys Cloud CX 4. The visitor clicks the link in the text on their mobile device. 5. The visitor and agent are connected. ================================================================= FILE: /developer/integrations/agent_workspace/genesys/manual_install ================================================================= If you are an existing customer or starting a trial of Glance for Genesys Cloud, complete the following steps: 1. Log in to your Genesys environment as an administrator and go to **IT & Integrations** > **Integrations**, and choose **Add integration**. Add integration in Genesys Cloud CX IT and Integrations menu 2. From the list of available apps, choose **Interaction Widget** > **Install**. Install Interaction Widget from available apps 3. For **Integration Name**, enter **Glance**, then click **Save**. 4. On the **Configuration** tab, enter the following: a. **Application URL:** *Provided by Glance* b. **Iframe sandbox options:** `allow-forms,allow-modals,allow-popups,allow-presentation,allow-same-origin,allow-scripts,allow-downloads` c. **Iframe Feature/Permissions Policy:** `camera,clipboard-write,display-capture,fullscreen,geolocation,microphone` d. **Group Filtering:** choose which groups have access to the application. e. **Queue Filtering:** choose which queues have access to the application. f. **Communication:** `chat,call,callback,email,sms,line,facebook,instagram,twitter,open,webmessaging,whatsapp` 5. Click **Save & Activate**. Now you can verify the app displays during interactions. 6. Optional Advanced Configuration to add a Glance Logo: ```json { "lifecycle": { "ephemeral": true, "hooks": { "focus": true, "blur": true, "bootstrap": true, "stop": true } }, "icon": { "vector": "[https://logo.glance-integrations.net/](https://logo.glance-integrations.net/)" }, "i10n": { "en": { "name": "Glance Integration for Genesys Cloud" }, "en-us": { "name": "Glance Integration for Genesys Cloud" } } } ``` ================================================================= FILE: /developer/integrations/agent_workspace/genesys/reporting ================================================================= Once sessions are complete, Glance offers the ability to report on session metadata, including: * Session Key * Session Start Time * Session End Time * Duration To view this data, navigate to **Performance** > **Workspace** > Select an Interaction, and scroll to the **Details** section to see the attached data. Per [Genesys' policy](https://help.mypurecloud.com/articles/view-participant-data-attributes/), Time to live (TTL) is 60 days for participant data. After 60 days, the data can only be accessed when it is exported. An example of the attached data: Example
Info
Time stamps for the Start, End, and Duration of the session are stored in Epoch format and may need to be converted to your configured date/time format for use.
================================================================= FILE: /developer/integrations/agent_workspace/genesys/roles_auth ================================================================= ## Roles After the installation process is complete, two roles are created in CloudCX, one for agents and one for administrators: - **GLANCE-INTEGRATION-Agent** - Assign to users who need access to the Glance application interaction widget. - **GLANCE-INTEGRATION-Admin** - Assign to users who might be making configuration changes to Glance. ### Assigning Roles Complete the following steps to assign a role to a user. 1. Click the **Admin** tab and select **People** underneath **People & Permissions**. Admin People and Permissions menu in Genesys Cloud CX 2. Click on the user's name. 3. Click the drop-down arrow next to the **View** menu and choose **All**. Change view menu to All in user settings 4. Click the **Assigned** toggle to **On** for all roles that apply to the user. Toggle Assigned to On for Glance roles ## Authentication The Glance application utilizes a dedicated [OAuth Client](https://help.mypurecloud.com/articles/create-an-oauth-client/) to authenticate against Genesys Cloud CX to sync entities between Genesys Cloud and Glance. Once agents log in to Genesys Cloud, they are automatically logged in to the Glance application. ### Enabling 1-Click Connect By default, Glance provides a default configuration to map [Glance Visitor IDs](/users/glance-cobrowse/getting-started/cobrowse_requirements) to interactions. ================================================================= FILE: /developer/integrations/agent_workspace ================================================================= This section provides samples for integrating Glance into your agent workspace. The sample package provides an agent-side interface that enables agents to join [Glance Cobrowse](/users/glance-cobrowse/) and [Mobile Cobrowse](/developer/sdk/mobile_sdk/) sessions, as well as use [Mobile Camera Share](/users/mobile-camera/) functionality. ## Getting Started Before using the Glance agent-side experience, ensure the following prerequisites have been completed: * The organization has been provisioned a [Glance Group](/users/account-management/manage_users/). * Users have been provisioned with valid Partner User IDs. * The website is tagged with the [Glance Cobrowse script](/developer/glance-cobrowse/quickstart/), and includes a [button or link](/developer/glance-cobrowse/add_button/) to start a Cobrowse session. * [SAML authentication](/developer/integrations/saml/saml_setup/) with Glance is enabled through an Identity Provider. * Onboarding with Glance Customer Success has been completed. As part of this process, Glance provides an organization-specific URL and configures an allow-list for the agent desktop. If you need assistance, [Contact Glance](/users/account-management/contact/). ## Agent Interface Agent Workspace Interface The initial interface offers agents two options for connecting with a visitor: they can click the **Enter Key** button to start a Cobrowse session using a session key provided by the visitor, or click the **Camera Share** button to send an SMS link that allows the visitor to share their mobile phone camera. ### Join with Key Join with Key Interface Input the code received from the visitor and click the **Join** button. ### Camera Share Camera Share Interface Input the visitor's mobile phone number and click the **Send** button. To change the country code, click the flag icon and select the appropriate region from the list. ### Presence Presence Interface When Presence is enabled, you can instantly join the visitor's session by clicking the orange **Join** button. ================================================================= FILE: /developer/integrations/agent_workspace/twilio_flex ================================================================= Twilio Flex Integration Overview ## Prerequisites * All high-level prerequisites as listed in the [Getting Started](/developer/integrations/agent_workspace/#getting-started) section. * Access to a [Twilio Flex Instance](https://www.twilio.com/docs/flex), and have followed the steps to create a [Flex Plugin](https://www.twilio.com/docs/flex/quickstart/getting-started-plugin) through the tutorial. ## Adding Glance to a Flex Plugin 1. After following the tutorial for the Flex Plugin listed above, replace the code in the Bing example with the following code: ```javascript import React from "react" import { FlexPlugin } from "@twilio/flex-plugin" import CustomTaskList from "./components/CustomTaskList/CustomTaskList" const PLUGIN_NAME = "SamplePlugin" export default class SamplePlugin extends FlexPlugin { constructor() { super(PLUGIN_NAME) } /** * This code is run when your plugin is being started * Use this to modify any UI components or attach to the actions framework * * @param flex { typeof import('@twilio/flex-ui') } */ async init(flex, manager) { flex.CRMContainer.defaultProps.uriCallback = (task) => { return task ? `URL FROM GLANCE` : "URL FROM GLANCE" } } } ``` 2. [Deploy and release](https://www.twilio.com/docs/flex/quickstart/getting-started-plugin#deploy-your-flex-plugin) the plugin to your environment. ## Joining Glance Sessions from Twilio Flex 1. Navigate to the Twilio Flex Agent desktop. 2. The Glance application is available in the CRM container window. 3. You will be prompted to sign in to your Identity Provider to access the Glance application. Log in with your credentials. 4. The Glance application is now available and you can join Glance Sessions. Glance application active in Twilio Flex CRM container ================================================================= FILE: /developer/integrations ================================================================= Glance is designed to integrate seamlessly into your existing tech stack, whether you are using a major CRM, a CCaaS platform, or a custom workplace solution. Integrating Glance directly into your system of record centralizes your support workflows and reduces agent friction. By leveraging presence detection, agents can instantly join a logged-in customer's session without relying on manual session codes. Administrators can also configure proactive Cobrowse sessions triggered by business intelligence data, routing rules, AI signals, or specific customer preferences. Integrations can be configured to automatically synchronize session data. Each Glance interaction is logged as an activity directly within your integrated system, providing immediate visibility into key performance indicators (KPIs) and organizational usage metrics. ## User-facing integrations You have several choices for integrating Glance seamlessly with your user-facing systems. You can: * Configure Glance to integrate with: * [Salesforce](./salesforce) * [Genesys](./genesys) * [Amazon Connect](./agent_workspace/amazon/) * [Five9](./agent_workspace/five9/) * [Twilio Flex](./agent_workspace/twilio_flex/) * [Microsoft Dynamics](./agent_workspace/dynamics/) * Configure our products for seamless integration with your organization's IT infrastructure. To achieve this, you may utilize the following options: * [Service Target URLs (STUs)](./service-target-urls) - hyperlinks to give your users quick access to Glance. * [Login Keys](./login-key) - a way to use an API key to authorize your users. ## Single Sign-On You can set up single sign-on to Glance for your users. Glance works as a [SAML Service Provider](./saml) (also known as a [Federation Services Relying Party](./saml/saml_adfs) when integrating with Microsoft Windows Active Directory). Glance offers two embed options for Identity Provider login: you can either embed the login page directly, or open it in a pop-up window to handle the initial login. [Glance Customer Success](/users/account-management/contact) will work with you to configure the option that works best for you. ## User Account Provisioning To manage your Glance user accounts you can integrate Glance's APIs into your back-end systems. You can provision (i.e., create and delete Glance accounts) for your users. To do this: * Use our [user provisioning API](/developer/legacy_api/partner-user). * Use the [autoprovisioning capability](./saml/) (also known as just-in-time provisioning) of Glance's SAML Service Provider implementation. ## Data and Analytics The Customer Records Retriever (CRR) is a public-facing HTTP interface for Glance customers to retrieve data related to their product activity. Refer to [this page](/developer/legacy_api/crr/) for detailed information. Glance partners with your integrations team to deliver a seamless transition into your website, CCaaS, or CRM. Many of our customers get started with the Browser Agent SDK and are supported every step of the way by our dedicated Developer Experience (DevEx) team to ensure success. Glance has a proven track record of integrating with industry-leading platforms, including: - Salesforce - Amazon Connect - Microsoft Dynamics - Five9 - Twilio Flex - Genesys ================================================================= FILE: /developer/integrations/login-key ================================================================= The Glance Login Key is a secure, stateless, time-limited token used to authenticate users to various Glance services without requiring a traditional username and password. This section provides everything you need to implement Login Key authentication from start to finish. You will find detailed documentation on its HMAC-SHA256 cryptographic structure, architectural security best practices, and server-side code samples in multiple languages. Once your keys are being generated securely, you can explore the usage guides for passing tokens via web URLs and custom protocols, and even use our interactive browser utility to test your integration. ## In this section: * **[Login Key](./integration_loginkey):** Technical reference for the token's formatting, components, and HMAC-SHA256 signature generation. * **[Login Key Samples](./integration_samples):** Server-side code snippets in JavaScript, C#, Java, and Python for generating secure keys. * **[Login Key Security](./integration_security):** Architectural guidelines, best practices, and stateless design considerations. * **[Login Key Usage](./integration_usage):** Instructions for passing the Login Key to web pages, agent join links, and the `glance://` custom protocol handler. * **[Login Key Check](./login_check):** An interactive, browser-based utility to generate tokens and verify your Start Session and Agent Join URLs. ================================================================= FILE: /developer/integrations/login-key/integration_loginkey ================================================================= The Glance Login Key is a time-limited token issued by a partner or customer, used to authenticate a user to various Glance services. The Login Key is passed on `https:` or `glance:` URLs in one of the following ways: Appended to the username�for example, `fred.glance.net` (a Glance Address) after a tilde: `[username]~[loginkey]` Passed along with Partner ID and Partner User ID parameters, typically: `partnerid=[partnerid]&partneruserid=[partneruserid]~[loginkey]` A Glance user is uniquely identified by either a username or a Partner ID/Partner User ID pair. ## Features of the Login Key - Uses current best practice SHA-2 family of hashes. - Expiration period selectable by the customer. - Includes algorithm versioning to allow future changes with backward compatibility. ## Login Key Format The Login Key format is identified by a leading dollar sign. (This distinguishes it from the previous format login key.) **Format:** `$[ver]$[expirationtime]$[signature]` **Example:** `$1$1392680360$YsT2Kj8rOp6FaJOG69o3QOj-GUacRiOo7Gw6l1EPVB8` ### Login Key Components * **`[ver]`**: Must be `1` for this version of the key algorithm. * **`[expirationtime]`**: The Unix (POSIX) epoch time. The number of seconds decimal since 00:00:00 UTC Jan 1 1970. Also, the value returned by the JavaScript `Date.valueOf()` method integer divided by 1000. The key is valid until this time (current time must be less than `[expirationtime]`). * *Note: There is also a maximum time in the future for a valid expiration time (currently set to one day) to protect against possible accidentally generated keys with extended expiration times.* * **`[signature]`**: `HMAC_SHA256([apikey], [partnerid][partneruserid][version][expirationtime])` `HMAC_SHA256` takes `(secret key, message)` arguments and generates a hash-based message authentication code.
Info
SHA-256 is the 256-bit variant of SHA-2. The second (message) argument is the string concatenation of the four values. The HMAC must then be encoded as Base64URL (RFC 4648) without any trailing padding ("=") characters.
The resulting Login Key is 57 characters long. ## Integrating Cobrowse and Screen Share Use this section to generate a Login Key for Single Sign-on when using Glance Cobrowse and Screen Share. This section also includes information on Login Key features and format, usage examples, and security considerations. See the [Cobrowse](/users/glance-cobrowse/getting-started) and [Screen Share](/users/glance-screen-share/getting-started/) pages for information on those specific products. ================================================================= FILE: /developer/integrations/login-key/integration_samples ================================================================= # Login Key Samples Visit [Glance Login Key Check](../login_check) to view an HTML page with a form to generate and test login keys. The page may be saved and used locally since the key generation is carried out in the browser-side JavaScript, and the page does not make server requests. To see working code that generates a Login Key, please refer to the JavaScript source. ## JavaScript Example To use this JavaScript function in a browser you must load the `crypto-js.js` script from the [crypto-js](https://www.npmjs.com/package/crypto-js) package. It may be available on a content delivery network like [cdnjs](https://cdnjs.com/libraries/crypto-js). ```javascript CryptoJS.enc.Base64._map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_='; function GenerateLoginKey(partnerId, partnerUserId, expirationSeconds, apikey) { var version = 1; var expiration = Math.round(Date.now() * 0.001) + expirationSeconds; var keystring = partnerId.toString() + partnerUserId.toString() + version.toString() + expiration.toString(); var hmac = CryptoJS.HmacSHA256(keystring, apikey); var hmacb64 = hmac.toString(CryptoJS.enc.Base64); var loginkey = "$" + version + "$" + expiration + "$" + hmacb64.substr(0, 43); console.log(loginkey); } GenerateLoginKey(98765, "UserId", 7200, "RedactedApiKey"); ``` To use it in server code on a Node.js server: 1. Run `npm install crypto-js --save` in your project. 2. Put these `require()` lines before the function: ```javascript var CryptoJS = require("crypto-js"); var HmacSHA256 = require('crypto-js/hmac-sha256'); var Base64 = require('crypto-js/enc-base64'); ``` ## C# Example ```csharp public static string GenerateLoginKey(int partnerId, string partnerUserId, int expirationSeconds, string apikey) { const int ver = 1; DateTime expires = DateTime.Now.AddSeconds(expirationSeconds); DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); int expiration = Convert.ToInt32((expires.ToUniversalTime() - epoch).TotalSeconds); string message = partnerId.ToString() + partnerUserId.ToString() + ver.ToString() + expiration.ToString(); var encoding = new System.Text.UTF8Encoding(); var hmac = new System.Security.Cryptography.HMACSHA256(encoding.GetBytes(apikey)); string hash = Convert.ToBase64String(hmac.ComputeHash(encoding.GetBytes(message))); hash = hash.Substring(0, 43).Replace('+', '-').Replace('/', '_'); // base64url no padding string loginkey = '$' + ver.ToString() + '$' + expiration.ToString() + '$' + hash; return loginkey; } ``` ## Java Example ```java import java.nio.charset.StandardCharsets; import java.time.Instant; import javax.crypto.Mac; import javax.crypto.spec.*; import java.util.Base64; public class LoginKey { public static void main(String[] args) { String key = GenerateLoginKey(1, "bronan", 7200, "RedactedApiKey"); System.out.println(key); } public static String GenerateLoginKey(int partnerId, String partnerUserId, int expirationSeconds, String apikey) { int ver = 1; int timestamp = Math.toIntExact(Instant.now().getEpochSecond()); int expiration = timestamp + expirationSeconds; String message = String.valueOf(partnerId) + String.valueOf(partnerUserId) + String.valueOf(ver) + String.valueOf(expiration); try { Mac sha256_HMAC = Mac.getInstance("HmacSHA256"); SecretKeySpec secret_key = new SecretKeySpec(apikey.getBytes(StandardCharsets.UTF_8), "HmacSHA256"); sha256_HMAC.init(secret_key); String hash = Base64.getEncoder().encodeToString(sha256_HMAC.doFinal(message.getBytes())); hash = hash.substring(0, 43) .replace('+', '-') .replace('/', '_'); return '$' + String.valueOf(ver) + '$' + String.valueOf(expiration) + '$' + hash; } catch (Exception e) { System.out.print(e.getMessage()); return "Error"; } } } ``` ## Python Example ```python import time import hmac from hashlib import sha256 import base64 def generateLoginKey(partnerId, partnerUserId, expirationSeconds, apikey): ver = 1 timestamp = int(time.time()) expiration = timestamp + expirationSeconds message = str(partnerId) \ + str(partnerUserId) \ + str(ver) \ + str(expiration) hmac_bytes = hmac.new(bytes(apikey, "utf-8"), msg=bytes(message, "utf-8"), digestmod=sha256).digest() hash = base64.b64encode(hmac_bytes).decode('ascii') hash = hash[:43].replace('+', '-').replace('/', '_') return '$' + str(ver) \ + '$' + str(expiration) \ + '$' + hash print(generateLoginKey(98765, "UserId", 7200, "RedactedApiKey")) ``` ================================================================= FILE: /developer/integrations/login-key/integration_security ================================================================= # Login Key Security * The HMAC algorithm is current best practice for message authentication. * SHA-2 is current best practice for hashing and approved by FIPS and other authorities. * The security of HMAC is dependent on a sufficiently large key value. Glance currently assigns an 80-bit random API key, but a larger key can easily be assigned to any Glance customer. * In the case that a Login Key is generated with an erroneously long expiration, the customer's API key can be updated to invalidate any outstanding keys. This is mitigated somewhat by limiting how far in the future expiration will be allowed. * There is no nonce value in the key that prevents replay attacks. This is because the mechanism is designed to be stateless. The expiration timestamp mitigates this potential concern. The Login Key should be sent over a secure connection. The Login Key is sent between the Glance user (session host or co-browse agent) and Glance. It is not sent to the end guest/visitor. * The Login Key is intended as a password replacement, not for signing an entire command. It does not include the Session Key and other parameters including display, forward/reverse, and remote control requested. * Currently, the usage is for customers or partners to generate their own keys for their own users, using their own API Key. ================================================================= FILE: /developer/integrations/login-key/integration_usage ================================================================= # Login Key Usage You can use a [Login Key](../integration_loginkey) in place of a Glance username and password when accessing various Glance services. You can use it to start a session in one or more of these ways: * **Web Page:** Passing it to a web page that checks for an installed client, optionally installs it, and signals it to start a session: ```text [https://www.glance.net/agent/start?partnerid=](https://www.glance.net/agent/start?partnerid=)[pid]&partneruserid=[puid]&loginkey=[loginkey] ``` * **Custom Protocol:** Passing it on a `glance://` URL to invoke the Glance Client: ```text glance://startssn[/webserver]?key=[key]&partnerid=[pid]&partneruserid=[puid]&loginkey=[loginkey] ``` * **Agent Join:** It can also be used to allow an agent to join a Cobrowsing session: ```text [https://www.glance.net/agentjoin/AgentView.aspx?SessionKey=](https://www.glance.net/agentjoin/AgentView.aspx?SessionKey=)[key]&partnerid=[pid]&partneruserid=[puid]&loginkey=[loginkey] ``` ## Parameters * **`[pid]`**: Your Partner ID, also known as Group ID. * **`[puid]`**: The Partner User ID identifying the Glance user. * **`[loginkey]`**: The Login Key you generate. A Login Key looks something like this: `$1$1392680360$YsT2Kj8rOp6FaJOG69o3QOj-GUacRiOo7Gw6l1EPVB8`. * **`[key]`**: The session key for the session to join. * **`[username]`**: The Glance Address identifying the Glance user. ================================================================= FILE: /developer/integrations/login-key/login_check ================================================================= Use this interactive utility to generate a time-limited Login Key and test various Start Session, Join, and View URLs. This tool runs entirely in your browser—no server requests are made, keeping your API Key secure.
PartnerID:
APIKey (PrivateKey):
PartnerUserID:
Timeout:

(seconds from now)

Username:

(for direct client start, cb view)

SessionKey:

(for links, not part of loginkey)

Server:

(for links, not part of loginkey)

================================================================= FILE: /developer/integrations/salesforce/creds ================================================================= Some methods, with `G4S` in their names, are intended for use by Glance for Salesforce. These endpoints require the following data items for authentication: * **`groupId`**: The Group ID, just like the `partnerId` mentioned earlier in this document. * **`adminName`**: The Glance Address or user name, like `example.glance.net`, of the user. * **`adminCredentials`**: The Glance for Salesforce credentials generated for the user. The Glance for Salesforce credentials is a 32-character string containing a hexadecimal number. To get a credentials string for a particular username via a Glance API, use the `/services/ProvisioningService.asmx?op=ValidateUser` method, and specify the username and password of the user. The G4SF credential appears in the `` stanza of the result. Notice that the `ValidateUser` method generates a **new** credentials string for the user on each invocation. ================================================================= FILE: /developer/integrations/salesforce/hide_component ================================================================= When a user without a Glance permission set accesses a Lightning Record Page with the Glance Component on it, they will see a message about Glance not being enabled. You can optionally hide this message by using a visibility filter on the Glance Component. To set visibility filters that leverage the Glance permission sets: 1. Navigate to the object where the Glance buttons are displayed. For example, a Contact. 2. From the Gear Icon, click **Edit Page**. 3. Select the Glance component within the page. Under **Set Component Visibility**, click **Add Filter**. Add Filter under Set Component Visibility in Salesforce Lightning App Builder 4. Under **Advanced**, click **Select**. Select Advanced filter type 5. Choose **Permissions > Custom Permissions > Glance.View_Glance_Buttons** and then click **Done**. Select the Glance.View_Glance_Buttons custom permission 6. Set **Operator** to **Equal** and **Value** to **True**, and then click **Done**. Set Operator to Equal and Value to True 7. Click **Save** and **Activate** the page. 8. Users without the Glance permission set will no longer see the Glance icon and warning message on the page. 9. If a user sees an error that Glance is not enabled, then navigate to the user's Profile, edit the Custom Permissions, and disable the custom permissions related to Glance at the profile level. Ask the user to refresh the page. Disable custom permissions related to Glance at the profile level ================================================================= FILE: /developer/integrations/salesforce ================================================================= # Salesforce ## Overview Glance for Salesforce improves the efficiency and customer experience of every call or chat session via integrated cobrowsing (mobile, web), screen sharing, and agent video. The Glance package allows your Salesforce users to join or start Glance sessions directly from a Salesforce record, and sync metadata about that session back to that record automatically. ### Prerequisites Before you begin utilizing the Glance for Salesforce package, complete the following prerequisites: * You have been provisioned a [Glance Group](/users/account-management/manage_users) and there is a Glance Administrator account provisioned for the group. * You have tagged your website with the [Glance Cobrowse script](/developer/glance-cobrowse/script_tag/), and have added a [button or link](/developer/glance-cobrowse/add_button/) to start Cobrowse on the site. * *Optional:* You have enabled [SAML authentication](/developer/integrations/saml/saml_setup) with Glance in the Identity Provider of your choice. * *Optional:* If using 1-Click Connect, you have instrumented your website with this feature per the [requirements](/users/glance-cobrowse/getting-started/cobrowse_requirements). ### Supported Versions Supported Salesforce versions can be found on the [Glance Software Current and Supported Versions](/release-notes/#crm-integrations) page. ### Streamlined Installation The following is a streamlined version of the Salesforce installation process, if you want to install the package quickly. Click the links to go to respective sections of the help site. 1. Download the Glance for Salesforce package [here](./install_sf). 2. Log in to [Glance inside Salesforce](./sf_login). 3. [Select Glance Buttons](./sf_settings/#glance-buttons) for Salesforce objects. 4. Modify [Profile Settings](./sf_settings/#modify-profile-settings). 5. Add [permission sets](./sf_settings/#add-permission-sets). 6. Add [buttons to a Salesforce object](./sf_buttons), like case. ## Using Glance for Salesforce * [Install Glance for Salesforce Package](./install_sf) * [Log in to Glance in Salesforce](./sf_login) * [Glance Company Settings](./sf_settings) * [Adding Glance Buttons to Salesforce Records](./sf_buttons) * [Joining Sessions](./joining_sessions) * [Glance Data Sync for Reporting](./sf_sync) * [Uninstalling Glance for Salesforce](./sf_uninstall) ## Additional Setup * [Using Glance with Messaging](./miaw_sf) * [Glance Cobrowse for Lightning Digital Experiences (Communities)](./sf_community) * [Add a Glance Session Related List](./sf_relatedlist) * [Using Glance with Custom Objects](./sf_custom) * [Hide the Glance Component for Users Without Glance Access](./hide_component) * [How SSO Works in Salesforce](./sf_sso) ## Salesforce Package Features The following tables outline which Glance packages offer support for various Salesforce technologies and consoles. Click the links in the table for additional information on configuring specific features. ### Glance (Latest Package) | Feature | Lightning Console | Classic Console | | :--- | :--- | :--- | | Salesforce Messaging In App Web| [Yes](./miaw_sf) | No | | Support for custom objects | [Yes](./sf_custom) | No | | Choose which buttons appear in the Glance Component | [Yes](./sf_settings/#glance-buttons) | [Yes](./sf_settings/#glance-buttons) | | Configure Glance buttons by object | [Yes](./sf_settings/#glance-buttons) | [Yes](./sf_settings/#glance-buttons) | | Configure Glance buttons by profile | [Yes](./sf_settings/#profile-access-settings) | [Yes](./sf_settings/#profile-access-settings) | | Self-serve setup SSO | [Yes](./sf_settings/#single-sign-on-sso) | [Yes](./sf_settings/#single-sign-on-sso) | ### Glance for Salesforce (Legacy Package) | Feature | Lightning Console | Classic Console | | :--- | :--- | :--- | | Salesforce Classic Chat (formerly Live Agent) | Yes, with
extension | Yes, with
extension | | Salesforce Embedded Services Chat (formerly Snap-in) | Yes, with
extension | Yes | | Log sessions from Chat sessions | No | No | | Support for custom objects | No | No | | Choose which buttons appear in the Glance Component | Yes | Yes | | Configure Glance buttons by object | Partially
Supported* | Partially
Supported* | | Configure Glance buttons by profile | No | No | | Self-serve setup SSO | No | No | *\* You can only configure buttons for Cases, Contacts, or Leads.* ================================================================= FILE: /developer/integrations/salesforce/install_sf ================================================================= This section will help you install and configure Glance for Salesforce (Lightning and Classic). Glance has two packages available in Salesforce. Our legacy package is under the namespace _G4S_, and our latest package is under the namespace _Glance_. This guide covers the new Glance build. If you wish to upgrade to the latest version, your session data from the legacy version will stay as Events, while session data from the new version will be stored as Glance Sessions. Complete the steps in the [Install the Glance for Salesforce Package](#install-the-glance-for-salesforce-package) section below.
Upgrade Warning
If you are upgrading the legacy package to the latest, you will need to rebuild any reports and dashboards you have on Glance sessions captured from Glance, and you will not be able to compare your G4S sessions with your Glance sessions in the same reports.

Uninstalling the legacy package does not delete events from the previous version.
From a high level, the steps you need to complete are the following: 1. Install the Glance package. 2. Configure user permissions. 3. Configure Glance company settings. 4. Configure single sign-on. 5. Add the Glance buttons to your users' record pages. ## Installing Glance for Salesforce Follow the steps below to download and install the Glance for Salesforce package. ### Prerequisites Before you install and configure Glance within Salesforce, verify that you have: * A Glance Account with a username and password. * If you plan to do Cobrowse sessions, verify that your website is tagged with [Cobrowse](/developer/glance-cobrowse/quickstart/). * If you plan to do Screen Share sessions, you have set up [Glance Screen Share](/users/glance-screen-share/getting-started/screenshare_setup). * If you plan to use single sign-on, obtain your [API Key](../sf_settings/#prerequisites). * Verify that you have deployed [My Domain](https://help.salesforce.com/s/articleView?id=sf.domain_name_overview.htm&type=5) in your org. ### Download the Glance for Salesforce Application You can retrieve the latest Glance package [here](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tHs000000Nt7B). If you have questions, please contact your Glance representative or email [Glance Support](/users/account-management/contact/). ### Install the Glance for Salesforce Package After you have received the package install URL, navigate to that page and follow these steps: 1. On the Install Glance for Salesforce page, select _Install for Admins Only_. 2. Click the blue **Install** button. Install Glance for Salesforce Package screen
_**Note:** If you are upgrading, this will be a blue **Upgrade** button._ 3. A pop-up window will appear asking you to approve third-party access. Click **Continue**. 4. You will see the following message while the install is processing: Processing install message in Salesforce
Info
The package install process may take a few minutes. Salesforce will send you an email notification after the install is complete.
After the install is complete, check your clickjack protection settings. ### Check Clickjack Settings Salesforce has a feature to protect against clickjack, a malicious technique of tricking a user into clicking on a different link from what the user perceives, potentially revealing confidential information or allowing others to take control of their computer while clicking on seemingly innocuous objects, including web pages. If you have enabled some clickjack settings, you need to whitelist your Salesforce org domain to start Glance sessions. 1. Go to Setup (gear icon). 2. In the search bar, enter "Session Settings". 3. Scroll to the **Clickjack Protection** section. 4. If the bottom two checkboxes are not selected or you have **Enable clickjack protection for customer Visualforce pages with standard headers** selected, no further action is required. 5. If **Enable clickjack protection for customer Visualforce pages with headers disabled** is selected, the Salesforce org must be added to the Trusted Domains section. Salesforce Clickjack Protection Settings 6. Scroll down to the **Trusted Domains for Inline Frames** section and click **Add Domain**. 7. Add the URL for the Salesforce org. 8. Click **Save**.
Note
If you use Safari, go to the Privacy settings and verify "prevent cross-site tracking" is not selected.
================================================================= FILE: /developer/integrations/salesforce/joining_sessions ================================================================= Glance offers a few different ways to join sessions: * **1-click connect:** Agent-initiated flow where the Join button will light up orange, and the agent can send a request to the visitor to share their browser, no key exchange required. * **Key-based sessions:** Visitor clicks a button or link on the website to generate a key, which is relayed to the agent. * **Mobile camera share sessions:** Enter the customer's phone number to send a text to share their video stream. Glance provides a default configuration to map [Glance Visitor IDs](/users/glance-cobrowse/getting-started/cobrowse_requirements) to interactions.
Info
Users must have pop-ups enabled to be able to complete sessions.
## Joining from 1-Click Connect 1. Navigate to the object where you would like to start a session, for example a contact or case. 2. The **Join** button will light up orange if the customer is present and available to receive a Cobrowse request. 3. Click **Join** to send the request to the visitor. Salesforce Glance Join button highlighting orange for 1-Click Connect 4. The visitor accepts the request. 5. The visitor and agent are connected. ## Joining from Key-Entry 1. Navigate to the object where you would like to start a session, for example a contact or case. 2. Ask the visitor to click a link or a button on the website to generate a key. 3. Click the **Join** button. 4. Click the **Have Key** button. 5. Enter the key and click **Connect**. Enter session key in Salesforce Glance component 6. The visitor and agent are connected. ## Joining Mobile Camera Share Sessions 1. Navigate to the object where you would like to start a session, for example a contact or case. 2. Send a request to the visitor to share their mobile video through a text message. Send SMS text message to start a Mobile Camera Share session 3. The visitor clicks the link in the text on their mobile device. 4. The visitor and agent are connected. ## Show My Screen 1. Navigate to the object where you would like to start a session, for example a contact or case. 2. Click the **Show** button. Click the Show button in Salesforce
Note
If this is your first time using Show My Screen from Salesforce you will need to click the allow pop-ups notification and install the Glance extension
3. Click the **Open Glance Protocol Handler** button on the pop-up. Open Glance Protocol Handler browser prompt 4. If you are not logged in to the Glance client, you will be prompted to do so. 5. Click **Yes** to the **Start Session** pop-up. Start Session confirmation prompt 6. Provide the **Browse to** URL address from the Glance Client to the visitor. Glance Client showing Browse to URL and session key 7. The visitor navigates to the URL provided and inputs the session key if required. 8. The visitor clicks **Join**. 9. The agent is now sharing their screen with the visitor. ## View Their Screen 1. Navigate to the object where you would like to start a session, for example a contact or case. 2. Click the **View** button. Click the View button in Salesforce
_**Note:** If this is your first time using View Screen from Salesforce you will need to click the allow pop-ups notification and install the Glance extension._ 3. Click the **Open Glance Protocol Handler** button on the pop-up. Open Glance Protocol Handler browser prompt 4. If you are not logged in to the Glance client, you will be prompted to do so. 5. Click **Yes** to the **Start Session** pop-up. Start Session confirmation prompt 6. Provide the **Browse to** URL address from the Glance Client to the visitor. Glance Client showing Browse to URL and session key 7. The visitor navigates to the URL provided and inputs the session key if required. 8. The visitor clicks **Join**. 9. The visitor receives a notification that the agent will be viewing their screen. Click **Allow**. Visitor allow screen view notification 10. The agent is now viewing the visitor's screen. ================================================================= FILE: /developer/integrations/salesforce/miaw_sf ================================================================= Glance leverages Presence to enable 1-Click Connect during chat sessions using the Chat ID as the Glance Visitor ID. The following steps are to set this up.
Warning
Glance with Messaging In-App Web is only available in Lightning Experience and using our 1-Click Connect.
## Configure Salesforce for Glance with Messaging In-App Web
Note
If you want to enable Glance's 1-Click Connect capability from chat in a Digital Experience, see this section.
**High-Level Steps** 1. [Set up a Visitor ID formula field on Chat Transcript](#set-up-a-visitor-id-formula-field-on-chat-transcript). 2. [Add a Messaging Session Lookup Field to the Glance Session Object](#add-a-messaging-session-lookup-field-to-the-glance-session-object). 3. [Move the new Messaging Session field in the Glance Session Page Layout](#move-the-new-messaging-session-field-in-the-glance-session-page-layout). 4. [Configure the Glance Buttons for Glance Messaging Session](#configure-the-glance-buttons-for-glance-messaging-session). 5. [Add the Glance Buttons to Messaging Session Lightning Record Page](#add-the-glance-buttons-to-messaging-session-lightning-record-page). 6. [Configure your website for Glance with Chat](#configure-your-website-for-glance-with-chat). 7. [Verify the Glance Cobrowse Script Position](#verify-the-glance-cobrowse-script-position). ### Set up a Visitor ID formula field on Chat Transcript Glance Presence only accepts alphanumeric strings as a Visitor ID, so the first step is to create a formula field that strips the hyphens from the Chat ID. This field will be used as the Visitor ID in Glance Buttons settings. 1. From **Setup**, go to Object Manager. 2. In **Quick Find**, input _Messaging Session_, then click on **Messaging Session**. 3. On the left, click **Fields and Relationships**. 4. At the top, click **New**. 5. At **Step 1**, choose **Formula** and click **Next**. 6. At **Step 2**, set **Field Label** to **Glance Messaging Visitor ID**. Let **Field Name** auto-populate. 7. Below, select **Text**, and then click **Next**. 8. At **Step 3**, copy the following text and paste it into the formula editor: `SUBSTITUTE(Conversation.ConversationIdentifier, '-', '')` 9. Click **Next**. 10. Click **Save**. ### Add a Messaging Session Lookup Field to the Glance Session Object A Lookup field defines a relationship between a Glance Session record and a Messaging Session record. This makes it possible to log Glance Sessions related to custom object records and appear in a Related List on that object. 1. From **Setup**, go to **Object Manager**. 2. In **Quick Find**, input _Glance Session_, then click on **Glance Session**. 3. On the left, click **Fields & Relationships**. 4. Click **New**. 5. At **Step 1**, select **Lookup Relationship** and click **Next**. 6. At **Step 2**, in the dropdown, choose **Messaging Session** and click **Next**. 7. At **Step 3**, under Field Label, set it to `Messaging_Session`. Let **Field Name** auto-populate. Then click **Next**. 8. At **Step 4**, set field-level security if you like, then click **Next**. 9. At **Step 5**, click **Next** to add the field to the default **Page Layout**. 10. At **Step 6**, click **Save** to create the field. ### Move the new Messaging Session field in the Glance Session Page Layout This step makes it easier to find related Chat records from Glance Session records. 1. On the left, click **Page Layouts**, and then **Glance Session Layout**. 2. Move the newly-created **Messaging Session field** from the **Information** section into the **Related Records** section. 3. Click **Save**. Salesforce Page Layout Editor showing the Messaging Session field in the Related Records section ### Configure the Glance Buttons for Glance Messaging Session With the Lookup relationship in place, you can now configure the Glance Buttons. 1. Return to **Glance Company Settings** from the **App Launcher** or from the Glance app. 2. At the top, click **Edit**. 3. In the Glance Buttons section, click **Add**. 4. In the new row where it says **-None-**, click the dropdown and select **Messaging Session**. 5. In the row, disable **Show** and **View**, but make sure that **Join** is enabled. 6. Under **Visitor ID Object**, select **Messaging Session**. 7. Under **Visitor ID Field**, select **Glance Messaging Visitor ID**. 8. Scroll back to the top and click **Save**. 9. It should look like this: Glance Company Settings showing the configured Glance Buttons for Messaging Session ### Add the Glance Buttons to Messaging Session Lightning Record Page After the relationship is defined and the buttons are configured, the last step is to actually add the buttons to the Lightning Record Page for your users to access. 1. From **Setup**, go to the **Object Manager**. 2. In **Quick Find**, input _Messaging Session_, then click **Messaging Session**. 3. On the left, click **Lightning Record Pages** and choose the page your agents use during Chat Sessions. 4. Click **Edit**. 5. When the builder loads up, on the left sidebar, under **Custom - Managed**, click and drag Glance over onto the console wherever you want Glance to be placed. We recommend placing it somewhere easy to see without scrolling. 6. Click **Save**. 7. If prompted, click **Activate**. 8. You might be prompted to assign the record page. 9. After you assign the record page, click **Save**. 10. In the top right corner, click **Back** to return to **Setup**. ## Configure your website for Glance with Chat You also need to configure your website to use the Chat ID as the Glance Visitor ID. ### Verify the Glance Cobrowse Script Position Make sure the Glance Cobrowse script tag comes before this script tag on your web pages. In general, we encourage you to place the Glance Cobrowse script in the header of your web pages. In the Embedded Services Chat generated code, add the following script after your Glance Cobrowse script. Here is an example of the Cobrowse script tag and the glance chat listener script.
Warning
You need to enter your group ID where indicated YOUR_GROUP_ID_HERE.
```html ``` This will connect Glance to Messaging In-App Web on your website. ### Try it Out Once you have completed the steps, complete a chat session on your website. Once the chat view loads in the agent console, the Join button should light up orange, and you should be able to connect to a Cobrowse session with one click. ================================================================= FILE: /developer/integrations/salesforce/salesforcetrouble/general ================================================================= The following are answers to some common errors you may come across. ## Error: "No Cobrowse Settings" **Console:** Lightning **Problem Description** I receive this error when implementing Glance on a Visualforce page. **Remediation** Check to see that [My Domain is enabled](https://developer.salesforce.com/docs/atlas.en-us.lightning.meta/lightning/intro_reqs_my_domain.htm) for the org. That is required for the 3.x package since 3.x is built using lightning components. ## Error: "Unable to lookup session" **Console:** Lightning or Classic **Problem Description** You receive this error when trying to start a session. **Remediation** This indicates a failure of the SSO mechanism between the Salesforce package and Glance. If you can, examine the console log. You should see a message that looks like this: `Partner id = 12345, partneruserid = Jdoe, loginkey = $1$1234567890$QciuQ4tqBz8toABCD1RUdei2UUj8QmiQstwisV02OkU, vid = 1234BFC71CC948E3ABC1B1CD1234A7B1465A1C660D5A5` Confirm that the following values are present and correct: * **Partner ID** - If the Partner ID is missing or incorrect, this indicates a problem with the **Default Glance Admin** on the **Glance Company Settings** tab, re-enter admin credentials if necessary. * **partneruserid** - The partneruserid should correspond to an active account for that Glance group. If an active Glance group does not exist, one can be provisioned through the **My Account** portal.
Note
If both the Partner ID and partneruserid are valid and the login key is still invalid, try re-entering the API Key in the Glance Company Settings tab.
## Error: "SSO Partner User ID not set" **Console:** Lightning **Problem Description** The administrator has enabled SSO in Glance Company Settings, and receives the error above. **Remediation** This error happens if the identified PUID field for SSO is blank. So if you enable SSO, set 'SAML Federation ID' as the PUID field, but it's blank, you get this error. The fix is to enter the PUID in the field, or change the settings to point to a correct one.
Note
If this error is received by all users, verify the Salesforce user associated with the Glance Admin is still active.
## Error: I add the Glance component to a record page, but no Glance buttons are there. **Console:** Lightning **Problem Description** I edit a page layout to add the Glance component, save the page, and when I go back to the case none of my changes are present. **Remediation** * There is a lag time for page layout changes, wait 15 to 30 minutes and refresh. * Verify you don't have multiple page layouts. 1. Navigate to **Setup** (Gear Icon) > **Object Manager** > **Lightning Record Pages** > Check for extra layouts and delete them. 2. Review the only layout that is left and ensure the Glance buttons are on the page. ## Error: I added the URLs required for Enhanced Domains, but I still get an error when clicking Join **Problem Description** I went through the Enhanced Domains URL setup documented [here](../../sf_settings/#settings), but I get an error in the console when I click join. Enhanced Domains URL console error **Remediation** If this is a sandbox of a production org, verify that the URL for the lightning base URL in glance company settings matched the URL for the object in the record page. Sometimes the domain for enhanced domains can take up to 24 hours to deploy. [Help And Training Community](https://help.salesforce.com/s/articleView?language=en_US&type=5&id=sf.domain_name_enhanced_enable.htm) Additionally, verify you have not copy/pasted the domain into a text editor, there is a `- -` dash that can get converted into an em dash `- ` accidentally. **Problem Description** When I click the join button I get the whitelisting error and I have already tried adding the Visual Force URL and Lightning URL to Glance Company Settings. **Remediation** Add the Lightning URL to **Setup** > **Session Settings** > **Trusted Domains for Inline Frames** exactly as it appears in the error message. ## Error: My users don't see the Glance buttons **Console:** Classic **Problem Description** When enabling a visualforce page with Glance buttons in Salesforce Classic, you added Glance buttons to your visualforce page and saved it following these instructions. When you went to look at case details, you had no Glance buttons. **Remediation** Edit your case assignment rules to use the new page layout with Glance buttons. To edit case assignment rules: 1. Enter the object you want to add Glance buttons to in the quick find bar. This example uses cases. 2. Under **Cases**, select **Case Page Layout**. 3. At the top of your **Case Page Layouts**, select the **Page Layout Assignment** button. 4. Click **Edit Assignment**. 5. Select the profiles for which you want to enable the Glance buttons. 6. From the **Page Layout to Use** menu, select the page layout that you added glance buttons to. 7. Click **Save**. Go back to **Case Details** to verify your case has buttons now. ## Error: Glance configuration problem. Cannot find Glance User. Contact your Glance Administrator. **Problem Description** This error appears after the user clicks Join, or after clicking Join, entering the key and clicking Connect. **Remediation** This issue occurs if: * A user has no federation ID. * A user has a federation ID that does not match any in the group. * The Glance Company settings use a custom field for the PUID that is hidden from the user. To fix this, the custom field (with the PUID in it) must be marked as 'Visible' for the user (or the user's role). ## Error: Glance configuration problem. Glance API key error. Contact your Glance Administrator. **Problem Description** This can occur if the loginkey hash is invalid (partnerid, partneruserid or APIKey may not match hash). **Remediation** Check the API key in Glance Company Settings. ## Sandbox origin mismatch error (Console error: Glance VF - message skipped - origin mismatch) **Problem Description** Presence won't work after initial setup. You might receive `Console error: Glance VF - message skipped - origin mismatch` or `vid=null` in the console. **Remediation** This may occur if the agent doesn't have access to the field in which presence is configured. To resolve, pick a field that is displayed on the page and confirm the value. ## Glance component just keeps spinning when a user attempts to load the Glance component inside a Salesforce object. **Problem Description** This occurs when the user does not have the Glance user permission set. **Remediation** Add the Glance user permission set to that user. ## Error: I click Join and nothing happens **Problem Description** After entering a session key, I click Join and nothing happens. **Remediation** The pop-up blocker may be preventing an agent from joining a session. 1. Click the pop-up icon in the address bar. 2. Click **Always allow popups from Glance** and then click the link above it (this is only required to do once). ## Error: Trusted domain issue, please enable your domain **Problem Description** I get an error that says "trusted domain issue, please enable your domain" **Remediation** If you use Safari, go to Privacy settings and verify that "prevent cross-site tracking" is not selected. ## Error: Glance Has Not Fully Loaded **Problem Description** Users receive this message when opening Salesforce objects with Glance buttons. Glance Has Not Fully Loaded error message **Remediation** * Ensure the API key is accurate for the group. * Ensure the PUID is set appropriately in the Glance Backend Admin and the User in Salesforce. * Make sure cookies are allowed in your browser. * If your org uses Enhanced Domains, install the Glance Package [Glance Package](../../install_sf/#download-the-glance-for-salesforce-application) (3.12 or later), and follow the [instructions](../../sf_settings/#settings) to set the VisualForce URL. * If you have enabled some clickjack settings, you need to whitelist your Salesforce org domain to start Glance sessions: 1. Go to Setup (gear icon). 2. In the search bar, enter "Session Settings". 3. Scroll to the **Clickjack Protection** section. 4. If **Enable clickjack protection for customer Visualforce pages with headers disabled** is selected, the salesforce org must be added to the Trusted Domains section. Trusted Domains configuration in Salesforce 5. Scroll down to the **Trusted Domains for Inline Frames** section and click **Add Domain**. 6. Add the domain listed in the error message. 7. Click **Save**. ## Error: A component error occured! **Problem Description** Users without access to Glance see this error when they open a Salesforce object configured with Glance buttons. **Remediation** Follow [these steps](../../hide_component/) to hide the Glance buttons for users without access. ================================================================= FILE: /developer/integrations/salesforce/salesforcetrouble ================================================================= While Glance for Salesforce is designed for seamless integration, occasional configuration mismatches, environmental restrictions, or synchronization errors can occur. This section provides targeted troubleshooting guides and remediation steps to help administrators quickly diagnose and resolve common issues to keep agents connected with customers. Choose a troubleshooting category below to find specific error messages and their solutions: * **[General Troubleshooting](./general/)** Solutions for common configuration errors, missing Glance buttons, SSO/Login Key authentication failures, and clickjack protection blocks. * **[Sync Troubleshooting](./sync/)** Remediation steps for data synchronization failures, duplicate Glance Session records, "User Not Found" errors, and API Server Error 666. ================================================================= FILE: /developer/integrations/salesforce/salesforcetrouble/sync ================================================================= The following are answers to some common sync errors you may come across. ## Error: Glance session data fails to sync / "Glance API Server Error: 666 - Invalid admin credentials" **Console: Lightning** **Problem Description** If your Glance session data is failing to sync with your Salesforce org, check the "Glance sync history" tab and look for this error: Glance sync history tab showing Glance API Server Error 666 **Remediation** 1. Navigate to the Glance Company Settings tab. Scroll down to the Glance for Salesforce Users section and delete the admin user account. 2. Then navigate to the Glance User Settings tab and re-enter the admin's Glance username and password.
Warning
This error will occur if the same Glance account is used in multiple Salesforce orgs. If session data needs to be synced to multiple orgs, use different Glance credentials for each org.
## Error: Glance session data fails to sync / "Only Whitespace Content Allowed Before Start Tag and Not T" **Console: Lightning** **Problem Description** If your Glance session data is failing to sync with your Salesforce org, check the "Glance sync history" tab and look for this error: Glance sync history tab showing whitespace content error **Remediation** 1. Navigate to the Glance Company Settings tab. Scroll down to the Glance for Salesforce Users section and delete the admin user account. 2. Then navigate to the Glance User Settings tab and re-enter the admin's Glance username and password.
Warning
This error will occur if the same Glance account is used in multiple Salesforce orgs. If session data needs to be synced to multiple orgs, use different Glance credentials for each org.
## Date Range More Than 31 Days **Problem Description** This error message appears on the Glance sync history tab: ```text Glance API Server Error: 666 - date range cannot be more than 31 days ``` **Remediation** Contact Glance for remediation. ## User Not Found **Problem Description** Sessions fail to sync for certain users. The Sync History tab shows a comment that says `User not found`: Sync History tab showing User not found comment **Solution** * Confirm the user has an active Salesforce account. * Confirm the user has a PUID when using the Login Key authentication method or SAML 2.0. A PUID is required for all users using Glance for Salesforce. * Confirm the PUID matches between Salesforce and the Glance back end. Note that the sync matching is case-sensitive for PUID, while SSO is not. This means that a Salesforce user with a case-mismatch in their PUID could successfully conduct Glance sessions but have the sync fail. ## Duplicate Glance Session Objects Created **Problem Description** Multiple Glance session objects are being created for the same Glance session, and only one has information on the end time, etc. suggesting it was synced correctly. ### Possible Cause #1 Instead of syncing data back to the Glance Session record that was created at session launch, the sync process creates a new Glance session with the same start time, session key, etc. and syncs the end time and duration to that new object. In the screen shot below you can see the pairs of Glance Session records: each pair has the same start time, but only one has the end time/duration/Glance sync. List of duplicate Glance Session records in Salesforce ### Solution for Cause #1 This is caused by there being multiple Salesforce accounts with the same email address which was being used as the PUID by Glance. PUID needs to be a unique value across all users. ### Possible Cause #2 The agent has pop-up blocking enabled in their browser. When they attempt to join a session, the agent viewer window is blocked from opening by the browser. It's not always obvious to the agent what is happening, so they may try to join a second or third time, with each pop-up being blocked. Browser pop-up blocker warning When the sync happens, it will only sync data for one of the records. ### Solution for Cause #2 Have the agents click the radio button to always allow pop-ups from their Salesforce org. ### Possible Cause #3 The org is configured to use SAML authentication but there is a misconfiguration in the **Partner User ID Field** field: Salesforce Single Sign On settings showing Partner User ID Field When an org uses SAML for authentication, having a misconfigured PUID field will not cause any problem with authentication�because the PUID is not being used to generate a login key�so the agents will be able to conduct sessions even with a misconfiguration here. However, the user's PUID is involved in matching the records during the sync, so a misconfiguration here would result in the sync not being able to match the sessions correctly. ### Solution for Cause #3 Make sure the **Partner User ID Field** field is configured correctly and that the value for each user in Salesforce matches what's configured for their account in glance.net. ================================================================= FILE: /developer/integrations/salesforce/sf_buttons ================================================================= The Glance buttons can be used from any record in Salesforce. These buttons are added by putting a Lightning Component on a Lightning Record Page or a small Visualforce page on a Page Layout.
Tip
To make it easy for your agents to use Glance with customers, we recommend putting the buttons somewhere visible on your pages without requiring a scroll or click to expose them, especially if you are using 1-Click Connect to illuminate the Join button when your customer is present on your website.
## Add the Glance Buttons to Lightning Records To add the Glance buttons in Lightning: 1. Open the app from the App Launcher that will be used by your Glance users, such as the **Service Console**. 2. Navigate to a record type that you want to add Glance to, like a **Contact** or **Case**. 3. Click the Gear icon in the top right corner and choose **Edit Page**. 4. On the left sidebar, under **Custom - Managed**, click and drag Glance over onto the console wherever you want Glance to be placed. 5. Click **Save**. 6. If prompted, click **Activate**. 7. You might be prompted to [assign the record page](https://help.salesforce.com/articleView?id=lightning_app_builder_customize_lex_pages_activate.htm&type=5). 8. After you assign the record page, click **Save**. 9. In the top right corner, click **Back**. 10. Repeat steps 2 to 9 to add Glance to any other Lightning Record Pages. **Example:**
Glance Buttons highlighted on a Salesforce Lightning Record Page ## Add Glance Buttons to Page Layouts in Classic
Warning
If you add these buttons to Classic, it will make the buttons appear clipped on the Details of a record in Salesforce Lightning.
Follow these steps to add a Glance button to standard objects you will be using with Glance. This example uses Case layouts. 1. On the top-right corner of Salesforce Classic, select Setup. 2. In Quick Find, search for **Case**. 3. Choose **Case**. 4. Click on **Page Layouts**. 5. Select the **Edit** link in the row **Case Layout**. 6. At the top of the page, you should now see the Case Layout section. 7. Select the **Visualforce Pages layout** option. Visualforce Pages layout option in Salesforce Classic 8. From the right-hand panel of Case Layout, select **GlanceFromCase**. 9. Drag the **GlanceFromCase** to the **Case Detail** section.
_**Note:** We recommend placing GlanceFromCase at the top of the right-hand column of the Case Detail section._ 10. The page is too big by default. Hover over **GlanceFromCase** and click on the wrench icon. 11. In the Visual Page Properties pop-up window, change the Height from **200** to **24** pixels. 12. Click **OK**. 13. Scroll back up the page and find the Case Layout section. 14. Click **Save**. 15. After creating your page layouts, click the **Page Layout Assignment** button to control which page layout users see by default. Below is an example of the Show, View, and Join buttons added to a Case object:
Show, View, and Join buttons added to a Case object in Salesforce Classic ================================================================= FILE: /developer/integrations/salesforce/sf_community ================================================================= This page outlines the process to implement Glance Cobrowse features on Salesforce Lightning Digital Experiences.
Info
Salesforce has renamed Communities to Digital Experiences. More information is available here.
## Prerequisites Before you begin, ensure that: * You have a Glance Account. * You have set up a Salesforce Digital Experience, and the Digital Experience is enabled in your org. To enable a Digital Experience, go to Setup, enter _Digital Experiences_ in the search bar, and select **All Sites** > **New**.
Note
If you want to enable Glance's 1-Click Connect capability from chat in a Digital Experience, see this section.
## Create a Cobrowse Button First, you will create a button where you will initiate Cobrowse sessions. 1. Log into the Salesforce Org as the system admin. 2. Navigate to Setup and enter _All Sites_ into the **Quick Find** bar. 3. Select **All Sites** from the returned results on the left menu bar. 4. Locate the Site where you want to add Glance Cobrowse, and select **Builder**. 5. Create a new lightning component button where you will initiate cobrowse. Note you are creating a default button, not using a lightning button. 6. Go to the **gear icon** (settings) > **Developer** and click the **Developer Console** button in the top-right corner. 7. Select **File** > **New** > **Lightning Component**. 8. Enter a name and description and click **Submit**. 9. Open the `.cmp` file that was created, and paste in this code: ```html ``` 10. Save the `.cmp` file. 11. On the right-hand side, click **Controller** to open the `buttoncontroller.js` file. 12. Paste the following code and save the file: ```javascript ({ startCobrowse: function(cmp, event) { window.postMessage("startCobrowse", "*"); } }) ``` 13. Go to the **lightning icon** (Components) and scroll down to **Custom Components** to find the Cobrowse button you created. 14. Drag the button onto your page. ## Tag the Digital Experience Site Next, modify the security settings and add the Cobrowse script tag. 1. Log in as the system Admin. 2. Click the **gear icon** (Settings) from the left-side menu. 3. Select the **Security and Privacy** tab. 4. Update the Content Security Policy (CSP): 1. For **Security Level**, select **Relaxed CSP: Permit Access to Inline Scripts and Allowed Hosts**. 2. Under **Trusted Sites for Scripts**, click the **Add Trusted Site** button and add the following sites: * `https://*cdn.glance.net` * `https://*.glance.net` 3. Click the **CSP Trusted Sites** link in the descriptive text of the section. Salesforce CSP Trusted Sites settings 4. Click **New Trusted Site** to add the following sites: * `https://*cdn.glance.net` * `https://*.glance.net` * If you are using 1-Click Connect from Chat or a button, `wss://*.glance.net`
Note
If the New Trusted Site button does not display, click the Setup gear icon in the top right corner and choose Setup. Input "CSP" in the Quick Find Bar and select CSP Trusted Sites.
5. Under CSP Directives, select all of the directives: * Allow site for connect-src * Allow site for font-src * Allow site for frame-src * Allow site for img-src * Allow site for media-src * Allow site for style-src 6. Click **Save**. 5. Select the **Advanced** tab and click **Edit Head Markup**. 6. Add the **Glance Cobrowse JavaScript Loader Tag** in the **Head Markup** to allow the cobrowse session to happen on the site. This is an example of the script tag and includes the cobrowse script tag and listener script; replace your group ID where specified: ```html ``` 7. Click **Save** at the bottom of the page, and click **Publish**. You will receive an email message after the site has finished publishing. 8. Check and confirm that the cobrowse functionality is performing as expected on the site pages by clicking the Cobrowse button. ## Set Up 1-Click Connect with Chat in Digital Experiences You may want to enable 1-Click Connect from chat in your digital experience, to allow agents to join sessions from a digital experience via chat. ### Prerequisites * You have a Glance Account. * You have set up a Salesforce Digital Experience, and the Digital Experience is enabled in your org. * You have enabled chat in your Digital Experience site. ### Instructions 1. Click the **gear icon** (Settings) from the left-side menu. 2. Select the **Advanced** tab and click **Edit Head Markup**. 3. Paste this code, replacing `YOUR_GROUP_ID_HERE` with your Glance Group ID. ```html ``` ================================================================= FILE: /developer/integrations/salesforce/sf_custom ================================================================= Out of the box, Glance is configured to easily work with Accounts, Campaigns, Cases, Contacts, Leads, and Opportunities. If your Glance users are primarily working from Custom Objects or cloud-unique objects like Person Accounts or Households, there are a few extra steps to enable Glance for those objects: 1. Add a Lookup field to the Glance Session object for your custom object. 2. Configure the Glance Buttons for that object in Company Settings. 3. Add the Glance buttons to that object's record page.
Warning
Support for Custom Objects is only available in Lightning Experience. While you have the ability to set up Custom Objects in Salesforce Classic, using Glance with Custom Objects is only available in Lightning.
Here are the detailed steps: ## Add a Lookup Field to the Glance Session Object A Lookup field defines a relationship between a Glance Session record and a custom object record. This makes it possible to log Glance Sessions related to custom object records and appear in a Related List on that object. ### Edit Glance Session Object in Lightning 1. From Setup in Lightning, go to **Object Manager**. 2. Click **Glance Session**. 3. Click **Fields & Relationships**. 4. Click **New**. ### Edit Glance Session Object in Classic 1. From **Setup**, in **Quick Find**, enter **Objects**. 2. Under **Create**, click **Objects**. 3. Click **Glance Session**. 4. At the top, hover over **Custom Fields & Relationships** and click **New**. ### Add the Lookup Field (Lightning or Classic) 1. At Step 1, select **Lookup Relationship** and click **Next**. 2. At Step 2, in the dropdown, choose your custom object and click **Next**. 3. At Step 3, enter a **Field Label** and **Field Name**. The default for **Field Label** is fine, but it helps if Field Name has `Glance_` before it (e.g., `Glance_Household`). Then click **Next**. 4. At Step 4, set field-level security if you like, then click **Next**. 5. At Step 5, click **Next** to add the field to the default **Page Layout**. 6. At Step 6, you have an option to add a Glance Sessions related list to that object's record's page layout. 7. Click **Save** to create the field. ## Move the New Lookup Field in the Glance Session Page Layout 1. In Classic while still in the object editor, at the top, hover over **Page Layouts** and click **Edit** next to Glance Session Layout. 2. In Lightning while still in the Object Manager, on the left, click **Page Layouts**, and then **Glance Session Layout**. 3. Move the newly-created Lookup field from the **Information** section into the **Related Records** section. 4. Click **Save**. ## Configure the Glance Buttons for the New Object With the Lookup relationship in place, you can now configure the Glance Buttons for the object. 1. Return to Glance Company Settings from the App Launcher or from the Glance app. 2. At the top, click **Edit**. 3. In the Glance Buttons section, click **Add**. 4. In the new row where it says **-None-**, click the dropdown and select your custom object. 5. Configure the rest of the rows for your custom object. 6. Scroll back to the top and click **Save**. ## Add the Glance Buttons to Your Custom Object After the relationship is defined and the buttons are configured, the last step is to actually add the buttons to your record page for your users to access. To add the Glance Buttons in Lightning, simply follow the standard steps for adding the Glance Lightning Component to a Lightning Record Page, and save it. ================================================================= FILE: /developer/integrations/salesforce/sf_login ================================================================= # Log in to Glance in Salesforce You will need a Glance username and password with administrative rights. For a Glance account, please contact your Glance representative or submit a case [here](/users/account-management/contact).
Warning
Using the same Glance account in multiple Salesforce orgs will cause problems when syncing session data between Glance and Salesforce. If session data needs to be synced to multiple orgs, use different Glance credentials for each org. For more information on troubleshooting sync issues, see here.
After installing the package, you will need to enter your Glance username and Glance password in the Glance User Settings section. The Glance User Settings Tab is used to log in with your Glance credential to sync Glance sessions. You can also hide the Glance User Settings tab by cloning the Glance User Permission set and modifying the permissions so that the page is not visible. ## In Lightning To locate Glance User Settings in Lightning: 1. Go to the App Launcher by clicking the 9-dot square in the top-left corner. 2. Search for _Glance_. 3. Select **Glance**. 4. From the top navigation bar, click on **Glance User Settings**. 5. Review the License Agreement Terms and click **I Accept**. 6. Click **Save**. When finished, go back to **Glance Company Settings** by clicking on the tab at the top. In this guide, scroll down to the Configuring Glance Company Settings section. ## In Classic To locate the Glance User Settings page in Classic: 1. At the top-right corner of your Salesforce instance, click the Salesforce App Menu. A drop-down menu will appear. 2. Select **Glance**. 3. On the top navigation bar, click the **Glance User Settings** tab. Glance User Settings tab in Salesforce Classic 4. Review the License Agreement Terms and click the **I Accept** button. 5. Under Already use Glance, enter your **Glance Address** and **Password**. 6. Click **Save**. When finished, go back to Glance Company Settings by clicking on the tab at the top. Glance Company Settings tab showing successful login ================================================================= FILE: /developer/integrations/salesforce/sf_relatedlist ================================================================= If you would like to show past Glance Sessions related to your records, you can add a Related List to the Page Layout with the following steps: 1. From Setup, choose an object's **Page Layout** from **Object Manager** in Lightning or from **Quick Find** in Classic. 2. From the Page Layout Editor, scroll down to Related Lists. 3. From the palette at the top, click **Related Lists** on the left. 4. Click and drag **Glance Sessions** onto the page. 5. Adjust the columns displayed if you like. 6. At the top, click **Save**. Repeat these steps for any other record pages that you want to display **Glance Session history**. ================================================================= FILE: /developer/integrations/salesforce/sf_settings ================================================================= At the top of Glance Company Settings are the main settings for the package. It also includes some options to configure single sign-on, and which Glance buttons you want available to your agents. There are five sections on the Glance Company Settings tab: * [**Settings**](#settings): Choose your default admin and set session preferences. * [**Single Sign On**](#single-sign-on-sso-): Manage how your users authenticate with Glance. * [**Presence Settings**](#presence): Enable a button that lights up when a customer is present on your website. * [**Glance Buttons**](#glance-buttons): Choose which buttons display on which objects in Salesforce. * [**Glance for Salesforce Users**](#glance-for-salesforce-users): Manage which users are enabled with Glance. ## Prerequisites Before modifying Settings, verify that: * You are the administrator for your Glance account. * You have entered your Glance username and password on the Glance User Settings tab in Salesforce. ## Settings Choose your default admin and set session preferences. Glance Company Settings tab in Salesforce To configure your Glance settings: 1. From the Salesforce app, click the Glance Company Settings tab at the top. 2. Click **Edit**. 3. Under the Settings section, complete the following steps: 4. For **Default Glance Admin**, choose which Salesforce user is an admin for your company's Glance account. 5. For **Log Sessions Started Outside of Salesforce**, Select this option if your team is using the Glance client to join / start a session. 6. For **Open Glance Session Records**, select this option if you want the user to immediately capture notes in Salesforce during their session or relate the session to other records. 7. For **Chatter When Starting Glance Session**, select this option if you want started or joined Glance sessions posted into the Chatter feed of anyone following that record. The automatic notification includes a link to the session that Chatter users can click to join from any desktop, tablet, or mobile device. 8. For **Debug Mode**, select this checkbox if you need to debug the Glance Package. After you enable this setting, you can see logs for Glance sessions from the **App Launcher** > **Logs**. When you have finished debugging, de-select this checkbox. 9. For **Create Leads for Session Guests**, choose how you want leads created. These options only apply to screen share sessions: * **Never**: This option does not create any new Leads for session guests. * **Who Provide a New Email**: This option creates a new Lead for any guest who provides an email address when joining. A new Lead will only be created if there is no existing Lead with that same email address. * **Who Provide a New Email and Name**: This option creates a new Lead for any guest who provides both an email address and name. 10. For **Sync Frequency**, choose how often updates occur: Hourly, Every 2 hours, Daily, or Never. Synchronization happens relative to the time you first installed the Glance for Salesforce package. * For example, If you install the package at 1:14 p.m. and you synchronize every hour, synchronizations will occur at 2:14 p.m., 3:14 p.m. and so on. * You may run synchronization jobs manually from the **Glance Sync History** page, which is located on the **Glance for Salesforce** navigation bar. * Select the tab, click the **Sync Now** button, and click **Refresh**. Next Sync displays the date and time of the next scheduled sync. 11. For **Max Sync Minutes**, only modify this value if you receive sync issues related to date range issues, such as `date range cannot be more than 31 days`. Defaults to 10080 minutes (7 days). 12. For **VisualForce Base URL**, enter the Visual Force Domain. You can find this value through the following instructions: 1. Go to **Setup (gear icon)** > **VisualForce Pages**. 2. Search for "Glance".
Tip
There are a few glance-related VisualForce pages, so make sure you select the one called simply 'Glance'.
3. Click the **preview** icon to the right of **Security**, this will display the link to the VisualForce page in a new tab. VisualForce preview icon 4. Copy only the `.force.com` part of the URL, no trailing slash. Copy the force.com part of the URL 5. Navigate back to the **Glance Company Settings** page and paste the value into the **VisualForce URL** Field. For example, `https://test--glance.vf.force.com`. Paste VisualForce URL into Glance Company Settings
Tip
Salesforce enhanced domain changes can take up to 24 hours to take effect. Due to this timing, Glance recommends that you enable Enhanced Domains in your Salesforce organization first, then configure and test Glance domain changes over the weekend, or during non-critical business hours.
13. For **Lightning Base URL**, _only complete this step if you added the VisualForce Base URL above and received the following error message when running Glance Sessions: "Error: Glance Has Not Fully Loaded. Ensure that Lightning Domain is added to the whitelisted domains"_. 1. Locate the Lightning Domain URL by going to a case/contact. 2. Copy and paste this value into the **Lightning Base URL** field. 14. Click **Save**. ## Single Sign-On (SSO) Starting in package version 3.13 or later, Glance supports using SAML in addition to the existing login key method for SSO authentication.
Note
SAML SSO is not supported for SHOW and VIEW sessions.
The preferred and most secure way for authentication is through SAML. To enable SSO in Glance for Salesforce: 1. If using SAML, then: * Configure your Glance group to use SAML. More information on setting up a SAML sign-on is available [here](../../saml/saml_setup). * If using presence, you will need to create a least-privileged agent account within the group on [glance.net](https://www.glance.net/). From within the **Account Management** area of [glance.net](https://www.glance.net/), create a user account with a PUID but no other Glance permissions. This will be your **Non-Admin Partner User ID** - see below. 2. Obtain a glance API key. Navigate to [https://www.glance.net/Login](https://www.glance.net/Login) and log in to your Glance account. 3. Go to the **Settings** tab and scroll to the API Key section at the bottom of the page. 4. Copy your API key.
Glance API Key section 5. From the Salesforce app, click the **Glance Company Settings** tab at the top. 6. Click **Edit**. 7. Scroll to the **Single Sign On** section. 8. For **SSO**, select **SAML 2.0** or **Login Key** from the drop-down menu. 9. For **Partner User ID Field**, choose a value from the drop-down. The PUID must be available on the User object in Salesforce, must be unique to each user, and must match the value in the PUID field for the user's account within the Glance system (see the **PartnerUID** field [here](/account-management/manage_users)). It is also common to use a value in the user's **FederationID** field. 10. If you selected **SAML 2.0** for your SSO mechanism, enter the **Non-Admin Partner User ID** mentioned above in the text field. 11. For **API Key**, enter your API Key you obtained earlier from your Glance account.
Salesforce SSO Settings mapping 12. For **SSO Login Expiration**, choose how frequently you want the login key to expire. The default is 3,600 seconds, which is one hour. 13. Scroll to the top and click **Save**. If you are unable to use SAML or Login Key for SSO, every user must sign in with their Glance address and password from the Glance User Settings page. This can be found at the top of the Glance for Salesforce application next to Glance Company Settings. If you are using Cobrowse without any client software, your agents will also need to keep a browser tab open and stay signed into their Glance account. We have a page for this that can be found at [www.glance.net/account/accountkeepalive.aspx](https://www.glance.net/account/accountkeepalive.aspx). ## Presence From the Presence Settings section, you can enable Presence within Salesforce so that the Join button lights up when your customer is present on your website. When the button lights up, the agent can connect with the customer with one click. For more information, see [1-Click Connect Requirements](/users/glance-cobrowse/getting-started/cobrowse_requirements). Presence settings configuration To enable presence: 1. From the Salesforce app, click the Glance Company Settings tab at the top. 2. Click **Edit**. 3. Scroll to the **Presence** section. 4. Select **Enable Presence**. 5. Select **Show Visitor Information** if you want to display visitor information prior to sessions. Refer to the [Viewing Visitor Information](../sf_visitor) page for more details. 6. If you want the visitor to receive a prompt in their browser window to accept before the Cobrowse session starts, select **Show Terms To Visitor Before Connecting**. 7. Click **Save**. ## Glance Buttons This section controls which buttons appear in the Glance Lightning Component when it is on a record. These settings also apply in Classic when the Lightning Component is wrapped in a VisualForce page. By default, most buttons are enabled for Cases, Contacts, Leads and Opportunities. Glance Buttons mapping configuration To modify Glance button settings: 1. From the Salesforce app, click the **Glance Company Settings** tab at the top. 2. Click **Edit**. 3. Scroll to the Glance Buttons section. 4. If you want to modify an existing button configuration: 1. For **Object**, choose which object you want to configure the Glance buttons for. The options in this list are determined by which Lookup fields are on the Glance Session object. 2. For **Show**, select this option if you want the Show button to appear or not. Show enables your Glance user to show their screen and can invite anyone to join. 3. For **View**, choose if you want to be able to view the visitor's screen. 4. For **Join**, select this option if you want the Join button to appear or not. Join allows your Glance user to join Cobrowse and Screen Share sessions started by customers on your website, on their desktop, or in your mobile app. 5. For **Video** select this option if you want to start a video session. More information on configuring this feature is available [here](/glance-cobrowse/video). 6. For **Visitor ID Object**, choose which object the visitor ID is located from. You can choose the object you are configuring Glance on or any parent object. You should only modify this menu if you are configuring join sessions with 1-Click Connect through Glance's Presence service. 7. For **Visitor ID Field**, choose the field to use for the visitor ID from the Object you defined in the Visitor ID Object setting. If no Visitor ID is selected, the Join button will default to asking your user for a session key. 8. For **Auto Join**, select this option if you want users to automatically connect to any in-progress Glance session when they load the record in Salesforce. This is used in cases where Glance is fully integrated into the call center experience. This option is currently only supported for Cases. For more information, contact Glance. 5. If you want to configure Glance for another object, at the top of the section click **Add**. 6. Click **Save**. For instructions on setting up Cobrowse on your website to join a session through CRM integration, please review the Cobrowse [User Guide](/users/glance-cobrowse/getting-started/) and the [Cobrowse Customizing](/users/glance-cobrowse/getting-started/widget-customization/) section. ## Profile Settings This section describes how to configure and enable Profiles to use Glance. If you are provisioning users for the first time, go to the [Granting User Access](#granting-user-access) section. If you are provisioning additional users or modifying existing user settings, go to the [Add Permission Sets](#add-permission-sets) section. ### Granting User Access To enable Glance for your users, you need to: 1. Modify Profile Settings to grant profiles access to Glance buttons. 2. Add permission sets to users that you want to grant access. ### Modify Profile Settings 1. From the Salesforce app, click the **Glance Company Settings** tab at the top. 2. Click **Edit**. 3. Scroll to the **Profile Settings** section. 4. If you want to modify an existing Profile configuration: 1. For **Profile**, choose which Profile you want to configure the Glance buttons for. 2. Under **Show**, **View** or **Join**, check which buttons you want to be available for Users with that Profile. 3. Under **Join In**, choose whether Users with that Profile will join sessions in a Browser Tab or in the Glance Client. Joining sessions in the Glance Client requires Users to have the client installed. If the User is working from Chrome or Firefox, they will also need the Glance browser extension. See [Glance Buttons](#glance-buttons) above for details on button functions. 4. Under **Add Video** choose the type of video experience you would like agents to have. * **No Video:** Agents have no video experience * **Agent Video:** Agents show 1-way Video * **Multi-Participant Video: Small**: Multi-way video that starts in small video mode. Note this configuration is only supported for 1-Click Connect. * **Multi-Participant Video: Large**: Multi-way video that starts in large video mode. Note this configuration is only supported for 1-Click Connect. 5. If you want to modify video profile configurations, choose either **Video (SMS)** or **Video (APP)**.

[Video SMS](/users/mobile-camera) allows you to send SMS text invitations to view the visitor's camera. Video (APP) allows you to start two-way video sessions. Note: your group must be provisioned with access to start mobile video sessions, and you cannot choose both video options. If you want access to these features, [Contact Glance](/users/account-management/contact/). * Under **Video (SMS)**, choose this option if you want to enable users to send visitors an SMS invitation to show the agent their camera. Then under **Mobile Video** choose a default camera for the visitor. * Under **Video (APP)**: choose this option if you want to enable users to start two-way video sessions. Then under **Mobile Video** choose a default camera for the visitor. 5. If you want to configure Glance for another Profile, at the top of the section click **Add**. 6. At the top of the page, click **Save**. ### Add Permission Sets Now modify your permission sets to enable Glance for your users. 1. Click **Setup** (gear icon). 2. In Quick Find, search for _Permission Sets_. 3. Select **Glance User**. 4. Click **Manage Assignments**. 5. Select the users you want to add, and click **Add Assignments**. If a User views the Glance Component and does not have Profile Settings configured for their Profile, or if buttons are not enabled for the Object, they will see an error message. Salesforce Glance Error Message You can [hide buttons](../hide_component) for users without access to Glance, so they do not see this error. ## Glance for Salesforce Users This section shows a list of all the current users including their account and subscription details. If users authenticate with SSO, they will not appear in the list, unless they manually entered their Glance Address / Password. To remove the association between a Salesforce account and the Glance account: 1. From the Salesforce app, click the Glance Company Settings tab at the top. 2. Click **Edit**. 3. Scroll to the Glance for Salesforce Users section. 4. Locate the user you want to modify. 5. In the Action column, click **Del**. 6. Click **OK**.
Warning
Removing association does not delete the Salesforce user or cancel the Glance Screen Share account. It will only remove their Glance username and password from the Glance User Settings, which will prohibit the user from using Glance within Salesforce. To permanently remove a user's access to Glance, contact your Glance Administrator or Glance Customer Success.
================================================================= FILE: /developer/integrations/salesforce/sf_sso ================================================================= A user can be authenticated to various Glance services, either on the web or via the clients using a [Login Key](../../login-key/integration_loginkey). Authentication requires a Glance PartnerId (Group ID), a PartnerUserId (PUID) that identifies the User within the Group, and a LoginKey. All three are passed on a web page URL or a custom protocol URL invoking the client. Glance for Salesforce generates a LoginKey using the API Key provisioned in the customer Org Custom Settings, the PartnerUserId (from the specified Salesforce User field) and the GroupId of the default admin user. Glance for Salesforce then passes the LoginKey, PartnerId, and PartnerUserId to Glance. For web agents, these are posted to the Cobrowse viewer page URL. See the Single Sign-On section under [Joining a Session Through CRM Integration](/users/glance-cobrowse/getting-started/join_session/#join-a-session-through-crm-integration) in the Glance Cobrowse Setup Guide. For agents using the Glance Client (formerly Panorama), the LoginKey and other parameters are passed to the client on the `glancepanorama://...` protocol URL. ## Flow Diagram Salesforce SSO architecture and sequence flow diagram ## Detailed Flow 1. The agent browser requests an object (Lead, Contact, Case) from Salesforce. The Salesforce server serves a page layout with an embedded Glance for Salesforce Visualforce page. 2. The browser requests the Glance for Salesforce Visualforce page. * The Glance for Salesforce Apex code retrieves the PartnerId (GroupId) from Company Settings, PartnerUserId from the specified User field, and shared secret APIKey from Custom Settings. * Generates the LoginKey and `glancepanorama://` protocol URL. * Responds with a page containing buttons, JavaScript, and URL. 3. The agent clicks the Glance button. * The JavaScript invokes a protocol URL. * The registered protocol handler (`GlanceLauncher.exe`) opens with a URL containing the command and parameters: PartnerId, PartnerUserId, LoginKey. 4. The protocol handler `.exe` file launches the Glance Client (if not running), then transmits the protocol URL (via ServiceModel/named pipes). 5. The client calls Glance Web Services to authenticate, passing the PartnerId, PartnerUserId, and LoginKey. 6. Web Services uses PartnerId to retrieve the secret APIKey, and validates the LoginKey. It then maps the PartnerUserId to a Glance user, and validates access and privileges. The web service returns validation, privileges, and settings, and for actions that start a session, returns a server and server key. ================================================================= FILE: /developer/integrations/salesforce/sf_sync ================================================================= Glance automatically creates Glance session records when users launch a Glance session from Salesforce. The Glance session records are automatically associated with the Salesforce object from which the session was initiated. You can access Glance Session data from the app launcher (9-dot menu) and search for Glance Sessions. The record is created immediately upon using Glance with some initial data: * Name * Key * Type * Video Use * Start Time * Duration * Associated Object * ID Salesforce Glance Sessions record details The remaining session details are added after the next scheduled synchronization. Synchronization requires setting a Default Glance Admin in [Glance Company Settings](../sf_settings/#settings). The user selected must be an Admin in your company's Glance Account and must have the Glance Admin Permission set assigned. You can see the history of syncs or trigger a sync manually by going to Glance Sync History tab from the App Launcher or the Glance app. You'll see a list of all recent sync jobs and any failures that may have occurred. Glance Sync History tab in Salesforce ### Session Type Reference Table The following table describes the possible session types that can be listed in the **Type** column. | **Session Type** | **Description** | | :--- | :--- | | **Cobrowse** | A Cobrowse session, meaning the customer shares their web browser with the agent via a session key or presence. | | **Show** | A 'show' screen share session, meaning the agent shows their screen to the guest. | | **View** | A 'view' screen share session, meaning the agent views the guest's screen. | | **Video** | A one-way, multi-way, or mobile camera share video session. Use the **Video Use** column to filter by video type. | | **App** | A mobile Cobrowse session, meaning the visitor shares their mobile app screen with the agent. |
Note
The "Video" session type may include web-based Screen Share. Web-based Screen Share sessions can be distinguished from actual video sessions by looking at the session key. The session key of a web-based Screen Share will start with the session key of its associated Cobrowse session, followed by an "S", and then a random string of a few additional numbers.
================================================================= FILE: /developer/integrations/salesforce/sf_uninstall =================================================================
Warning
Before you uninstall Glance from Salesforce, you first need to remove Glance components, fields, and Visualforce pages from your Page Layouts and Lightning Records. If you attempt to uninstall Glance before completing this step, you should see a report for where these elements are located. You can retrace the steps earlier in this guide on how to remove these elements.
After you take Glance out of your record pages: 1. Go to **Setup** in Lightning or Classic. 2. Under **Quick Find**, type _Installed Packages_. 3. Click **Installed Packages**. 4. Next to Glance, click **Uninstall**. 5. At the bottom of the page, choose if you would like to save the package data for a period of time. 6. Check **Yes, I want to uninstall this package and permanently delete all associated components**. 7. Click **Uninstall**. The package will uninstall within a few minutes. ================================================================= FILE: /developer/integrations/salesforce/sf_visitor =================================================================
Note
To see visitor information, you must use version 3.42 or later of the Glance for Salesforce Package. This feature is only available during 1-Click Connect for Cobrowse or Mobile SDK sessions.
When using 1-Click Connect, agents can preview the visitor's device, browser, and current URL before joining the session. This allows agents to understand the visitor's environment immediately.
Note
Available details may vary depending on the visitor's device.
1. Navigate to the **Glance Company Settings** page within Salesforce. 2. Scroll down to the **Presence Settings** section. 3. Select **Show Visitor Information** to enable this feature. Visitor Information Settings 4. When a visitor is detected on the current Salesforce Object, the **Glance Component** displays the following information: * **Type:** Desktop Web, Mobile Web, or Mobile App (SDK). * **URL:** The URL of the page the visitor is browsing; you can hover over the URL to view the entire path. * **Browser:** The browser the visitor is using and its version. * **OS:** The Operating System for the visitor. Visitor Information Component ================================================================= FILE: /developer/integrations/saml/cryptographic_security ================================================================= Glance requires all SAML transactions to take place over TLS-secured (HTTPS) connections. All identity providers cryptographically sign their transactions. The Metadata Discovery Endpoint you provide to Glance specifies the public key necessary for Glance to verify those signatures. Glance supports signatures using the SHA-512, SHA-384, SHA-256, or SHA-1 algorithms. By configuring your identity provider you may choose the algorithm you prefer from among those choices. Your identity provider may cryptographically sign the document at either the Reply or Assertion level; Glance accepts either. Some identity providers also encrypt their transactions. If your identity provider requires encrypted transactions, Glance must provide a public key to you for that purpose. ================================================================= FILE: /developer/integrations/saml ================================================================= *Secure Transparent Sign-On* (*single sign-on* or SSO) is available for the Glance Client, Glance Screen Share, Glance Device Casting, and Glance Cobrowse. It is also available to sign in to Glance's *Manage Your Account* page. You may configure your account (group) to use SSO. Once configured, it is available to all the users in your account. The Glance service and website is a SAML Service Provider (also known as a Relying Party). Glance uses customer-furnished Identity Providers for secure transparent sign-on. Glance services work correctly when sign-on is initiated either by the Service Provider or the Identity Provider. ## Service Target URLs When accessing Glance via SSO, you use *Service Target URLs* (STUs). More information about STUs is [here](../service-target-urls#stus-with-single-sign-on). ## Identity Providers SAML 2.0-compliant Identity Provider services include (among others): * Microsoft Active Directory Federation Services (ADFS) * Microsoft Entra * Ping * OneLogin * Salesforce.com * CA Single Sign-On (formerly CA SiteMinder) * Okta * Shibboleth Glance's SAML SSO implementation offers optional automatic provisioning (just-in-time provisioning) for new users. If you wish to use automatic provisioning, please contact Glance Customer Success. ================================================================= FILE: /developer/integrations/saml/public-key-update ================================================================= SAML single sign-on uses cryptographically signed tokens known as Assertions. They are signed by your Identity Provider system (Ping Federate or Active Directory Federation Services, for example). Glance checks the signature to make sure the token is valid before accepting it. Your Identity Provider uses the secret key from an internal encryption certificate to sign Assertions. When you provision SAML at Glance, you give our system the public key from that certificate. From time to time, your identity provider's encryption certificate may change. This might be due to routine cryptographic key rotation, or less likely, if your identity provider's secret key was compromised. When your identity provider's certificate changes, you must also change the public key you give our system. You can give us up to five public keys. If you give us multiple public keys, we accept Assertion tokens signed with any of them. ## Changing your public key with a Metadata Discovery Endpoint 1. You may have a URL known as a Federation Metadata Discovery Endpoint from your identity provider. It is the URL of an XML document and looks something like this example: ```text https://identity.example.com/FederationMetadata/2007-06/FederationMetadata.xml ``` 2. Log in to Glance [by following these instructions](/users/account-management/log_in). 3. Go to the **SETTINGS** tab, scroll to the bottom, and click the [Manage your single sign-on settings](https://www.glance.net/account/AccountProvisionSSO.aspx#ctl00_ctl00_MainContent_AccountMainContent_Metadata) link. 4. Scroll to the **Metadata Discovery Endpoint** line, click the **Choose File** button, enter your URL, and press **Open**. 5. Scroll to the bottom of the page and click **OK**. That updates your public key. ## Changing your public key with text 1. Make sure you have the text of your new public key. It is a block of text looking something like this but with more lines. Be sure it includes the first `BEGIN CERTIFICATE` and last `END CERTIFICATE` lines. You will need to copy your block of text and paste it into Glance. *(Don't copy this one, it's just an example.)* ```text -----BEGIN CERTIFICATE----- MIIC3jCCu1gMGvKZTEqhAXZ2TPRz0pREDACTEDzBMA0GCSqGSIb3DQEBCwUAA4IB FAA5AZNwsjP6JkNo8CREDACTED6dXaLhRlUor58QouJca0nfNQebpRlLHZ5mA7Zi 2dVqREDACTED8mABSESbC76J2gKPNnZEFlJyIxXtzMMA18YlrVwdOuU3YZ1noStU oLMVYQqyjPj7MSQTwKwTMY2e -----END CERTIFICATE----- ``` 2. Log in to Glance [by following these instructions](/users/account-management/log_in). 3. Navigate to the **SETTINGS** tab, scroll to the bottom, and click the [Manage your single sign-on settings](https://www.glance.net/account/AccountProvisionSSO.aspx#ctl00_ctl00_MainContent_AccountMainContent_VX09Cert) link. 4. Scroll to the first **X.509 Public Key** line. 5. You may *replace* your existing public key with the new one. In that case delete all the text from the textbox, and paste in your new key. If you do this, Glance rejects future Assertion tokens signed with the old key. 6. You may *add* a new public key to the existing one by pasting it into an empty **X.509 Public Key** text box. If you do this, Glance accepts future Assertion tokens signed with either key. Using multiple public keys allows a graceful key rotation operation. 7. Scroll to the bottom of the page and click **OK**. ## Changing your API Key Refer to [Glance Account Values](/users/account-management/account_values). ================================================================= FILE: /developer/integrations/saml/saml_adfs ================================================================= Glance offers Secure Transparent Sign-On to our services. Follow these instructions to add a Relying Party Trust to your AD/FS instance for Glance services. The Glance Cobrowse service and website is a SAML 2.0 _Relying Party_. Glance customers with on-premises Active Directory / Federation Services may use it to authenticate their subscribers to Glance services. Glance does not support SAML Logout. ## Prerequisites Before you begin: * Your enterprise must use Active Directory / Federation Services, and you are the Windows Domain administrator. Make a note of the URL for your AD/FS Metadata Discovery Endpoint. It looks something like this: `https://adfs.example.com/FederationMetadata/2007-06/FederationMetadata.xml`. * You need an enterprise account on Glance, and you should ask Glance Customer Success to furnish your idpid value, also known as a group id value. It is a number like **999999**. * Your Glance enterprise account must have some subscribers in it. They need to be identified by email address or the field Glance calls Partner User Id. These identifiers come from the LDAP server in your Active Directory installation. Your AD/FS server sends them to Glance, and Glance uses them to identify your users.
_Note: Many customers have Active Directory User Principal Names (UPNs) that are the same as user email addresses. These are often a good choice for the shared identifier._ * You may find it helpful to install two web extensions in your Google Chrome browser. The SAML Message Decoder shows the contents of SAML AuthnRequest and Assertion messages. Edit this Cookie shows the contents of browser session cookies and allows their easy deletion. ## Choose a Method to Identify Users The way you identify your users is up to you. You have these choices for a unique identifier for each user: * **By email address:** Some domains employ User Principal Names (UPNs) for E-Mail addresses, and others have a separate attribute. Either one is satisfactory. * **By an arbitrary identifier:** Such as an employee badge number that you furnish. We call this a Partner User Id. This can, at your choice, be the same as E-Mail address or Glance Address, or some different value. * **By Glance Address:** Values like `emp1234.example.glance.net`. You add your users to Glance by preparing a comma-separated values (CSV) file looking something like this: ```csv FirstName,LastName,Email,GlanceAddress,PartnerUID Stephanie,Grant,stephanie.grant@example.com,sgrant.example.glance.net,e0001 Bella,Greene,bella.greene@example.com,bgreene.example.glance.net,e0023 Dorothy,Bond,dorothy.bond@example.com,dbond.example.glance.net,e0245 Hannah,Greene,hannah.greene@example.com,hgreene.example.glance.net,e0018 Gavin,Nolan,gavin.nolan@example.com,ngavin.example.glance.net,e0008 ``` To upload the CSV file: 1. As an Administrator, go to **Portal** > **Add Users**. 2. Under **Upload a list of new users**, select the CSV file. 3. Click **Upload**. [Contact Glance](/users/account-management/contact) if you need assistance. Notice the user attributes for the first example user, Stephanie Grant: * **E-Mail Address:** stephanie.grant@example.com * **Glance Address:** sgrant.example.glance.net * **PartnerUID:** e0001 (this may be a badge number or similar value defined by you). Before you configure claim rules on your AD/FS server, you must pick one of these attributes as a unique identifier for each user. Your claim rules retrieve your chosen identifier from your LDAP server and sends it to Glance in the authorization token. Specifically, the identifier appears as an Attribute in the SAML `` token. So you must include the user attribute that uniquely identifies each user both in your CSV file and in your claim rules.
Warning
Beware identifiers with values like "000144616": Microsoft Excel strips leading zeros, so your CSV files may contain identifiers as "144616" even though your directory contains them with the leading zeros.

This mismatch prevents Glance from correctly identifying your users. Consider using the Calc program from openoffice.org if you must manipulate this kind of value in your CSV files; it does not strip the leading zeros.
## Integrate Glance with your AD/FS Server To integrate Glance with your AD/FS server: 1. Provision your enterprise account on Glance to integrate with your AD/FS. 2. Create a Relying Party Trust in your AD/FS server for Glance. 3. Create appropriate claim rules for your chosen unique identifier. 4. Test the integration. Once the integration is complete, it generally does not need to be revisited until the encryption certificates need replacement. *These instructions assume you are using email addresses as your unique identifiers.* ## Provision your Enterprise Account to Integrate with AD/FS If your Glance account is configured as an administrator you can do this yourself, but please do not hesitate to ask Glance Customer Success for help. 1. Go to the SETTINGS tab (`https://www.glance.net/account/AccountSettings.aspx`), scroll to the bottom, and choose **Manage your single sign-on settings.**
Glance Single Sign-on Settings menu 2. Choose a Single Sign-On Method of **SAML 2.0**. 3. Provide a Description for the configuration. 4. Click **Choose File** for the Metadata Discovery Endpoint. Paste the URL for your Metadata Discovery Endpoint into the File Name box and click the **Open** button. Then click the **Update** button. This fills in several provisioning items. 5. Next, you need to set several more items: * **User Identity Attribute Name:** Should usually be "email". * **Authentication Context:** Should be "Omit". * **Name ID Policy:** Should be "Email". * **ACS Parameter Style:** Should be "Parameters are placed in the Relay State". 6. Click **Update** once again. ## Create a Relying Party Trust Follow [Microsoft's instructions](https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/operations/create-a-relying-party-trust) on creating a relying party trust. Select the **Relying Party Trusts** folder in the **AD FS Management** console, and use the Actions sidebar to add a new **Standard Relying Party Trust**. This starts the **Add Relying Party Trust Wizard**. 1. On the **Select Data Source** screen, select the last option, **Enter data about the party manually**. 2. On the **Specify Display Name** screen, enter an appropriate value such as "Glance Networks." 3. On the **Choose Profile** screen, choose **AD FS profile**. 4. Skip over the **Configure Certificate** screen. 5. On the **Configure URL** screen, choose **Enable support for the SAML 2.0 Web SSO protocol**. Using your idpid value in place of 999999, enter `https://www.glance.net/account/GetLoginKey.aspx?idpid=999999` in the **Relying party SAML 2.0 SSO service URL** box. 6. On the **Configure Identifiers** screen, enter `glance.net/sp/1` into the **Relying party trust identifier** box and click the **Add** button. 7. On the **Configure Multi-factor Authentication Now?** screen, choose an appropriate value for your organization. 8. On the **Choose Issuance Authorization Rules** screen, choose **Permit all users to access this relying party**. 9. On the **Ready to Add Trust** screen, check the box marked **Edit Claim Rules** and click **Close**. ## Create Claim Rules Now that your Relying Party Trust is set up, your next step is to create appropriate claim rules. You must create a pair of rules, one from each of these templates: * **Send LDAP Attributes as Claims** * **Transform an Incoming Claim** Use the following steps in the **Edit Claim Rules** screen. 1. Click **Add Rule...**. 2. On the **Select Rule Template** screen, choose **Send LDAP Attributes as Claims** from the **Claim rule template** dropdown menu. 3. On the **Edit Rule** screen: * Put an appropriate name into the **Claim rule name** field (e.g., "Email" or "UPN"). * Choose **Active Directory** from the **Attribute store** pulldown menu. * From the **LDAP Attribute** dropdown menu, choose an appropriate LDAP field. E-Mail-Addresses or User Principal Names might be good choices if your chosen unique identifier is E-Mail. * From the **Outgoing Claim Type** dropdown menu, choose **E-Mail Address**. (If you have chosen some other unique identifier, pick the appropriate type for that). * Click **Finish**. 4. Back on the **Edit Claim Rules** screen, click **Add Rule...** again. 5. On the **Select Rule Template** screen, choose **Transform an Incoming Claim** from the **Claim rule template** dropdown menu. 6. On the **Edit Rule** screen: * Put an appropriate name into the **Claim rule name** field (e.g., "Email Transform"). * From the **Incoming claim type** pulldown menu, choose **E-Mail Address** (or the same value you put into the Outgoing Claim Type for your first claim rule). * From the **Outgoing claim type** pulldown menu, choose **Name ID** (or Unspecified if using another unique identifier). * From the **Outgoing name ID format** pulldown, choose **Email**. This choice must match the Name ID Policy setting in Glance's provisioning screen. * Choose **Pass through all claim values**, and click **OK**. 7. Back on the **Edit Claim Rules** screen, click **OK** again. ## Identity Provider-Initiated (IdP-initiated) SAML SSO via AD/FS You may want your users to initiate their Glance sessions directly from AD/FS, rather than using a Glance STU. To support both IdP-initiated and service provider initiated Glance sessions, you must make a small change to the Relying Party Trust configuration. You must add a second SAML Assertion Consumer Service endpoint to the one you added in the Relying Party Trust Wizard. 1. To do this in the AD/FS Management Console, first find Glance's Relying Party Trust, and open its **Properties** box.
AD FS Management Console Properties box 2. Choose the **Endpoints** tab, and click the **Add SAML...** button.
AD FS Endpoints tab Add SAML button 3. Add another endpoint URL. It is the same as the URL above with `&sso=1` appended to it. In our example, it would be `https://www.glance.net/account/GetLoginKey.aspx?idpid=999999&sso=1`. Make sure to set the **Binding** to POST and the **Index** to 1. Check **Set the trusted URL as default**.
Adding Endpoint URL with sso=1 parameter 4. Click **OK**. You should now see two items in the **Endpoints** tab. Click **OK** again.
Two items successfully configured in the Endpoints tab ## Test your Integration * Make sure you have the correct idpid value for your Glance account. It is a number like 999999. We also call these values Group Ids. If you don't have this value, ask Glance Customer Care to provide it. * Issue this web request from your browser, using your own idpid in place of `999999`: `https://www.glance.net/account/GetLoginKey.aspx?idpid=999999&sso=1&test=11` * Your AD/FS will prompt you to log in. * You will see a diagnostic page. At the top of the page, you can see the claim values (the SAML attribute values) presented to Glance by your AD/FS. One field on the page shows the SAML Assertion token your AD/FS server sent to Glance's server. Other fields show such things as the Glance user associated with your AD/FS domain login (if one is found). If you use identity provider initiated sign-on, test it. Enter the URL for your domain's AD/FS, log in, and choose Glance. The URL is below. Substitute your own AD/FS hostname for the one in this example: `https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx` ## Troubleshooting If you need help troubleshooting your AD/FS integration please see [SAML Troubleshooting](../saml_troubleshooting/) or [contact Glance](/users/account-management/contact). ## References * Microsoft's documentation: [Create a Relying Party Trust](https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/operations/create-a-relying-party-trust). * [SAML Message Decoder](https://chrome.google.com/webstore/detail/saml-message-decoder/mpabchoaimgbdbbjjieoaeiibojelbhm?hl=en) web extension. * [Edit this Cookie](https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg?hl=en) web extension. * [Glance Browser Extensions](https://glance.net/install/install.aspx) ================================================================= FILE: /developer/integrations/saml/saml_autoprovisioning ================================================================= Customers who subscribe to Glance products offering autoprovisioning can skip the step of pre-provisioning each of their users who must use Glance. Instead, a Glance subscriber account is created on the fly the first time each user accesses the Glance product via SAML single sign-on. ## Requirements You must contact your Glance representative in order to activate autoprovisioning on your account. Autoprovisioning only works for SAML-integrated customer accounts. Set up SAML access to Glance, and verify it is working correctly for Glance subscribers. When valid SAML Assertion documents are being presented to the Glance service, the autoprovisioning user interface uses them to help choose the appropriate attributes to use for new Glance subscribers. Autoprovisioning requires certain identifying attributes to be provided by the customer's SAML single-signon identity provider. To autoprovision an account, Glance needs: * An agreed-upon unique identifier for each new subscriber. * A way to create a Glance Address from the user's profile information. * Name, email, and telephone number attributes are helpful but not required. ## Setting up Autoprovisioning 1. Navigate to **My Account**, then to the **SETTINGS** tab, then scroll down to the **Identity Provider Settings** panel. 2. Click on the link to **Manage your single signon settings**. The **Single Signon Provisioning** tab will be displayed.
Identity Provider Settings showing Single Signon Provisioning tab 3. Verify the **Operational Status** choice is set to **Provisioning**, not **Production**. When the operational status is set to provisioning, Glance captures all the attributes in recent SAML assertions.
Note
If Operational Status is set to Production, change it to Provisioning, press the OK button, and allow some time for subscribers to access Glance via SAML.
4. Choose **Yes** in the **Autoprovision new subscribers** pulldown menu, and click the **Update** button.
Autoprovision new subscribers dropdown set to Yes ## Configuring Autoprovisioning When Glance is integrated with your SAML enterprise single-signon solution, you can automatically create/provision a new Glance account for each new subscriber from your organization. This panel provides the information required to provision these accounts correctly. Glance identifies your subscribers with these attributes (items of data): * GlanceAddress (required) * PartnerUID * FirstName * LastName * Email * Phone * Role Most subscribers need a valid and unique PartnerUID. This can be an employee number or any other unique alphanumeric code assigned by your organization. It can be the same value as the GlanceAddress if you wish. The other information (name, email, and phone number) is not required. It helps support and keep track of subscribers. Your SAML enterprise single-signon solution is configured to present particular attributes of each user to Glance. This panel allows Glance to interpret those attributes correctly so we can provision new accounts for your subscribers. 1. Click the **Configure** button by **Autoprovision new subscribers** to get to the configuration panel.
Configure button for Autoprovision new subscribers 2. Choose which SAML attributes to use for new Glance subscribers.
SAML attribute mapping configuration panel 3. Click in the text box next to **GlanceAddress**, then press the down-arrow key. You'll see an autocompletion menu populated from a recent SAML assertion.
GlanceAddress autocompletion menu populated from SAML assertion 4. Choose the name of an Attribute to use to create the Glance Address. The example values shown next to each attribute name should help you make the choice. In this case, the **username** attribute looks like it might uniquely identify the user. 5. Click in the **Transformation Rules** box, then press the down-arrow key. You'll see an autocompletion menu populated with available transformation rules.
Transformation Rules autocompletion menu The following transformation rules are available: | Rule | Explanation | Example | | :--- | :--- | :--- | | `{GroupDefaultAddress}` | Make a Glance Address from an email and the group default address. | `JohnQPublic@example.com` becomes `JohnQPublic.example.glance.net` | | `{DomainDefaultAddress}` | Make a Glance Address from an email's domain part and the group default address. | `JohnQPublic@cs.contoso.com` becomes `JohnQPublic.cs.contoso.example.glance.net` | | `{LocalPart}` | Return the local part, the part before the @ sign, of an email address. | `John.Q.Public@example.com` becomes `John.Q.Public` | | `{DomainPart}` | Return the domain part, the part before the top-level domain, of an email address. | `John.Bull@uk.example.org` becomes `John.Bull.uk.example` | | `{UpperCase}` | Return the preceding data in upper case. | `john_q_public` becomes `JOHN_Q_PUBLIC` | | `{LowerCase}` | Return the preceding data in lower case. | `John Q Public` becomes `john q public` | | `{CamelCase}` | Return the preceding data in camel case, eliminating hyphens and underscores. | `john_q_public` becomes `johnQPublic` | | `{RandomUppercase(n)}` | Generate a sequence of random uppercase characters. | Use `{RandomUppercase(12)}` to get twelve characters. | | `{RandomDigits(n)}` | Generate a sequence of random digits. | Use `{RandomDigits(4)}` to get four random digits. The generated number may contain leading zeros. | | `{Unchanged}` | Use the input value unchanged. | |
Info
Specifying no transformation rule uses the attribute unchanged.
In this example `{GroupDefaultAddress}` is used, it converts the value `glance1@glance.net.samlbox` (a username on the SAML system in this example) into `glance1.monds.glance.net` (a value based on this account's defaults.)
Tip
It's possible to type a combination of transformation rules and ordinary text in the box. For example, you could type {LocalPart}.support.monds.glance.net. This would result in the example value glance1.support.monds.glance.net.
You may specify SAML Attributes and Transformation Rules for all six items in this panel. You must specify them for the Glance Address, and it's helpful to specify them for partnerUID. 6. Configure either **Glance Address**, **PartnerUID**, or **Email** to use an attribute that appears unchanged as one of the attributes in the SAML assertions. The attribute must uniquely identify the subscriber. In this example (in which the SAML Identity Provider happens to be a Salesforce.com instance), we choose the subscriber's **userId** to be the **PartnerUID**, as follows:
PartnerUID mapped to userId SAML attribute 7. Navigate back to the main **Single Sign-On Provisioning** tab, set the **User Identity Attribute Name** to that same attribute.
User Identity Attribute Name field mapping 8. Navigate back to the Configuration page and scroll down to the **Choose a subscription plan for the automatically provisioned subscribers** section.
Subscription plan section for automatically provisioned users 9. Select the subscription and billing person to be assigned to automatically provisioned accounts. 10. Select the **Default Role to assign**. When an account is created, the role will be assigned based on the rules for the **Role** attribute configured in step 5. The Default Role is used during the following scenarios: * You have not configured a rule for the **Role** in step 5. * You have configured a rule for **Role** in step 5 and the assertion contains the attribute specified in the table, but the value included in the assertion does not match an existing Role for the group. 11. **Assign Role At Login** - If checked, a user's role will be updated to the value specified in their SAML assertion upon each successful authentication, prior to joining the session. * Note that the value in the SAML assertion must match an existing role for the group. Otherwise, the user's role will be updated to the Default value specified in step 10. * **Role** is the only user attribute that can be automatically updated based on SAML assertion attributes during subsequent logins. That completes the configuring autoprovisioning for your account. ## Finishing Provisioning Once the SAML provisioning is complete for the account, you should give it a few days to stabilize. Visit the **Access Log** to observe activity including SAML logins and new subscriber autoprovisioning events. You can see the **Access Log** via a link on the **ACTIVITY** tab on **My Account**. 1. When production is known to be stable, navigate back to the **Single Sign-On Provisioning** tab. 2. Set the **Operational Status** to **Production**.
Info
Sign-on and autoprovisioning events take slightly less time when the status is Production.
Operational Status set to Production 3. Click the **OK** button when changes are complete. ================================================================= FILE: /developer/integrations/saml/saml_faq ================================================================= ### Does Glance act as a SAML Identity Provider? No. Glance acts as a Service Provider, also known as a Relying Party. ### Can I configure single sign-on for only a few users in my account (my group)? No. SAML configuration at Glance is done on a per-group basis. It may be possible to configure your Identity Provider (or Active Directory / Federation Services) to only allow Glance access to certain groups of people in your enterprise. ### How do I require my users to use single sign-on, and prevent them from logging in to Glance directly? 1. Visit the **Settings** tab of the **Account Management** page. 2. Go to the **Password Requirements** panel. 3. Choose the **Subscribers with no passwords** `may not create their own passwords` option. 4. Press **Save Changes**. ### Is single sign-on secure? Yes. Glance, like all SAML 2.0 service providers, uses industry-standard cryptographic security. [Read more here](../cryptographic_security). Glance requires cryptographically signed (authenticated) SAML, and can use encrypted SAML. ### What happens if single sign-on fails for some reason? Can I still get into my Glance account? Yes. To do this, configure a password for an account with administrative privileges. Then [log in to Glance](/users/account-management) with your username and password. Please don't hesitate to contact Glance Customer Success if you need help. ### How do I change my X.509 public key? If your SAML Identity Provider's private key changes, you need to change the public key you provisioned in Glance. [Read this](../public-key-update) for instructions. ================================================================= FILE: /developer/integrations/saml/saml_provisioning ================================================================= Glance's single sign-on provisioning screen is shown here. The best way to obtain values for most fields in this screen is to upload a Metadata Discovery Endpoint XML file. Most identity provider operators can provide it. Glance SAML Provisioning screen ## SAML Provisioning Fields * **Group Number and Name:** Identification of the customer group. * **Single Sign-On Method:** You may choose Off, SAML 2.0, or Encrypted SAML 2.0. Most SAML customers use SAML 2.0 (without encryption). * **Description:** A text field describing the SAML setup. * **Unique Account Identifier:** For some identity providers, this must have a specific value. For example, for Salesforce.com accounts, it should contain the Organization ID. For Entra accounts, it should contain the Tenant Unique Name. If you set it, you can use its value in the `idptoken` parameter in Service Target URLs (described later in this document). If it is not required by your identity provider, you may leave it blank. * **Operational Status:** When you first provision a new account, set this to Provisioning. This setting causes SAML authentication attempts to put entries in the Access Log. When the provisioning is stable, change this to Production. * **Redirect for IdP-initiated sessions:** Some identity providers allow users to initiate single sign-on directly from the identity provider's user interface. This value allows you to redirect those users to an appropriate page on the Glance service. For example, `/agentjoin/agentjoin.aspx` presents the Cobrowse join page to users coming in via the identity provider. This field must contain a relative URL to a page within the Glance backend. It may not contain an absolute URL (any URL starting with `https://`). * **Entity ID:** This is the federation entity ID (also sometimes known as the relying party trust identifier) for the Glance service provider. In most cases, it should be set to `glance.net/sp/1`. Some cloud identity providers will provide the correct value. * **User Identity Attribute Name:** Assertions, the tokens sent to Glance from identity providers, contain one or more attributes describing the authenticated user. Put the name of the attribute uniquely identifying the user. The attribute value must uniquely match the Glance user's Glance Address, Partner User ID, or Email Address. * **Metadata Discovery Endpoint:** A metadata discovery endpoint is an XML document furnished by the identity provider. You upload it to Glance here. Metadata Discovery Endpoints are very helpful because they set most of the required fields on this provisioning page. * **Identity Provider Endpoint URL:** This is the URL, furnished by the identity provider, to which Glance presents authentication requests. A Metadata Discovery Endpoint document contains it. * **Identity Provider Endpoint Type:** Glance presents authentication requests to your identity provider using either HTTPS redirect or an HTTPS POST operation. Your identity provider furnishes this value. A Metadata Discovery Endpoint document contains it. * **Authentication Context:** Most identity providers require elements called authentication contexts when Glance sends single sign-on requests. Others do not allow them. Your identity provider gives you this setting. * **Name ID Policy:** Most identity providers require an element called a NameID Policy when Glance sends a single sign-on request. In most cases, the NameID Policy should specify an Email, but some identity providers require the policy to be Unspecified. Your identity provider gives you this setting. * **ACS Parameter Style:** Your identity provider responds to single sign-on requests using a Glance URL called an Assertion Consumer Service (ACS). In most cases, parameters describing what to do after single sign-on can be appended to the ACS. In some cases, your identity provider passes those parameters in a separate Relay State element. Your identity provider gives you this setting. * **X.509 Public Key:** Your identity provider furnishes one or more public keys for Glance to use when validating Assertions, the tokens sent to Glance from identity providers. The identity provider cryptographically signs Assertions with a private key matching one of these public keys. Cryptographic signing prevents Assertions from being forged. A Metadata Discovery Endpoint contains the public key or keys. See Changing Public Keys below for more information about these fields. * **Encryption Certificate:** When you choose Encrypted SAML 2.0 in the Single Sign-on Method, this field appears. When you use Encrypted SAML 2.0, your identity provider responds to single sign-on requests by sending encrypted Assertions (XML tokens) to Glance. This is the key certificate by which Glance decrypts those documents. The key certificate is secret. A Glance staff member generates it and never sends it to the identity provider. A Glance staff member will upload the key certificate file and then press the **Update** button. The provisioning page will show the corresponding public key. Provide the public key to the person who operates your identity provider. Notice that Encrypted SAML is only used to conceal the contents of Assertions. Assertions are already transmitted via HTTPS Transport Layer Security. Encrypted SAML provides an extra measure of security beyond HTTPS. Most SAML users do not use encryption, but rather rely on HTTPS alone. ## Changing Public Keys Glance supports multiple public keys. Each one is used in turn to attempt to validate each SAML Assertion. From time to time, identity provider operators may replace (rotate) the cryptographic key they use to sign SAML assertions. When this happens, it is necessary for the identity provider operator to furnish the new public key to Glance. These steps allow for seamless key-pair changes, without the need to synchronize changes to your identity provider and Glance's provisioning screen. 1. The identity provider operator generates a new public / private key pair. 2. Glance puts the new public key into the provisioning screen as an "additional public key." 3. The identity provider operator starts using the new key pair. ## Vendor-Specific Provisioning Information Certain vendors of identity provider servers require specific provisioning; this section makes it possible. ### Microsoft Active Directory Federation Services (AD/FS) See [SAML SSO for AD/FS](../saml_adfs). ### Microsoft Entra In Entra, the **Unique Account Identifier** should be set to the Entra Tenant Unique Name. * **User Identity Attribute Name** should be `NameID`. * **Name ID Policy** should be "Email." ### Computer Associates Single Sign-On Some versions of CA's identity provider do not offer metadata discovery endpoint files. You must provide values for the Identity Provider Endpoint URL, the Identity Provider Endpoint Type, and the X.509 Signing Certificate. It may be necessary to choose "Redirect" for the Identity Provider Endpoint Type. ### Ping Identity For Ping Identity, the **Name ID Policy** ordinarily must be "Email." Some Ping Identity providers require a slightly different Assertion Consumer Service: ```text https://www.glance.net/account/GetLoginKey.aspx?idpid=EXAMPLE ``` ### Salesforce.com Metadata discovery endpoint files from Salesforce.com contain the necessary information to configure Glance to use Salesforce.com as an identity provider. ### Onelogin.com Metadata discovery endpoint files from Onelogin.com contain the necessary information to configure Glance to use Onelogin.com as an identity provider. ================================================================= FILE: /developer/integrations/saml/saml_sample ================================================================= The key protocol element in a SAML authentication transaction is passed as an XML document containing an `` stanza. This is sent from your identity provider to our Assertion Consumer Service, in response to a request from a user. The document asserts�makes a promise�that the user mentioned in it has convinced your identity provider that they are who they claim to be. It also asserts that they are authorized by you to use Glance services. This is a sample of an `` document. This particular sample was generated by PingIdentity.com to fulfill an identity-provider originated sign-on request. In ordinary use, we never need to look at these XML documents. But, during initial provisioning and troubleshooting, it can be helpful to examine one or two of them. Notice the attribute items near the end of this example. Look at the `` item. In this example, the user's email address is used uniquely to identify the user. You need to tell us the name of the attribute your identity provider uses to identify your users. ```xml https://pingone.com/idp/glance https://pingone.com/idp/glance hpM9BlriHwQhAL+GXUQwKb+klLM= FlCG--- BASE64 data ----- h/Q== MIIDjC----- BASE64 data -----rrPJNRX1 jNU6f----- BASE64 data -----0SaOLw== AQAB olliejones@glance.net glance.net/sp/1 urn:oasis:names:tc:SAML:2.0:ac:classes:Password https://pingone.com/idp/glance GLANCE sir.glance.a.lot@glance.net 970ead4d-9011-47c6-bcf2-0c6d01f6a342 https://pingone.com/idp/glance ``` ================================================================= FILE: /developer/integrations/saml/saml_setup ================================================================= Secure Transparent Sign-On is available for the Glance Client, Glance Screen Share, Glance Device Casting, and Glance Cobrowse. Glance's service is a SAML 2.0 Service Provider (also sometimes known as a relying party). Glance integrates with customer-furnished Identity Providers for secure transparent sign-on. Glance services work correctly when sign-on is initiated either by the Service Provider or the Identity Provider. SAML 2.0-compliant Identity Provider services include (among others): * Ping * OneLogin * Salesforce.com * Microsoft Active Directory Federation Services (AD/FS) * Microsoft Entra (formerly Azure AD) * CA Single Sign-On (formerly CA SiteMinder) * Okta * Shibboleth Glance's SAML provides automatic provisioning of new subscribers. If you wish to use automatic provisioning, please contact Glance Customer Success. ## Setup A **Metadata Discovery Endpoint** is needed from your identity provider. This is a small XML file or a URL for fetching the file. You also need to tell Glance the name of the attribute in your SAML protocol to use to identify your users (see the Provisioning section). An administrator in your organization can obtain this information. The Glance service provider usually has this Entity ID, but it can be changed if necessary: ```text glance.net/sp/1 ``` The Glance service provider generally has this **POST Assertion Consumer Service (ACS) URL**. Note, however, that particular identity provider software may require something different. ```text https://www.glance.net/account/GetLoginKey.aspx?sso=1&idpid=EXAMPLE ``` Your identity provider may require an **ACS prefix**. It is: ```text https://www.glance.net/ ``` Please enter this information into your identity provider configuration without line breaks. Replace **EXAMPLE** with the value provided to you by Glance Customer Success. ================================================================= FILE: /developer/integrations/saml/saml_troubleshooting ================================================================= ## Tools You may find it convenient to install some Web Extensions into your Google Chrome browser or Microsoft Edge (Version 85 and above) when you are troubleshooting SAML. * **[SAML Message Decoder](https://chrome.google.com/webstore/detail/saml-message-decoder/mpabchoaimgbdbbjjieoaeiibojelbhm?hl=en):** This extension captures and displays SAML documents handled by your browser. * **[Edit this Cookie](https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg?hl=en):** This extension allows you to view, delete, and edit the cookies sent by various web sites to your browser. * **[Glance Browser Extensions](https://glance.net/install/install.aspx):** These help integrate your use of SAML with CRMs like Salesforce. ## Logging When you first provision SAML, set the **Operational Status** to `Provisioning`. When you do that, a Glance staff member can look at the Access Log and see SAML operations, both successful and failed. ## Troubleshooting STU Glance offers a special-purpose service target URL (STU) for troubleshooting SAML. ```text https://www.glance.net/account/GetLoginKey.aspx?sso=1&test=11&idpid=EXAMPLE ``` If you use this STU you should see a page containing diagnostic information. Glance Customer Success can use this diagnostic information to figure out problems. ## Problems with Redirection A user trying to authenticate with SAML may see a text document looking something like this: ```text partnerid=999999&partneruserid=xyz~$1$1540313487$kAXFh9Az665ZTYt8wq48AOJpwXT ``` This is a Glance [Login Key](../../login-key). If the user did not expect to get a login key, but rather some page within www.glance.net, check whether the STU is correct. If the user did not use an STU, but rather came in via an identity provider initiated session, check the value of Redirect for IdP-initiated Sessions. ## Time and Clock Synchronization Problems SAML Assertion tokens expire. It is important that your identity provider server's time-of-day clock is synchronized to a stratum 4 or better time server. At Glance, we synchronize our server time-of-day clocks to *pool.ntp.org*, which is in turn synchronized to the stratum 1 time service at the US National Institute of Standards and Technology. If the timestamp in an Assertion doesn't match the time on our server, the SAML specification calls for us to reject it, and we do. (Timestamps are all in UTC, rather than any particular time zone.) This kind of clock problem can occur during prototyping with temporary identity provider installations. We reject expiring Assertions. Rejecting them makes it more difficult for cybercriminals to use so-called *replay* attacks to gain access to services where they do not belong. ## Users Not Found Often, during initial provisioning, your identity provider sends us SAML assertions matching no users in Glance's system, so SSO logins fail. Mismatches like this can be for several reasons: * The User Identity Attribute Name is set incorrectly on our provisioning screen. * Your identity provider is not configured to send the correct attribute. * The users you send us are not yet provisioned in our system. * The users you send us have not yet had Partner UIDs assigned to them. * The users you send us have Partner UIDs that don't match your identity provider's user identification. This can happen with badge numbers (employee numbers). For example, consider a user with badge number "00144616." The identity provider might strip the leading zeros and send "144616" to us in the Badge attribute when the Partner UID for that user in our system is "00144616." These two versions of the same number do not match. Examining the output of the troubleshooting STU can help identify these user mismatch issues. So can looking at the Access Log. ================================================================= FILE: /developer/integrations/service-target-urls ================================================================= ## What is a Service Target URL? A *Service Target URL* is a hyperlink directly to the Glance service for a task. For example, when a Glance user visits this Service Target URL, they immediately see the page where they can enter a session code from a customer and join a session. (If the user is not yet logged in to Glance, they are prompted to log in first.) Glance Agent Join screen ```text https://www.glance.net/agentjoin/agentjoin.aspx ``` When you set up Glance for your users, you can embed STUs in the web portal or application they use. For example, to produce a hyperlink like the [Join a Glance Session](https://www.glance.net/agentjoin/agentjoin.aspx) to give direct access to a session, add this HTML code: ```html Join a Glance Session ``` ## STUs without single sign-on * `https://www.glance.net/agentjoin/AgentJoin.aspx` prompts for a session key. * `https://www.glance.net/agentjoin/AgentView.aspx?SessionKey=1234` is useful when you already know the session key. It joins the session directly. When using this STU, the actual session key goes in place of `1234`. ### Parameters to the AgentJoin and AgentView STUs You can add these parameters to either the AgentJoin or AgentView STUs to give the identity of the Glance user. Glance shows this identity, when it's available, to the visitor (the person using Glance to ask for help) as the session starts. * `name=User+Name` displays the user's personal information, including name, email, and phone number, as a courtesy to individuals using Glance to request assistance. * `email=user@example.com` displays the user's email. * `phone=(111)222-3333` displays the user's telephone number. ### Parameters to the AgentJoin STU The AgentJoin URL supports optional parameters that can be added to modify and control its behavior. * `viewersamewindow=1` Initiates the session viewer within the same browser window that displays the session key prompt. If this parameter is omitted, Glance will launch the viewer in a new browser window by default. These optional parameters control the prompt on the AgentJoin page. For more information, please contact Glance Customer Success: * `mode=universaljoin` * `mode=chatinvitation` * `mode=smsinvitation` ## STUs with single sign-on For accounts utilizing SAML 2.0 single sign-on, SSO-specific STUs must be used. These require an identity provider identifier, which corresponds to the account's numeric Group ID assigned by Glance. These examples use a Group ID of `EXAMPLE`. Replace `EXAMPLE` with your Glance Group ID or Partner ID. Accessing any STU starts a service-provider-initiated sign-on (login) operation if the user is not yet signed on. These STUs give direct access to sessions. When a Glance user visits one of these STUs, they immediately see the session page. * `https://www.glance.net/agentjoin/AgentJoin.aspx?idpid=EXAMPLE` prompts for a session key. * `https://www.glance.net/agentjoin/AgentView.aspx?idpid=EXAMPLE&SessionKey=1234` is useful when you already know the session key. It joins the session directly. When using this STU, the actual session key goes in place of `1234`. You may use the [optional parameters](#parameters-to-the-agentjoin-and-agentview-stus) mentioned earlier in this page with these STUs. To start an interactive session on Glance's **Account Management** page, use this STU: ```text https://www.glance.net/account/GetLoginKey.aspx?sso=1&idpid=EXAMPLE&redirect=/account/AccountSummary.aspx ``` To obtain a Login Key for use by native client software, the STU is: ```text https://www.glance.net/account/GetLoginKey.aspx?sso=1&idpid=EXAMPLE ``` To show a SAML single sign-on troubleshooting page, use this STU: ```text https://www.glance.net/account/GetLoginKey.aspx?sso=1&test=11&idpid=EXAMPLE ``` More information on troubleshooting single sign-on can be found [here](../saml/saml_troubleshooting). ### Alternative identifiers for your single sign-on account * In place of `idpid=EXAMPLE`, you may use `idpname=EXAMPLE`. When this is done, Glance's service uses a name rather than a number to look up the group. Replace `EXAMPLE` with your account's group name, provided by Glance Customer Support. * In place of `idpid=EXAMPLE`, you may also use `idptoken=TOKENVALUE`. When this is done, Glance's service uses the value you place in the Unique Account Identifier field on the SAML provisioning screen. Replace `TOKENVALUE` with the name you put in that field. This is suitable for things like Salesforce Organization IDs and Azure tenant unique names. * In place of `idpid=EXAMPLE`, it is also possible to provide `idpusername=USER.glance.net`. When this is done, Glance's service uses the username provided to look up the account (Glance group). This option is convenient in cases where the group name is not known but the username is. Replace `USER.glance.net` with the Glance username (also known as the Glance Address) of a user (any user) in the account. If you are not sure what value to use, contact Glance Customer Support. ================================================================= FILE: /developer/integrations/twilio_webchat ================================================================= Flex WebChat must be loaded from the CDN. Glance does not provide an NPM package, which is required for React deployments. 1. Install [Flex WebChat](https://www.twilio.com/docs/flex/developer/messaging/webchat/setup#option-1). 2. The following code example contains Flex WebChat and Glance Presence functionality. Update the code with your Account SID and Flex Flow SID: ```html ``` 3. Set up a [Flow](https://www.twilio.com/console/studio/flows) for Flex WebChat: 1. From the Twilio Console > **Studio** > **Manage Flows**, select **Webchat Flow**. 2. In the **Widget Library** > **Flow Control**, select and drag **Set Variables** onto the canvas. Click the widget to edit. 3. Click the plus sign on the right side of **Variables**. 4. For **Key**, input `glance_visitor_id`. 5. For **Value**, input `{{trigger.message.ChannelSid}}` 6. **Save** the variable. 7. **Save** the widget. 8. Wire the widget to the **Incoming Message Trigger**. 9. In the **Widget Library** > **Connect Other Products**, select and drag **Send to Flex** onto the canvas. Click the widget to edit. 10. For **Workflow**, select **Assign to Anyone**. 11. For **Channel**, select **Programmable Chat**. 12. For **Attributes**, input `{"name": "{{trigger.message.ChannelAttributes.from}}", "channelType": "{{trigger.message.ChannelAttributes.channel_type}}", "channelSid": "{{trigger.message.ChannelSid}}", "glance_visitor_id": "{{flow.variables.glance_visitor_id}}"}` 13. **Save** the widget. 14. Wire the widget to the **Set Variable Widget** that you just created. 15. Select **Publish**. Twilio Webchat Flow diagram ================================================================= FILE: /developer/legacy_api/activity ================================================================= The Activity Service API provides developers with programmatic access to historical session data, allowing you to seamlessly query session counts, detailed participant information, and overarching usage metrics. Implemented via Windows Communication Foundation (WCF), this versatile web service supports integration through SOAP/XML, JSON requests, and standard HTTPS POSTs, making it highly compatible with a wide range of backend reporting systems, custom dashboards, and CRM workflows. In this section, you will find a comprehensive reference for interacting with the Activity Service. This includes a breakdown of all available **Methods** and **Endpoints** (such as retrieving active, completed, or user-specific sessions), the global **Conventions** required for authentication and date formatting, and a detailed mapping of **Session and Guest Statuses** to help you accurately track the lifecycle of every cobrowse, screen share, and video interaction. ================================================================= FILE: /developer/legacy_api/activity/status ================================================================= Glance service is provided via Sessions. Each successful session has two or more Session Guests.
Note
Some methods in this API filter out sessions and guests in certain states. Also, note that the Glance subscriber participating in the session is treated as a session guest in this API.
These are possible session status values, described in detail in the next section: * **A** - Active, both sides have joined (host/guest or agent/visitor) * **C** - Completed (session has ended) * **D** - Guest declined a view session during Screenshare * **E** - Problem connecting to the Cobrowse Asset Management (CAM) Service * **J** - Session is being set up, and is waiting for a cobrowse or screenshare server * **L** - Locked * **Q** - Quit. Session was Waiting, but was ended by host or visitor before other side joined * **T** - Timed out. Session was Waiting but other side did not join within timeout * **U** - The session was ended in an unknown state * **W** - Waiting, other side has not joined yet * **X** - Completed (session ended but without a clean close) ## A - Active An active session is one that is in use by a Glance subscriber and one or more other guests. After use, every **A** session will transition to become a **C** session or **X** session. ## C - Completed and X - Completed Upon completion, each **A** session becomes either a **C** session or **X** session. Sometimes session guests (including Glance subscribers and website visitors) end their **A** sessions by closing their browser windows or disconnecting from the network. When that happens, a session may become an **X** session because it did not end with a "clean close" by using Glance's session ending protocol. * Sometimes **A** sessions end when a guest requests the end of the session. Those sessions become **C** sessions. * Both **C** and **X** sessions represent a successful interaction. * **C** sessions and **X** sessions do not transition to any other state. ## J - Session is being set up Newly-created sessions have this status. A session is created at the time a website visitor initiates a cobrowse session, or when a Glance subscriber starts a screenshare or video session. ## L - Locked A very few screenshare sessions get into the **L** state, and no cobrowse sessions. This state is part of Glance's way of preventing multiple sessions from different host machines for the same subscriber. **L** sessions do not transition to any other state. ## Q - Quit Sometimes the originator of a session�screenshare host or cobrowse website visitor�ends a session before any other session guest joins. That makes the **W** session become a **Q** session. **Q** sessions do not transition to any other state. ## T - Timed Out **W** sessions cannot remain **W** sessions forever. If no second guest joins the session, it eventually times out and becomes a **T** session. Screenshare and video sessions take ten minutes to time out. Cobrowse sessions take two minutes to time out. **T** sessions do not transition to any other state. ## W - Waiting **W** sessions are completely set up. Each **W** session has one guest: the originator. It is waiting for other guests to connect. In the case of a cobrowse session, typically the **W** status means that the web site visitor is waiting for an agent to connect. But, if a website visitor inadvertently starts a session (by pressing a hotkey or clicking a cobrowse link, for example) the session will enter the **W** state, and then will transition either to the **Q** or **T** state when the user stops the session or when it times out. So, not all **W** states mean a website visitor is waiting for an agent to respond. In the case of screenshare or video sessions, the **W** status means the session has been initiated by the host and is waiting for guests to join. Every **W** session will transition to become an **A** session, **Q** session, or **T** session. ## Session Status Flow Chart Below is a flow chart displaying how a session can progress through the various statuses: Flow chart displaying how a session can progress through the various statuses ## Session Guest Status These are possible guest status values: * **A** - Active (guest connected) * **C** - Completed (guest has left) * **D** - Guest declined the session * **E** - Unexpected error occurred * **J** - Joining (guest is in process of connecting but has not yet connected) * **P** - Another viewer instance was opened by the same guest * **R** - Temporary status that occurs when the server is waiting for a reconnect from the client * **T** - Session timed out * **W** - Temporary status that occurs when a different display side has connected but updates are not yet being sent * **X** - Guest left session, by closing a browser window or dropping the session some other way ================================================================= FILE: /developer/legacy_api/activity/webservices_activity ================================================================= This is the API for querying for session counts and session and participant details. **Endpoint:** `https://www.glance.net/services/activityservice.asmx` The WSDL is located here: `https://www.glance.net/services/activityservice.asmx?WSDL`
Note
Some operations are strictly for use with specific third-party integrations and are not documented in this generic reference.
## Output Values Many Activity Service operations return session records. Here is a description of the output values: | Value | Description | | :--- | :--- | | **Session Type** | Session type is one of "C" (cobrowse), "G" (Glance screen sharing), or "V" (video). | | **Session Status** | A single letter describing the state of a session. See [Session Status and Session Guest Status](../status) for status details.

Common session status values are:
  • W: Waiting, other side has not joined yet
  • A: Active, both sides have joined (host/guest or agent/visitor)
  • C: Completed (session has ended)
  • X: Session ended but without a clean close (may have dropped)
  • T: Timed out. The session was waiting but the other side did not join within the timeout
  • Q: Quit. The session was waiting but was ended by the host or visitor before the other side joined

Note: Some API methods filter out sessions with certain status values. Not every method returns sessions with all these status values. | | **Width and Height** | The initial width and height of the screen are returned for a screen-sharing session. This can change during a session if the display side changes its monitor or resolution. These values are 0 for co-browsing sessions.

For video sessions, the width and height represent the video resolution. The exact resolution depends on the originating person's webcam make, model, and settings. Video sessions always have a fixed ratio of 4:3 (NTSC), 11:9 (PAL), or less commonly 5:4 or 16:9 (HD) and usually have one of these sets of dimensions:
  • 160x120
  • 176x144
  • 320x240
  • 352x288
  • 640x360

A larger video resolution�such as 640x480 or 704x576�usually means the webcam is misconfigured. | | **Session Duration** | Session duration is in seconds. It is 0 for active sessions. | | **Guest Type** | Guest type is one of:
  • Agent: Agent (Glance user) in a Cobrowse session
  • Visitor: Website visitor (customer) in a Cobrowse session
  • Host: Glance user who has started a screen-sharing session
  • Guest: Guest of a screen-sharing session
| | **Guest Status** | Guest status is one of:
  • J: Joining (the guest is in the process of connecting but has not yet connected)
  • A: Active (guest connected)
  • C: Completed (guest has left)
  • X: Guest left the session, but without a clean close (may have dropped)

See [Session Status and Session Guest Status](../status) for more details. | | **Guest Duration** | Guest duration is in seconds. It is 0 for active guests. | | **Guest Information** | Guest information may include name, email, and phone if supplied. These values can be requested from the guest or passed through a URL used to join the session. Glance gathers this information on behalf of Glance customers and only at their request. If a customer account is not configured to gather this information, these values are empty.

Guest information may also include a location node with city, region (state/province), and country code. This is derived from the guest's IP address if available. | ### Sample Session Records (XML) ```xml 12423680 C C 2016-02-23T22:17:51Z 6684 0 0 147 false visitor C 2016-02-23T22:17:22Z 147 108.49.96.66 iOs 3 3 Newburyport MA US agent C 2016-02-23T22:17:51Z 118 66.78.234.123 Alexandria VA US 12442276 G C 2016-02-24T21:12:09Z 7734 1920 1080 259 false host C 2016-02-24T21:11:42Z 259 108.49.96.66 Newburyport MA US guest C 2016-02-24T21:12:09Z 244 66.78.234.123 Alexandria VA US Greta Guest sales@glance.net 781-646-8505 Session ended by other side ``` ### JSON Requests Calls may also be made passing JSON parameters and returning JSON results. In order to make a JSON format call, make a `POST` request with a `Content-Type` header set to `application/json`. The parameters are passed in a JSON format object in the post data. **Sample Curl Example** ```bash curl -X POST [https://www.glance.net/services/activityservice.asmx/PartnerCompletedSessions](https://www.glance.net/services/activityservice.asmx/PartnerCompletedSessions) -H 'Content-Type:application/json' -d '{"partnerId":12345,"apiKey":"ABCDeF_G12TOFEkzzz","startRange":"2023-02-23T22:00:00Z","endRange":"2023-02-28T22:00:00Z","sessionKey":"","nResults":10,"nextId":0}' ``` **Sample JSON Results** ```json { "d": { "__type": "ActivityService+groupSessions", "nextId": 123456789, "users": [ { "__type": "ActivityService+userSessions", "userName": "agent.company.glance.net", "partnerUserId": "puidValue", "validUser": true, "invalidReason": null, "sessions": [ { "__type": "ActivityService+session", "id": 56960588, "type": "V", "status": "C", "startTime": "2020-02-12T11:41:12Z", "key": "9900V51849", "width": 176, "height": 144, "duration": 13, "kbytes": 0, "isReverse": false, "guests": [ { "type": "", "status": "X", "startTime": "2020-02-12T11:41:14Z", "duration": 11, "kbytes": 0, "ip": "209.255.163.147", "location": { "city": null, "region": null, "countryCode": "US" }, "name": null, "email": null, "phone": null }, { "type": "", "status": "X", "startTime": "2020-02-12T11:41:18Z", "duration": 11, "kbytes": 0, "ip": "209.255.163.147", "location": { "city": null, "region": null, "countryCode": "US" }, "name": null, "email": null, "phone": null } ] } ] }, { "__type": "ActivityService+userSessions", "userName": "agent2.company.glance.net", "partnerUserId": "anotherPUID", "validUser": true, "invalidReason": null, "sessions": [ { "__type": "ActivityService+session", "id": 57125147, "type": "C", "status": "C", "startTime": "2020-02-13T18:34:18Z", "key": "1111", "width": 0, "height": 0, "duration": 9, "kbytes": 30, "isReverse": false, "guests": [ { "type": "visitor", "status": "C", "startTime": "2020-02-13T18:34:15Z", "duration": 9, "kbytes": 30, "ip": "208.253.26.138", "location": { "city": "Seekonk", "region": "MA", "countryCode": "US" }, "name": "Test guy", "email": "jsmith@email.net", "phone": "314-555-1212" }, { "type": "agent", "status": "C", "startTime": "2020-02-13T18:34:18Z", "duration": 6, "kbytes": 18, "ip": "208.253.26.138", "location": { "city": "Seekonk", "region": "MA", "countryCode": "US" }, "name": null, "email": null, "phone": null } ] } ] } ] } } ``` ================================================================= FILE: /developer/legacy_api/activity/webservices_conventions ================================================================= This document describes various Glance Web Services APIs, which return information on your Glance sessions and participant details. The APIs in general can be called via SOAP/XML or JSON requests. Calls may also be made via HTTPS POSTs, returning XML results. These APIs are implemented using Windows Communication Foundation (WCF) and may be consumed by any compatible software. Information on retrieving authentication information for a particular username is available [here](/developer/integrations/login-key/login_check/). ## General Conventions | Convention | Description | | :--- | :--- | | **Partner ID / API Key** | Most operations authenticate with a `partnerId` and `apiKey`. The `partnerId` is the same as your Glance Group ID. This is assigned by Glance. The API Key can be set, reset, and viewed by an Administrator logged into the Glance My Account area under Settings. You must store this value securely. | | **PartnerUserId** | Operations that specify a particular Glance user will usually take a `PartnerUserId`. This is a value Glance can store for a user containing your unique user identifier for the user (any string of up to 255 characters). It is usually set by provisioning users with the Partner API or from a CSV file upload in the online Partner Portal. | | **Date Values** | Date values can be specified as [UTC](https://en.wikipedia.org/wiki/Coordinated_Universal_Time) or local time in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format:

  • 2012-12-01T16:08:00Z: UTC date and time
  • 2012-12-01T16:08:00-5:00: Time with offset from UTC
  • 2012-12-01T16:00:00: Unspecified timezone = US East Coast time (EST or EDT)
  • 2012-12-01: Time 00:00, midnight at the beginning of Dec 1, 2012, East Coast time

Note: Date values are returned in [UTC](https://en.wikipedia.org/wiki/Coordinated_Universal_Time). | ================================================================= FILE: /developer/legacy_api/activity/webservices_operations ================================================================= ## PartnerSessionCounts `https://www.glance.net/services/activityservice.asmx?op=PartnerSessionCounts` This method returns counts of numbers of sessions started within the given date range, broken down by session type and status. **Input Parameters** | Parameter | Description | | :--- | :--- | | **partnerId** | Your Glance group id. This is assigned by Glance. | | **apiKey** | The unique identifier used to authenticate. Administrators can set, reset, and view API keys from the My Account area under Settings. | | **type** | Parameter must be supplied, but value is optional. **"C"** Cobrowse, **"G"** Screen Share, or **"V"** Video (blank returns all). | | **status** | **"A"** Active or **"C"** Completed sessions. | | **startRange**
**endRange** | Date range of session starting times.

For today's sessions, set startRange to today and endRange to tomorrow.

The maximum range is 31 days. | **Sample Results** ```xml C C 141 748 C Q 2 106 C T 24 127 C X 2 905 G C 123 619 ``` ## PartnerSessionCountsEnding `https://www.glance.net/services/activityservice.asmx?op=PartnerSessionCountsEnding` This method returns counts of numbers of sessions **ended** within the given date/time range, broken down by session type and status. **Input Parameters** | Parameter | Description | | :--- | :--- | | **partnerId** | Your Glance group id. This is assigned by Glance. | | **apiKey** | The unique identifier used to authenticate. Administrators can set, reset, and view API keys from the My Account area under Settings. | | **type** | Parameter must be supplied, but value is optional. **"C"** Cobrowse, **"G"** Screen Share, or **"V"** Video (blank returns all). | | **startRange**
**endRange** | Date range of session starting times.

For today's sessions, set startRange to today and endRange to tomorrow.

The maximum range is 31 days. | **Sample Results** ```xml C C 2 40 C Q 3 8 C T 2 125 ``` ## PartnerActiveSessions `https://www.glance.net/services/activityservice.asmx?op=PartnerActiveSessions` This method returns essentially the list in the Glance Account Activity tab: an array of all currently Active or Waiting sessions for all users in your Glance Group (organization). It does not return all session fields or detail guest information, but that can be retrieved for a specific session with `PartnerUserSessions` (see below). An Active (**A**) session has at least one each of Agent/Host and Visitor/Guest connected. A Waiting (**W**) session has been started and is still waiting for the other party to join. **Input Parameters** | Parameter | Description | | :--- | :--- | | **partnerId** | Your Glance group id. This is assigned by Glance. | | **apiKey** | The unique identifier used to authenticate. Administrators can set, reset, and view API keys from the My Account area under Settings. | **Sample Results** ```xml 61943691 C A 2020-03-31T20:13:58Z 1281 false demo.glance.net Jack Demo JDemo 2 ``` ## PartnerCompletedSessions `https://www.glance.net/services/activityservice.asmx?op=PartnerCompletedSessions` This method returns a list of completed sessions started within the date/time range, grouped by user. **Input Parameters** | Parameter | Description | | :--- | :--- | | **partnerId** | Your Glance group id. This is assigned by Glance. | | **apiKey** | The unique identifier used to authenticate. Administrators can set, reset, and view API keys from the My Account area under Settings. | | **startRange**
**endRange** | Date range of session starting times.

For today's sessions, set startRange to today and endRange to tomorrow.

The maximum range is 31 days. | | **sessionKey** | Parameter must be supplied, but value is optional. If supplied, then only sessions with that key are returned. | | **nResults** | Number of sessions to return in this call, must be between 1 and 1000. | | **nextId** | Next starting id for pagination of results. For the first (or a single) call pass 0. On subsequent calls, pass the value returned by the previous call. | **Sample Results** ```xml 61943153 demo.glance.net JDemo true 61874627 C C 2020-03-31T12:43:12Z example 0 0 7 33 false visitor C 2020-03-31T12:43:09Z 7 33 12.345.678.910 agent C 2020-03-31T12:43:12Z 4 23 12.345.678.910 ``` ## PartnerCompletedSessionsEnding `https://www.glance.net/services/activityservice.asmx?op=PartnerCompletedSessionsEnding` This method is the same as `PartnerCompletedSessions` except it returns a list of completed sessions **ended** within the date/time range. **Input Parameters** | Parameter | Description | | :--- | :--- | | **partnerId** | Your Glance group id. This is assigned by Glance. | | **apiKey** | The unique identifier used to authenticate. Administrators can set, reset, and view API keys from the My Account area under Settings. | | **startRange**
**endRange** | Date range of session starting times.

For today's sessions, set startRange to today and endRange to tomorrow.

The maximum range is 31 days. | | **sessionKey** | Parameter must be supplied, but value is optional. If supplied, then only sessions with that key are returned. | | **nResults** | Number of sessions to return in this call, must be between 1 and 1000. | | **nextId** | Next starting id for pagination of results. For the first (or a single) call pass 0. On subsequent calls, pass the value returned by the previous call. | **Sample Results** ```xml 61943153 demo.glance.net JDemo true 61874627 C C 2020-03-31T12:43:12Z example 0 0 7 33 false visitor C 2020-03-31T12:43:09Z 7 33 12.345.678.910 agent C 2020-03-31T12:43:12Z 4 23 12.345.678.910 ``` ## PartnerUserSessions `https://www.glance.net/services/activityservice.asmx?op=PartnerUserSessions` This method returns a list of sessions for a particular user. **Input Parameters** | Parameter | Description | | :--- | :--- | | **partnerId** | Your Glance group id. This is assigned by Glance. | | **apiKey** | The unique identifier used to authenticate. Administrators can set, reset, and view API keys from the My Account area under Settings. | | **partnerUserId** | User whose session(s) are retrieved. | | **startRange**
**endRange** | Date range of session starting times.

For today's sessions, set startRange to today and endRange to tomorrow.

The maximum range is 31 days. | | **status** | Must be either "A" to return Active (in-progress) sessions or "C" for Completed sessions. | | **sessionKey** | Parameter must be supplied, but value is optional. If supplied, then only sessions with that key are returned. |
Note
The partnerUserId can be assigned by Glance, but will typically be supplied by you, if you provision users with the Glance Provisioning API. For more information on provisioning, contact Glance support.
**Sample Results** ```xml true 61943691 C C 2020-03-31T20:13:58Z 1281 0 0 687 28 false visitor C 2020-03-31T20:13:54Z 687 28 12.345.678.910 agent C 2020-03-31T20:13:58Z 683 19 12.345.678.910 ``` ================================================================= FILE: /developer/legacy_api/auth ================================================================= Glance Authorization Services provide robust tools for securely managing agent access and monitoring live interactions. Using the **Authorization Web Service**, developers can generate JSON Web Tokens (JWTs) via SOAP, REST, or the client-side JavaScript API to securely authenticate agent-side requests and enforce group-specific privileges. Once your agents are securely authenticated, the **SessionService Web Services API** offers a straightforward interface�accessible via SOAP/XML, JSON, or standard HTTPS POSTs�to query real-time information about sessions currently in progress, ensuring your custom dashboards and support workflows stay securely synchronized with live activity. ## In This Section {% children description="true" /%} ================================================================= FILE: /developer/legacy_api/auth/webservices_authorization ================================================================= All agent-side requests to the Presence Service carry an Authorization Token which can be obtained from the Glance Authorization Web Service. Glance uses the JSON Web Token (JWT) standard for creating, signing, and verifying authorization tokens. A valid JWT: * Guarantees that the agent has been authenticated by Glance. * Indicates the specific privileges that the agent has. If an agent is a member of multiple groups, bear in mind that the token is always group-specific. To carry out an API operation in a particular group, the agent needs an Authorization Token for that specific group.
Warning
Authorization is resource-intensive. To prevent performance problems, reauthorize only when the previously issued token expires. See the Presence Security Whitepaper for additional information on the Authorization Token.
## Glance Authorization Web Service An authorization token may be obtained server-side using the Glance Authorization Service SOAP or REST API. * For the SOAP WSDL, see: `https://www.glance.net/services/AuthorizationService.svc` * For the REST help documentation, see: `https://www.glance.net/services/AuthorizationService.svc/rest/help` All credential properties are optional, but one of the following combinations must be specified: * `username` and `password` * `username` and `g4scredentials` * `username` and `loginkey` * `gssnid` * `partnerid`, `partneruserid`, `loginkey` ### Providing the Authorization Token to the GLANCE JavaScript APIs The Authorization Token may be specified in metadata by adding the HTML attribute `data-authtoken="[authorizationtoken]"` to the cobrowse script tag as follows: ```html ``` If you are including the presence script bundled in a component or self-hosted, you must add a meta tag to specify the group id: ```html ``` The Presence Agent API can only be used from a trusted domain.
Warning
Contact Glance to ensure that your website domain is configured as an allowed agent origin on our Presence Service.
### Authorization The Presence Agent API requires an Authorization Token which can be obtained from the Glance Authorization Service web service. Authorization should be performed once to obtain a token which can be used for a set duration. Please refer to the Glance [Authorization API](/developer/legacy_api/auth/webservices_authorization) for information on obtaining and using an Authorization Token. The Glance Presence Agent API is defined in the namespace `GLANCE.Presence.Agent`. --- #### GLANCE.Presence.Agent(params) - constructor Constructs a Presence agent object. A separate agent object must be instantiated for each visitor that the agent needs to communicate with. Either a `visitorid` or a `uniqueid` must be specified in the params object to identify the visitor connection. #### Parameters ```json { "presenceserver": "Presence Service, defaults to presence.glance.net", "visitorid":"", // specify visitor id for a visitor connected with GLANCE.Presence.Visitor.connect() "uniqueid":"" // specify unique id for a visitor connected with GLANCE.Presence.Visitor.connectUnique() } ``` --- #### GLANCE.Presence.Agent.prototype.lookupVisitor(params) ```json { "onsuccess": "function(visitordata)", "onfail": "function(reason)" } ``` **visitordata example payload:** *Visitor on web:* ```json { "url": "https://www.glancedev1.com/joeb/cyv/chooseyourvisitor.html?%7B%22visitorId%22%3A%22example%22%2C%22groupId%22%3A%2220541%22%2C%22additionalGroupIds%22%3A%22%22%2C%22presenceSetting%22%3A%22on%22%2C%22environment%22%3A%22staging%22%2C%22website%22%3A%22%22%2C%22cdn%22%3A%22cdn.glance.net%22%2C%22videoAtStart%22%3A%22default%22%2C%22dataCollection%22%3A%22off%22%2C%22autoLoad%22%3A%22no%22%2C%22startPaused%22%3A%220%22%2C%22selfHosted%22%3A%22%22%7D", "browser": "edge", "browserver": 137, "platform": "mac", "directserver": "prod-presence-1.glance.net", "httpsport": "443", "visitorid": "example", "groupid": "12345" } ``` *Visitor on Mobile SDK:* ```json { "directserver": "prod-presence-1.glance.net", "httpsport": "443", "visitorid": "example", "groupid": "12345" } ``` --- #### GLANCE.Presence.Agent.prototype.signalVisitor(params) Sends a signal (message) to a visitor who has been connected within the last 5 seconds to the service. If the visitor has an open connection to the service, the visitor will be signaled immediately. Otherwise, the visitor will be signaled on next connect, if within 5 seconds. The `onsuccess` callback is called when the signal is confirmed that it was received by the Presence service. #### Parameters ```json { "data" : "message to send to visitor", "onsuccess" : "function to be called back on success", "onfail" : "function to be called back on failure" } ``` The visitor receives the signal via the `onsignal` event. --- #### GLANCE.Presence.Agent.prototype.invokeVisitor(params) Invokes a visitor side JavaScript function in the `GLANCE` namespace. Visitor side must have been connected at some point within the last 5 seconds. The `onsuccess` callback is called when the invoke message is confirmed that it was received by the Presence service. #### Parameters ```json { "func" : "name of function to invoke, must be in the GLANCE namespace", "args" : "object to pass to the function", "onsuccess" : "function to be called back on success", "onfail" : "function to be called back on failure" } ``` --- #### GLANCE.Presence.Agent.query(params) Queries Presence data `// not implemented yet` --- #### GLANCE.Presence.Agent.prototype.connect(params) Connect to the Presence server to receive notification of events related to the visitor. `connect()` opens a WebSocket connection to the Presence service. Before calling `connect()`, set event handlers as properties of the Agent object. --- #### GLANCE.Presence.Agent.prototype.disconnect() Disconnect the Presence Agent from the presence service. Once disconnected, the agent will no longer receive notifications about events happening on the visitor side. --- ### Agent Events Events which may fire on the agent side are: | Event | Data Passed | Description | | :--- | :--- | :--- | | `onvisitorconn` | `{ "connected" : true/false }` | Fires when a visitor connects or disconnects from the presence service. Note that for a visitor browsing a website, the actual websocket connection will disconnect and reconnect as the visitor navigates from page to page. The visitor is still considered connected to presence during navigation, so no "visitorconn" event fires. | | `onvisitorsock` | `{ "connected" : true/false }` | Fires when the visitor's actual socket or websocket connection to the presence server is established or closed. | | `onpresence` | `{ presence_data_object }` | The presence data just sent by the visitor. | | `onerror` | `{ "error" : "error_code", "detail" : "error_detail" }` | **Error codes**:
**connfail** - Failed to establish or maintain the websocket connection. Reasons may include, but are not limited to, `extend`, `timedout`, `authtokenmissing`, and other errors passed from XMLHttpRequest. In the event of a connection failure, a "detail" property will include a detailed reason:
**authfail** - Authorization token missing, bad, or expired
**connection** - Network connection dropped
**error** - Server returned an error
**invalidprotocol** - Visitor IDs contain special nats characters: space, *, and >. | | `onterms` | `{ status : "displayed/accepted/declined" }` | The terms event fires when the terms and conditions dialog is displayed, accepted, or declined by the visitor. | | `onvisitorsessionstart`, `onvisitorsessionend`, `onvisitorerror` | *N/A* | These events fire when the corresponding events sessionstart, sessionend, and error fire on the visitor side. See the `GLANCE.Cobrowse.Visitor` API documentation for details. | | `onvisibility` | `{ visibility : "hidden/visible" }` | The visibility event fires when the visitor's browser tab visibility changes. | --- ### Error Handling The `onfail` parameters to `GLANCE.Presence.Agent` methods should be a function which takes a "reason" parameter. The "reason" codes will be one of the following: * **authorization** - Authorization token missing, bad, or expired * **connection** - Network connection could not be established. See the browser console for details. ## Sample Code See [Sample Code](../sample) for details. ================================================================= FILE: /developer/presence/presence_rest_api ================================================================= # Presence Agent REST API The Glance Presence Agent REST API offers the same functionality as the JavaScript `GLANCE.Presence.Agent` API, with the exception of `connect()` which relies on WebSockets. The REST API is useful for implementing server side agent console functionality. ### REST API URLs The Presence service consists of a load balancer at `presence.glance.net` as well as multiple named Presence Servers at `presence0001.glance.net`, `presence0002.glance.net`, etc. Presence data can be queried by invoking the JSON REST API on the Presence Service at `presence.glance.net`. Signaling specific visitors must be done by finding the instance that the visitor is currently connected to (via `/findvisitor`), then invoking the REST API on that specific server. ### Authorization All Presence Agent REST API entry points expect an authorization token to be sent in an HTTP `Authorization` header as follows: ```text Authorization: Bearer [authorization_token] ``` The Authorization Token can be obtained using the Glance [Authorization API](/developer/legacy_api/auth/webservices_authorization). *** ### REST API Endpoints The Presence service supports the following REST endpoints: #### /lookupvisitor Returns the Presence information for a particular visitor. ```text GET [https://presence.glance.net/lookupvisitor?groupid=](https://presence.glance.net/lookupvisitor?groupid=)[groupid]&visitorid=[visitorid] ``` **Response:** ```json { "direct": "pr0016.glance.net:443", "visitorpresent": "1583953702.0", "timestamp": "1583953702.0", "visitorid": "example", "groupid": "12345", "ds": "pr0016.glance.net/0", "directserver": "pr0016.glance.net", "tlsport": 5501, "httpsport": 443 } ``` #### /findvisitor Returns the specific named Presence server that the visitor is currently connected to. ```text GET [https://presence.glance.net/findvisitor?groupid=](https://presence.glance.net/findvisitor?groupid=)[groupid]&visitorid=[visitorid] ``` **Response (Visitor Found):** ```json { "ds": "pr0016.glance.net/0", "direct": "pr0016.glance.net:443", "directserver": "pr0016.glance.net", "tlsport": 5501, "httpsport": 443, "visitorfound": true } ``` **Response (Visitor Not Found):** ```json { "visitorfound": false } ``` #### /signalvisitor Signals the specified visitor, passing a JSON message. There must be a connected `GLANCE.Presence.Visitor` instance on the visitor side to receive the signal. ```text POST https://[directserver]/signalvisitor?groupid=[groupid]&visitorid=[visitorid] ``` The body of the request is the JSON message to send. The message should have the following format: ```json { "mtype": "message_type", "data": "message_payload" } ``` The message type can be `"invoke"`, to invoke a `GLANCE` JavaScript function on the visitor: ```json { "mtype": "invoke", "data": { "func": "GLANCE.Cobrowse.Visitor.startSession" } } ``` Alternatively, message type `"signal"` can be specified to send a custom message. When the visitor side receives the message, the event handler `onsignal()`, if defined, will be called on the Visitor instance. For example: ```json { "mtype": "signal", "data": { "command": "startchat", "chatid": "56789" } } ``` This will result in `onsignal({ "command": "startchat", "chatid": "56789" })` being called on the `GLANCE.Presence.Visitor` instance. ================================================================= FILE: /developer/presence/presence_security ================================================================= The Presence Service allows an authorized agent to invoke JavaScript functionality in a visitor browser. This document outlines the security considerations associated with the Presence Service. When an agent issues a request to the Glance Presence Service, the service verifies the identity of the agent, and ensures that particular agent is authorized to carry out the requested operation. This verification is accomplished by means of an Authorization Token. ## Authorization Token All agent side requests to the Presence Service carry an Authorization Token which can be obtained from the Glance Web Service. Glance uses the JSON Web Token (JWT) standard for creating, signing, and verifying authorization tokens. ## Obtaining the Token For an Agent to obtain an authorization token for Presence: 1. The Agent passes credentials to the Glance Authorization Service to prove their identity. 2. The Glance Authorization Service verifies the agent's credentials and determines whether the Agent is authorized to access the Presence service. The Glance Authorization Service is accessible via: * Soap 1.2 ([wsdl](https://www.glance.net/services/AuthorizationService.svc?wsdl)) * JSON REST ([REST help page](https://www.glance.net/services/AuthorizationService.svc/rest/help)) * XML REST ## Authentication The Glance Authorization service accepts as credentials any of the following: * Glance username and password * Partner ID, partner user ID, and login key * Glance username and login key * Glance website session id In addition to credentials, the agent must specify a Glance group id. An individual user may be a member of multiple groups, but at any given time the user authenticates in a particular group. If an agent needs to carry out operations in multiple groups, they must obtain multiple authorization tokens. ## Authorization Agents must have a current subscription which includes the Presence feature in order to be granted access to Presence services. ## Token Duration The agent specifies a duration for the token. Tokens may be issued for up to two hours duration. Obtaining a token is resource intensive. Therefore, the agent console should obtain a token and reuse it until it expires or the agent logs out, rather than obtaining a new token for every operation. ## Token Storage and Usage The authorization token may be obtained server side using the SOAP or REST API. It may be stored server side, for example in session state, and used in subsequent server side requests to the Presence service. Alternatively, a token obtained server side may be used client side by the Presence JavaScript API. The token may be embedded in the page in a `data-authtoken` attribute of the cobrowse script or meta tag, or it may be passed into the JavaScript API using `GLANCE.Authorization.setToken()`. Finally, a token may be obtained client side by passing credentials into `GLANCE.Authorization.authorize()`. When `setToken()` or `authorize()` is used, the authorization token is stored in local storage to allow reuse. All calls to the `GLANCE.Presence` API will automatically use the stored token, as long as those calls are made from secure pages on the same fully qualified domain. See the [Glance Authorization API](/webservices/auth/webservices_authorization) documentation for more information. --- ## Presence Service Request Validation ### Validating Authorization Token The Presence Service validates the authorization token presented: * In the `Authorization` header, for REST requests. * In the first message on a websocket connection. The Presence Service verifies the token signature, that it is not expired, and that the `groupid` in the token matches the `groupid` in the request. There are no restrictions on which visitors in the group the agent can interact with. ### Origin Check and CORS Requests to the Presence Service from secure browsers will include an `Origin` header. The Presence Service will reject requests with a non-whitelisted Origin domain. If and only if the request Origin is on the whitelist, the Presence Service will respond with the `Access-Control-Allow-Origin` header set to the Origin domain. ### Shared Secret JSON Web Tokens require a shared secret between the token issuer and the consumer. The Presence service generates a new shared secret every two hours and passes it to the Glance Authorization service via an https request to an internal endpoint in the Glance VPN. ### Visitor Authentication Website visitors are identified by a unique visitor id, which may be anything unique to the visitor such as a user id, phone number, or email address, which could either be relayed to a customer service agent over the phone, or is included in a customer record that can be retrieved using some information that is relayed over the phone. When the visitor id is not secret or is static, a customer service agent may want some way to guarantee that the visitor browser receiving any presence requests is truly operated by the individual on the phone. One way to do this would be for the agent console to trigger a confirmation message to appear on the visitor side. The visitor must select the correct button on the confirmation message (as directed by the agent over the phone) before subsequent presence requests can be sent. It is still the responsibility of the agent to verify the identity of the caller. ================================================================= FILE: /developer/presence/presence_visitor ================================================================= ## Adding Visitor Presence to Your Website There are two ways to include Visitor Presence functionality in your website. You can get default Presence behavior by adding some parameters to your Cobrowse script tag, or you can load and use the Presence API for more control. ### Visitor ID A unique `visitorid` is required when connecting to presence. The visitorid can be specified in the `GLANCE_COBROWSE` JavaScript variable, or in `data-` attributes, as described on the [Cobrowse Visitor API](/webservices/visitor_agent/visitor/#cobrowse-visitor-api) page. For example: ```html ``` --- #### GLANCE.Presence.Visitor(params) - Constructor Constructor for a Visitor Object. **Parameters** ```javascript { "groupid" : "group_id", // defaults to GLANCE_COBROWSE.groupid "visitorid" : "visitor_id" // defaults to GLANCE_COBROWSE.visitorid } ``` Do not specify a `visitorid` if the visitor will connect using `connectUnique()`. See this page for more information on [Glance Cobrowse](/developer/legacy_api/visitor_agent/visitor/#glance_cobrowse). --- #### GLANCE.Presence.Visitor.prototype.presence(params) Sends Presence information to the Presence service. **Parameters** ```javascript { "data": "custom data to be stored on the presence server" // optional } ```
Info
Data must be a JavaScript object whose properties are of type string or number.
The first time `presence()` is called after a new page is loaded, general visitor information such as URL and browser are sent to the Presence service, as well as any user specified information. On subsequent calls to `presence()`, any new Presence information provided will be merged with any existing information already on the server. --- #### GLANCE.Presence.Visitor.instance `GLANCE.Presence.Visitor.instance` is set to the most recently instantiated `GLANCE.Presence.Visitor` object. This allows multiple scripts running on a page to share a single Visitor instance. --- #### GLANCE.Presence.Visitor.prototype.connect() Connect to the Presence service to listen for Presence events related to the visitor. Behind the scenes, this method opens a websocket connection to a specific Presence server. If the Presence server instance shuts down due to an auto scaling event, the Visitor object automatically connects to a new Presence server instance. `connect()` must be called on the visitor side in order to receive commands from the agent, for example if the agent calls `signalVisitor()` or `invokeVisitor()`. If the visitor navigates to a new page, `connect()` must be called again to reestablish the connection. If the visitor is not connected at the time an agent signals or invokes the visitor, the visitor will receive the message upon next connection. If a new visitor connection is opened with the same visitor id, for example because the visitor opened a new browser tab to the same website, or switched from the website to a desktop application, the second connection takes focus and the first connection is sent a "blur" message. --- #### GLANCE.Presence.Visitor.prototype.connectUnique() Open a unique connection to the Presence service. A unique connection may be used in a scenario where a predetermined visitor id is not known to both visitor and agent. A unique connection differs from a non-unique connection in that: * The Presence Service assigns a 6 digit unique id (see the `onunique` event) * A unique connection times out after 5 minutes * Once a unique connection is established, no other connection can be made with the same unique id --- #### GLANCE.Presence.Visitor.prototype.disconnect() Disconnect the Presence Visitor from the Presence service. --- #### GLANCE.Presence.Visitor.prototype.extendUnique() Extends the timeout for an already open unique connection by another 5 minutes. --- #### GLANCE.Presence.Visitor.prototype.getVisitorId() Returns the visitor ID being used for the presence connection. If no visitor ID is defined, it will return an empty string. --- #### GLANCE.Presence.Visitor.prototype.isconnected() Returns `true` if connected to the presence service. Otherwise, `false`. --- #### GLANCE.Presence.Visitor.prototype.setVisitorId(visitorid) Change the visitor ID. If the presence instance is already connected to the Presence Service, calling `setVisitorId()` will disconnect and reconnect using the specified visitor ID. --- #### GLANCE.Presence.Visitor.setVisitorId(visitorid) Change the Visitor ID for the most recently constructed `GLANCE.Presence.Visitor` instance. --- ### Visitor Events Before calling `connect()`, add event handlers as properties on the Visitor instance. Supported events are: | Event | Description | | :--- | :--- | | `onconnected` | Fires when a connection to the presence service is established. | | `onerror` | See `Glance.Presence.Agent` onerror event. | | `onsignal(data)` | `onsignal` fires when the agent sends a message via `signalVisitor({ "data" : data })`. Data contains the object passed into `signalVisitor` by the agent. | | `onunique(uniqueid)` | Fires when the Presence Service has assigned a unique id to a connection established with `connectUnique()`. | --- ### Visitor Presence and Focus If a visitor has multiple windows or tabs open, only the currently active tab will send presence information or listen for messages from agents. ### Sample Code See [Sample Code](../sample) for details. ================================================================= FILE: /developer/presence/sample ================================================================= ## Visitor-Side Sample Code ```javascript // Instantiate a Visitor presence object var presencevisitor = new GLANCE.Presence.Visitor({ groupid: 123, // optional, defaults to GLANCE_COBROWSE.groupid visitorid: "111111111" // optional, defaults to GLANCE_COBROWSE.visitorid }); // Start sending regular presence updates (by default, every 60 seconds) presencevisitor.presence(); // Send a presence update (now) with some custom data presencevisitor.presence({ data: { wizardpage: 3 } }); // Listen for agent messages. presencevisitor.onsignal = function (msg) { console.log("Received", msg); }; presencevisitor.connect(); ``` --- ## Agent-Side Sample Code ```javascript // Authenticate the agent GLANCE.Authorization.authorize({ service: "presence", credentials: { username: "[Glance account username]", password: "[Glance account password]", gssnid: "[Glance website session id]", partnerid: "[Partner id, usually same as groupid]", partneruserid: "[Partner user id]", loginkey: "[Login key signed with secret api key]", g4scredentials: "[Glance for Salesforce credentials]" }, // Not all credentials fields are required. // See the page on Authorization Token for requirements. groupid: "1234", duration: "[duration of the authorization token in minutes 1-120]", onsuccess: showpresence, onfail: function(reason) { // display error ... console.error("Authorization failed:", reason); } }); // Define the global presence agent variable var presenceagent; function showpresence() { // Construct a new Presence Agent object presenceagent = new GLANCE.Presence.Agent({ visitorid: "111111111" }); // Setup event handlers presenceagent.onvisitorconn = function(e) { // visitor is connecting via websocket and can be signaled // display a "connected" status, e.g. light up a cobrowse button myhandlevisitor(); // Optional, lookup the visitor to find any associated data presenceagent.lookupVisitor({ onsuccess: function(visitordata) { myhandlevisitor(visitordata); }, onfail: function(reason) { console.error("Lookup failed:", reason); } }); }; } // Invoke a visitor side api. Put this code behind a "cobrowse" button. function invokeCobrowse() { presenceagent.invokeVisitor({ func: "GLANCE.Cobrowse.VisitorUI.showTerms", args: { sessionKey: "111111111" } }); } // Send a custom signal. onsignal will be called on the GLANCE.Presence.Visitor instance. // For example, put this code behind a "start chat" button. function startChatSignal() { presenceagent.signalVisitor({ chatid: "123456", command: "startchat" }); } ``` ================================================================= FILE: /developer/sdk/browseragent ================================================================= This SDK can be included by a Partner or Customer agent-side web application to: * Join a Glance screen share, Cobrowse, or 2-way mobile video session. * Lookup a session, or wait for a session to start. * Open a new window to connect to a session. * Receive lifecycle and error events from cobrowse and screenshare sessions including agent video. * Close the session viewer window. --- ## Partner Implementation **Step 1: Include the Glance JavaScript** The partner should include the script `https://cdn.glance.net/scripts//agent` (e.g., https://cdn.glance.net/scripts/8757/agent) in their agent web application. **Step 2: Register for events** Register for events by calling `GLANCE.Agent.addEventListener` and/or `GLANCE.Agent.addEventListenerAll`. **Step 3: Authenticate the Agent** The customer application should call `GLANCE.Agent.authenticate` with a credentials object containing `partnerid`, `partneruserid`, and `loginkey`. These parameters are stored within the `GLANCE` namespace and used to authenticate the user for Glance web services. **Step 4: Join a session** Join a session by using one of the following methods: * `GLANCE.Agent.joinSession` * `GLANCE.Agent.openViewer`: This method can be used to avoid lookup requests if the session is known to be running. If SSO is not being used, `openViewer` can be called without calling `authenticate`, and the agent will simply be prompted to log in with their username and password. --- ### Example Implementations * **Using `joinSession`:** [https://cdn.glance.net/agent/samples/6_55_0/AgentTest.html](https://cdn.glance.net/agent/samples/6_55_0/AgentTest.html) * **Using `openViewer`:** [https://cdn.glance.net/agent/samples/6_55_0/AgentTest1.html](https://cdn.glance.net/agent/samples/6_55_0/AgentTest1.html) ================================================================= FILE: /developer/sdk/browseragent/reference ================================================================= # Browser Agent SDK Reference ### GLANCE.Agent.webserver The default value is `https://www.glance.net`. This should only be set if a different service address is being used. --- ### GLANCE.Agent.authenticate(credentials) Authentication is required for `joinSession` or `lookupSession`, optional for `openViewer`, and not used in `openAgentJoinURL`. Login key authentication call: ```javascript GLANCE.Agent.authenticate({ loginkey: "", partnerid: "", partneruserid: "" }); ``` See [Login Key Authentication](/developer/integrations/login-key/) for information on these parameters. --- ### GLANCE.Agent.joinSession(sessionkey[, joinparams]) * `sessionKey`: The key for the session the agent is attempting to join. * `joinparams`: Other optional parameters. Examples below: ```javascript const joinparams = { windowName: "Name of the window", // Window name for new window, defaults to "_blank" windowFeatures: "width=1000,height=1000", // Features for window.open, defaults to 800x800 window with no title or menu bar wait: true, // Boolean indicating whether the method should wait for a session to start, defaults to true agentVideo: "true", // Boolean. If true, the video will engage automatically as soon as the agent joins the session name: "Agnes Agent", // Stored on the agent's call viewer record email: "agnes@example.com", // Stored on the agent's call viewer record phone: "+17813162596", // Stored on the agent's call viewer record origin: "def6789", // Can be used to store the application used by the agent to join the session. xid: "abc12345", // An external ID for matching the session with the session record in another system used by the customer. // Note: Only the xid value supplied by the first agent is stored in the database. }; GLANCE.Agent.joinSession("5012", joinparams); // Joins a session with session key "5012" and the parameters listed above ```
Info
origin and xid may be up to 255 Latin-1 (ISO/IEC 8859-1) characters. For character type and length limits on name, email, and phone see this page.
This method will look up and join a Glance session, opening a new viewer window. This function returns a JavaScript [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise). When the viewer window is opened, the Promise will "resolve" with a value that can be used to close the window with the `.close()` method. This is currently the actual Window object, but that may change in future releases. If opening the window is blocked by the browser popup blocker, the event `"popupblocked"` is fired. `joinSession` calls `GLANCE.Agent.lookupSession` passing `true` for the `wait` parameter. On `lookupFound`, this method calls `openAgentJoinURL` with the returned url. Various events are fired during the process. --- ### GLANCE.Agent.openViewer(sessionkey[, joinparams]) * `sessionKey`: The key for the session the agent is attempting to join. * `joinparams`: Other optional parameters. See `joinSession`. This method will open the agent viewer in a window to join a session. The function returns a JavaScript [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) like `joinSession`. If `authenticate` has been called with credentials, they will be used in `openViewer`. Otherwise, the agent will be prompted to login if they are not already.
Info
If you are using openViewer with an iframe id set (or using the joinSession method with iframe id set), make sure that your iframe implementation has the following attribute set: allow="camera *; microphone *"
--- ### GLANCE.Agent.openAgentJoinURL(agentjoinurl[, joinparams]) * `agentjoinurl`: URL to join the session, typically returned from `lookupSession`. * `joinparams`: Other optional parameters. See `joinSession`. This method will open the agent viewer URL in a window to join a session. This function returns a Javascript [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) like `joinSession`. This is intended to be passed the `agentjoinurl` returned from `lookupSession` or equivalent. --- ### GLANCE.Agent.lookupSession(sessionkey[, wait]) * `sessionKey`: The key for the session the agent is attempting to join. * `wait`: Optional boolean indicating whether the method should wait for a session to start. Defaults to true. ```javascript GLANCE.Agent.lookupSession("1234", false); // Attempts to look up session with key "1234". Will not wait. ``` This method looks up a session with the required session key parameter. Returns a Promise that resolves to an object. If the session is found, the Promise will resolve to an object that has the same properties as the `lookupFound` event, which also fires. Note the `agentjoinurl` property. Various errors, a timeout, or a canceled lookup will reject the Promise. A `lookupFailed` event will be fired for errors and timeouts. If `wait` is false, only one attempt is made to lookup. If the lookup request succeeds but the session is not found, the Promise resolves to `{}`. If `wait` is true (or omitted), the method repeatedly tries looking up the session for 45 seconds. Every time a new lookup is performed, a `lookupWaiting` event is fired. If the lookup times out, a `lookupFailed` event is fired with a reason property of `"timedout"`. The `lookupWaiting` event has data like `{ service: "agent", ssnkey: "1234", cancel: /* function */ }`. The property `cancel` is a function to call to cancel the lookup. This can be used if more than one lookup is in progress (not a typical use-case). --- ### GLANCE.Agent.cancelLookup() Stops the most recent lookup in progress, firing a `lookupCanceled` event. --- ### GLANCE.Agent.addEventListener(eventName, handler) * `eventName`: name of the event e.g., "sessionEnded". See below for the list of events. * `handler`: The function to be called. This method will set an event handler for the specified event. Where applicable, the handler is called with an `eventdata` parameter. ```javascript GLANCE.Agent.addEventListener("sessionEnded", function (eventdata) { // Perform your actions. }); ``` --- ### GLANCE.Agent.addEventListenerAll(handler) * `handler`: The function to be called This method will set an event handler for all events. The handler is called with two parameters: `eventname` and `eventdata`. For certain events, `eventdata` may be an empty object. ```javascript GLANCE.Agent.addEventListenerAll(function (eventname, eventdata) { // Perform your actions. }); ``` --- ### GLANCE.Agent.presenceConnect(visitorid) * `visitorid`: The id of the visitor to connect to via presence. `presenceConnect` establishes a connection to the Glance Presence Service for bidirectional communication with a similarly connected visitor. For communication to succeed, both the visitor and the agent must specify the same group id and visitor id. `GLANCE.Agent.authenticate()` must be called before invoking `presenceConnect()`. `presenceConnect()` returns a Promise which resolves when (and if) the visitor also connects to presence. The Promise rejects, and a `presenceFailed` event is fired, if `authenticate()` was not called or if the credentials have expired. To connect to a different visitor while already connected to Presence, first call `presenceDisconnect()`, then call `presenceConnect()` again with the new visitor ID. If `presenceConnect()` succeeds, the following events may be fired based on visitor activity: #### presence The `presence` event fires when the visitor transmits data. ```javascript { // the presence data sent by the visitor } ``` #### presenceAuthorized The `presenceAuthorized` event fires when the agent was able to authenticate using the credentials stored in `glanceCredentials`. ```javascript { "service": "Presence", "data": "payload_data" } ``` #### presenceError The `presenceError` fires when an error occurred during the presence connection. ```javascript { "error": "", "detail": "" } ``` *Error codes include:* * **authfailed** - Authorization token missing, bad, or expired. * **connfail** - Failed to establish or maintain the websocket connection. In the event of a connection failure, a "detail" property will include a detailed reason. * **connection** - Network connection dropped. * **error** - Server returned an error. * **invalidprotocol** - Visitor IDs contain special nats characters: space, *, and >. #### presenceFailed The `presenceFailed` event fires when an error occurred during the `presenceConnect()` flow and the connection failed. ```javascript { "service": "Presence", "reason": "" } ``` *Error codes include:* * **No credentials** - when credentials have not been provided in the `glancecredentials` object. * **error** - When the call to the authorization service was not successful, or another exception occurred during the `presenceConnect()` flow. #### presenceVisitorError The `presenceVisitorError` event fires when a "visitorerror" message is received on the presence connection, indicating that the visitor encountered an error while attempting to start a Cobrowse session. ```javascript { "code": "", "msg": "" } ``` #### presenceOnTerms The `presenceOnTerms` event fires when the terms and conditions dialog is displayed, accepted, or declined by the visitor. ```javascript { "status": "displayed" // or "accepted", "declined" } ``` #### presenceSessionEnd The `presenceSessionEnd` event fires when the visitor ends the session. ```javascript {} ``` #### presenceSessionStart The `presenceSessionStart` event fires when the visitor invokes the start session. When the agent clicks Join in a presence state (orange button), an accept modal is displayed to the visitor. When they click accept, the session is invoked. ```javascript {} ``` #### presenceVisibility The `presenceVisibility` event fires when the visitor's browser tab visibility changes. ```javascript { "visibility": "visible" // or "hidden" } ``` #### visitorData The `visitorData` event fires when the visitor successfully connects ("onvisitorconn"). ```javascript { "connected": true // or false } ``` --- ### GLANCE.Agent.presenceDisconnect() Disconnects the agent from the presence service. Once disconnected, the agent will no longer receive any events related to activity on the visitor side. Calling `GLANCE.Agent.presenceStartSession` will immediately reject the promise and fire `presenceInvokeFailed` with the following payload: ```javascript { "service": "presence", "reason": "notconnected" } ``` `GLANCE.Agent.presenceConnect(visitorid)` may be called again for the same visitor or a different visitor without having to authenticate again. **Returns:** `undefined` --- ### GLANCE.Agent.presenceSignalVisitor(params) *Note: `Glance.Agent.presenceSignalVisitor` requires version 7.3 script package and must have `presenceConnect()` called first.* Signals the specified visitor, passing a JSON message. There must be a connected `GLANCE.Presence.Visitor` instance on the visitor side to receive the signal. Params should include the following properties: ```javascript { "data": {} // The data to be sent in the signal } ``` If signaling fails, a `presenceSignalFailed` event is fired with payload: ```javascript { "service": "presence", "reason": "" } ``` If the visitor is not present, a `presenceSignalVisitor()` event is fired with the payload: ```javascript { service: "presence", reason: "visitornotpresent" } ``` **Returns:** `undefined` --- ### GLANCE.Agent.presenceStartSession(visitorid[, invokeparams, joinparams]) *Note: `GLANCE.Agent.presenceStartSession` must have `presenceConnect()` called first.* * `visitorid`: The id of the visitor. Used as the `sessionkey` by default. * `invokeparams`: Invokes a visitor side JavaScript function. * `joinparams`: Optional parameters passed to `joinSession`. See above. This method returns a promise that resolves to `GLANCE.Agent.joinSession`(see above) with the `visitorid` as the `sessionkey` (or as a random integer if left undefined) and `joinparams` provided. It must be called after `presenceConnect` for the given `visitorid`. The presenceAgent invokeVisitor function is called with the `invokeparams` argument or as default the `GLANCE.Cobrowse.VisitorUI.showTerms` if left undefined. ```javascript const invokeparams = { func: "GLANCE.Cobrowse.VisitorUI.showTerms", // The function that will be invoked on the visitor side. args: { groupid: "20541", // The group that the session will start in. The value passed here must match one of the group ids included in the script tag on the visitor side. video: "off", // The state of video when the session starts on the visitor side. Other options are "large" and "small". Overrides the group default and script tag setting. }, }; ``` If `invokeVisitor` fails, the promise is rejected and an event is fired: #### presenceInvokeFailed The `presenceInvokeFailed` event fires when the `GLANCE.Presence.invokeVisitor` method fails and the `onfail` function is called. ```javascript { "service": "Presence", "reason": "" } ``` --- ### GLANCE.Agent.inSession(sessionkey) This method returns a promise. `sessionkey` is a required parameter. * If the session key matches an active session that the agent is currently participating in, the promise resolves to a boolean `true`. Otherwise, resolves to `false`.
Warning
Calling insession() without parameters is possible but is not supported. Currently, this will return an array of sessions that the agent is participating in, but this functionality should not be relied on and will be separated into a different method in a future release.
--- ## Agent Events These are events generated by the Browser Agent API itself. There are a set of named events for each service. The event data will often have an attribute "service" that will be one of "agent", "screenshare", "cobrowse", or "video". Other attribute values may change in future releases. Certain events require communication from the Glance Agent Viewer window to the page hosting the Browser Agent API. Depending on the domains in use, additional configuration may be required. [Contact Glance](/users/account-management/contact/) to complete this setup. #### connected The `connected` event fires when the agent joins a Cobrowse or Screenshare session. ```javascript { "ssnkey": "", "groupid": "", "service": "" } ``` #### iframeblocked The `iframeblocked` event fires when an iframe is blocked on the agent's side. ```javascript { "service": "agent" } ``` #### inSession The `inSession` event fires when the `GLANCE.Agent.inSession` method is called. ```javascript { "service": "agent", "ssnkey": "" } ``` *"Sessionkey" in this event is the session key passed into the inSession method.* #### lookupWaiting The `lookupWaiting` event fires during a `lookupSession` function when event data is being looked up in the database. ```javascript { "service": "agent", "ssnkey": "", "cancel": "[Function: cancel]" } ``` #### lookupFailed The `lookupFailed` event fires during a `lookupSession` function when an error occurs. Fail scenarios include: * The API returned an error * An exception occurred in the client code * The lookup exceeded the retry number (The lookup searches immediately, then retries every 3 seconds for the first 15 seconds, then every 5 seconds for the next 30 seconds) ```javascript { "service": "agent", "ssnkey": "", "reason": "" } ``` #### lookupCancelled The `lookupCancelled` event fires during a `lookupSession` function when a lookup event was cancelled. ```javascript { "service": "agent", "ssnkey": "" } ``` #### lookupFound The `lookupFound` event fires during a `lookupSession` function when a lookup event was successful. ```javascript { "service": "agent", "id": "", "ssnid": "", "serverip": "", "servername": "", "personid": "", "groupid": "", "passcode": "", "agentjoinurl": "", "clientjoinurl": "", "visitorversion": "" } ``` #### popupblocked The `popupblocked` event fires when a pop up has been blocked (i.e., The Agent Join modal). ```javascript { "service": "agent" } ``` #### sessionEnded The `sessionEnded` event fires when a Cobrowse or Screenshare session ends. ```javascript { "ssnid": "", "ssnkey": "", "groupid": "", "reason": "", "service": "" } ``` #### viewerClosed The `viewerClosed` event fires when the agent viewer window has closed. ```javascript { "service": "agent" } ``` #### visitorConnected The `visitorConnected` event fires when the visitor connects or disconnects from the presence service. This information can be used to display a status indicator to the agent (e.g., Turning the JOIN button in a CRM from blue to orange). ```javascript { "connected": true // or false } ``` #### viewerOpened The `viewerOpened` event fires when the agent viewer window has opened. ```javascript { "service": "agent", "close": "[Function: close]" } ``` --- ## Cobrowse Events Includes the events documented in the Cobrowse Agent API. #### connecting The `connecting` event fires when the agentview page is loaded. ```javascript { "groupid": "72", "visitorid": "00000", "ssnkey": "00000", "service": "cobrowse" } ``` #### navigate The `Maps` event fires when a visitor navigates to a new page using a link, the browser's back/forward/refresh buttons, or when the visitor's tab regains focus. The object passed to the event handler includes information about the browser and URL. ```javascript { "browser": { "name": "chrome", "platform": "win", "version": 80 }, "visitorversion": "4.9.2.0", "url": "[https://ew10.myglance.org/test/CobrowseTest2.htm](https://ew10.myglance.org/test/CobrowseTest2.htm)", "pagemasked": "false", "service": "cobrowse" } ``` #### agents The `agents` event announces agents joining or leaving the session. ```javascript { "count": 1, "agentlist": [], "service": "cobrowse" } ``` #### rc The `rc` event fires when the remote control state changes. The `enabled` property of the object indicates whether remote control is currently enabled. The `suspended` property indicates whether control is temporarily suspended due to visitor mouse or keyboard activity. ```javascript { "enabled": false, "suspended": true, "service": "cobrowse" } ``` --- ## Screenshare Events #### connecting The `connecting` event fires when the agent viewer page is connecting to the screenshare session. The event data has various parameters; the most interesting is probably `"visitorversion"` which contains the Glance version number on the visitor side, plus OS type and version. Also contains `"agentusername"`, the Glance Address of the agent. ```javascript { "calltype": "G", "ssnkey": "4400", "ssnid": "20541.4400.846930886", "agentconnect": true, "server": "", "maincid": 88071823, "displayprotocolversion": 1019, "callflags": 2195648, "visitorversion": "4.17.1.18+GCD+OS%3d%22Mac+OS+X+10.16+(20D91)%22", "agentusername": "joe.demo.glance.net", "agentinfo": { "username": "joe.demo.glance.net", "partnerid": 20541, "partneruserid": "Demo", "name": "Joe Demo", "title": "" }, "videoserver": "video.glance.net", "agentvideo": 0, "service": "screenshare" } ``` #### screen The `screen` event fires when a session starts and whenever display size changes. ```javascript { "display": { "width": 375, "height": 812 }, "view": { "width": 211, "height": 458 } } ``` #### stats The `stats` event shows statistics on screenshare bandwidth and frame rate (values can be null). ```javascript { "bytespersec": 5221.8, "framespersec": 0.4 } ``` #### conndrop The `conndrop` event fires when a connection either drops or fails to open. ```javascript {} ``` --- ## Video Events #### initialized The `initialized` event fires after the initialization of the Glance video (web-screenshare) environment. ```javascript { "service": "video" } ``` #### previewStarted The `previewStarted` event fires after the "initialized" event when the preview started, indicating that the "startPaused" parameter mentioned in "initialized" was false. Used with cobrowse sessions, not used within screenshare sessions. ```javascript { "service": "video" } ``` #### videoStarted The `videoStarted` event fires when the actual video session starts (when video is streamed to the video server). ```javascript { "options": { "sessionkey": "1498V231480", "bgBlur": true, "maincallid": "86490035", "vserver": "[https://video.glance.net/](https://video.glance.net/)", "width": 352, "height": 288, "framerate": 15, "bandwidth": "250kbps", "mime": null, "modelID": "browser", "deviceName": null, "maincid": null, "stopPreviewsOnSessionEnd": true, "groupid": null, "partnerid": null, "username": null, "isAnonymous": null, "password": null, "videoBackEnabled": false, "bitspersecond": 250000, "requestedbitspersecond": 250000, "device": "LG UltraFine Display Camera", "sourceDevice": "LG UltraFine Display Camera (043e:9a4d)" }, "service": "video" } ``` #### videoEnded The `videoEnded` event fires when the video session ends. ```javascript { "service": "video" } ``` #### visitorvideo The `visitorvideo` fires when the visitor's video state changes, either by pause/unpause or by resizing small/large. ```javascript { "video": "small", "paused": false, "service": "cobrowse" } ``` #### guestCountChanged This event with `"count": 1` means the visitor side has connected to the video session. `0` means the visitor has disconnected. ```javascript { "count": 1, "service": "video" } ``` #### error The `error` event fires when an error happened to the video service (e.g., camera is occupied by another app, browser doesn't support video or screenshare, cancel button clicked on get display media dialog, etc.) ```javascript { "message": "initialize failure", "options": { "sessionkey": "1234V823366", "maincallid": "13685174", "vserver": "[https://video.myglance.org/](https://video.myglance.org/)", "width": 176, "height": 144, "framerate": 15, "bandwidth": "250kbps", "mime": null, "modelID": "browser", "deviceName": null, "maincid": null, "stopPreviewsOnSessionEnd": true, "groupid": null, "partnerid": null, "username": null, "isAnonymous": null, "password": null, "bitspersecond": 250000, "requestedbitspersecond": 250000, "device": "cam1", "sourceDevice": "Logitech HD Webcam C615 (046d:082c)" }, "service": "video" } ``` #### notEnabled The `notEnabled` event fires when the agent's browser does not support video. ```javascript { "reason": "AgentVideo script not loaded (unsupported browser or visitor script version?)", "service": "video" } ``` #### info These are informational messages from either the client itself or from the video server. ```javascript { "message": "", "options": { "bandwidth": "1500kbps", "bgBlur": true, "bitspersecond": 1500000, "device": "Logitech HD Webcam C615", "deviceName": undefined, "framerate": "15", "groupid": null, "height": 288, "isAnonymous": false, "maincallid": null, "maincid": null, "mime": "video/webm; codecs=\"avc1.42E01E\"", "modelID": "browser", "partnerid": null, "password": null, "requestedbitspersecond": 1500000, "sessionkey": "tjtaAg", "sourceDevice": "Logitech HD Webcam C615 (046d:082c)", "stopPreviewsOnSessionEnd": false, "username": null, "videoBackEnabled": false, "server": "[https://myvideo.myglance.org:3000/](https://myvideo.myglance.org:3000/)", "width": 352 } } ``` Among these sent by the client are: * `'Background Blurring requires a more powerful version of WebGL than is supported by your browser.'` Notice that though background blurring has been requested, it has been disabled because though the client browser supports WebGL, it is not a powerful enough implementation to support Agent detection and background blurring. * `'Background Blurring requires WebGL which is not supported by your browser.'` Notice that though background blurring has been requested, it has been disabled because the client browser does not support WebGL which is required for background blurring. ================================================================= FILE: /developer/sdk/guest_join_sdk ================================================================= Cobrowse includes the ability for agents to optionally admit unauthenticated "guests" into sessions as additional participants to view the visitor's browser. Glance supplies a default guest join experience for each group. To see what this looks like, navigate to the following URL, substituting your group ID for the parameter at the end: `https://www.glance.net/guest/?groupid=[groupid]` In addition to the out-of-the-box flow, Glance also offers the Guest Join SDK, which allows you to customize the experience. If you choose this option, you must supply the UI entirely. Complete the following steps to implement the Guest Join SDK: ### 1. Download or Reference the SDK File The Guest Join SDK can be utilized by linking to the following URL: * Staging = `https://cdn.glance.net/scripts/[groupid]/guest?site=staging` * Production = `https://cdn.glance.net/scripts/[groupid]/guest?site=production`
Note
The [groupid] in the above URLs must be replaced with your Group ID.
Below is an example script source tag that could be added your Guest Join page: {% tabs %} {% tab title="Production" %} ```html ``` {% /tab %} {% tab title="Staging" %} ```html ``` {% /tab %} {% /tabs %} *Note: In the example above, 12345 is used as a Group ID, you would need to update this value with your Group ID.* --- ### 2. Construct the UI At a basic level, the act of admitting a guest to a Cobrowse session involves: 1. Connecting to the Glance service from the guest's device. 2. Receiving a code from the Glance service (i.e., the *guestcode*). 3. Communicating the *guestcode* to the agent so the agent can use it to admit the guest. Generally, the above flow is accomplished via a web interface made available to the guest, which involves building: 1. A webpage where the guest can optionally enter their name and click a button to generate a 6-digit code (the *guestcode*). 2. A page that displays the *guestcode* once generated. 3. Some error handling/messaging. For example, you could build a page similar to the default guest join experience that looks like this: Default Guest Join UI Example It contains one form field and one button. When the guest clicks **Continue**, your page will run code similar to the following, leveraging the Glance SDK in various places: ```javascript async function getJoinCode() { // define the guest's name, or use the generic "Guest" if the field is blank var guestName = document.querySelector("#GuestName").value ? document.querySelector("#GuestName").value : "Guest"; // Show or hide UI as appropriate, for example: $("#headermessagetext").hide(); $("#guestname").hide(); $("#waitingtext").show(); $("#joincode").show(); let connector = new GLANCE.Guest.Connector({ groupid: groupid, // Make sure to replace with your unique group id ws: "www.glance.net", }); connector.addEventListener("timeout", () => { // Perform functions/adjust UI in the event that the agent fails to admit the guest before the code times out }); connector.addEventListener("error", () => { // Perform functions/adjust UI in the event of an error }); let guestcode = await connector.connect(guestName); if (!guestcode.ok) { // Perform functions/adjust UI in the event of an error } else { // guestcode.code contains the code to be displayed to the user. Adjust the UI and display it to the user. // guestcode.timeout indicates the number of seconds until the code will timeout. // You may optionally use this to extend the timeout, possibly in response to a user prompt if desired. } } ```
Info
The code example above is for illustrative purposes only. It will need to be adjusted based on the exact design of your page and cannot be used as is.
The resulting page could look something like this: Custom Guest Join UI Example When the agent admits the guest successfully, the guest's browser will automatically be redirected to the **Guest Viewer** page (hosted on glance.net) so this event does not need to be handled explicitly. After the session, the guest is redirected to a URL that can be specified in the **Account Management** area of glance.net. Refer to the [Glance Guest API Reference Document](https://glance.gitlab.io/glance-client-src/GLANCE.Guest.html) for a breakdown of the events, parameters, and additional functionality available. ================================================================= FILE: /developer/sdk ================================================================= The Glance SDK suite provides developers with the tools needed to embed seamless, real-time collaboration directly into any platform. Whether you are building a custom agent desktop, integrating into a native mobile app, or creating a frictionless join experience for your customers, our SDKs offer flexible, out-of-the-box components and granular API controls. Choose the SDK that fits your implementation: {% launcher %} {% card title="Browser Agent SDK" description="Embed the Glance Agent experience directly into your web-based CRM, CCaaS, or custom support portal." href="/developer/sdk/browseragent/" /%} {% card title="Mobile SDK" description="Integrate cobrowse, screen sharing, and masking natively into your iOS and Android applications." href="/developer/sdk/mobile_sdk/" /%} {% card title="Guest Join SDK" description="Create frictionless, one-click session join experiences for your customers directly in the browser." href="/developer/sdk/guest_join_sdk/" /%} {% /launcher %} ## Choosing the Right SDK * **Building for the Agent:** If you are a developer tasked with integrating the Glance agent viewer into tools like Salesforce, Zendesk, Genesys, or your own proprietary web dashboard, you will want the **Browser Agent SDK**. * **Building for the App User:** If you need to allow customers to share their mobile app screen with your support team, use the **Mobile SDK** (available for iOS and Android). * **Building for the Web User:** If you want to dynamically launch sessions for customers visiting your website without requiring them to download anything, the **Guest Join SDK** is your go-to. ================================================================= FILE: /developer/sdk/mobile_sdk/flows ================================================================= The following flowcharts illustrate Glance's operations when using the mobile SDK. ## Initialize Glance and Join a Session Flowchart showing the initialization of Glance and joining a session ## Presence Connect Flow from Mobile SDK Host App to Custom Tab in Web Browser Flowchart showing the Presence connect flow from the Mobile SDK Host App to a Custom Tab in the Web Browser ================================================================= FILE: /developer/sdk/mobile_sdk ================================================================= The mobile SDK is easy to integrate into your mobile apps and pairs with pre-built integrations to agent desktops of CRM, CCaaS, and custom systems to offer a complete, out-of-the-box solution. ## iOS Get started integrating Glance into your iOS Apps with Swift or Objective-C. * **[iOS SDK](https://gitlab.com/glance-sdk-public/glance-sdk-ios-releases):** Provides essential core features, enabling our customers to implement event handling without a UI. * **[iOS Default UI SDK](https://gitlab.com/glance-sdk-public/glance-default-ui-ios-releases):** An out-of-the-box implementation of our iOS SDK with a default UI and sample app that can be copied and customized to fit a company's brand. ## Android Get started integrating Glance into your Android Apps with Kotlin or Java. * **[Android SDK](https://gitlab.com/glance-sdk-public/glance-sdk-android-releases):** Provides essential core features, enabling our customers to implement event handling without a UI. * **[Android Default UI SDK](https://gitlab.com/glance-sdk-public/glance-default-ui-android-releases):** An out-of-the-box implementation of our Android SDK with a default UI and sample app that can be copied and customized to fit a company's brand. ================================================================= FILE: /developer/sdk/mobile_sdk/masking_android ================================================================= In **Glance Mobile Cobrowse**, masking is a critical feature used to protect sensitive or private information on the end user�s screen during a live session with an agent. By selectively hiding specific UI elements�such as passwords, credit card fields, or health data�from the representative's view, masking allows companies to safeguard sensitive information while still providing real-time support. To enable masking during sessions, developers should use the Glance Mobile SDK to designate which portions of the screen should be hidden from agents. Masking integrates with the native rendering layer of the mobile app, allowing developers to selectively hide sensitive views. There are four main contexts in which masking can be applied: * **View Masking (Traditional Android Views)** * **Jetpack Compose Masking** * **WebView Masking** * **Keyboard Masking** Below are best practices for each of these contexts, as well as general masking guidelines that apply in all situations. --- ## General Masking In all contexts, once an element is designated to be masked by the SDK, it will remain obscured from the agent's view for the duration of all current and future sessions. Given this behavior, masking should be applied at the time views are created�during layout or initialization�rather than waiting until a session has begun. This ensures that masking is consistently applied, even if a session starts after the views are already rendered or if views are recreated during the app lifecycle. Similarly, when a view is destroyed, masking should be removed. In most cases, masking is automatically removed when the view is destroyed, but best practice is to explicitly remove it in the view's destructor. Masking is always applied if the view is visible. If a view is destroyed and no longer present, masking will be removed and will not appear during sessions. There are, however, situations in which a mask might be applied even though the view is not visible�primarily when the view is covered by another view, which the SDK may not detect. In such cases, if masking is not desired, it should be removed and reapplied when the view becomes visible again. ### Takeaways * Masked elements remain hidden for the entire session once registered with the SDK. * Apply masking during view initialization or layout, not after a session begins. * Always remove masking when a view is destroyed or removed and no longer used. --- ## View Masking For apps built using traditional Android Views, masking is performed by passing view IDs or view references to the SDK. Masking can be removed by making calls to remove masked views using references to the masked views. Below are the methods that should be used for masking Android views: ```java // Adding Masked Views by ID Glance.addMaskedViewId(R.id.sensitiveTextField, "Masked text field"); Glance.addMaskedViewId(R.id.sensitiveLabel, "Masked label"); Glance.addMaskedViewId(R.id.sensitiveButton, "Masked button"); // Adding Masked Views by reference Glance.addMaskedView(textField, "Masked text field"); Glance.addMaskedView(label, "Masked label"); Glance.addMaskedView(button, "Masked button"); // Removing Masked Views Glance.removeMaskedViewId(R.id.sensitiveTextField); Glance.removeMaskedView(textField); ``` When using traditional Android Views, the SDK utilizes the view�s visibility to determine when masks should be displayed. In these cases, you typically do not need to manually add or remove masked views based on visibility. However, there are scenarios where masks might remain visible even when the corresponding views are obstructed�for example, when covered by a `Dialog` or a `Compose` view rendered in a way that prevents the SDK from detecting the obstruction. In such cases, you may need to explicitly call `removeMaskedView` when the view is no longer visible and reapply it using `addMaskedView` once it becomes visible again.
Note
This is a rare situation. In most cases, manual intervention is not required.
--- ## Jetpack Compose Masking Since Jetpack Compose does not expose elements via referenceable IDs and manages its UI through an internal layer, masking is applied using modifiers. Because of this internal architecture, the SDK has limited ability to detect whether a Compose view is obstructed by other UI elements. As a result, masking will remain active for any Compose element that is present on the screen, even if it's visually covered by another element. In these cases, the app is responsible for managing the view's visibility and conditionally applying the masking modifier only when the view is actually visible. Below is an example that illustrates how to conditionally apply a masking modifier to a Compose view: ```kotlin @Composable fun MaskedPasswordField() { var isVisible by remember { mutableStateOf(true) } if (isVisible) { OutlinedTextField( value = "", onValueChange = {}, label = { Text("Enter Password") }, modifier = Modifier.glanceMask("Password Field") ) } else { OutlinedTextField( value = "", onValueChange = {}, label = { Text("Enter Password") } ) } } ``` Jetpack Compose re-renders UI elements in response to state changes, so unnecessary or frequent updates to state values can lead to excessive recompositions and performance overhead. For optimal performance, only update state variables when the visibility or content of a view meaningfully changes, rather than on every minor event or frame. Efficient and minimal recomposition is essential to maintaining performance in Jetpack Compose applications. --- ## WebView Masking Masking in a WebView is applied using CSS selectors or element IDs. The mask will be displayed as long as the WebView is visible and present in the view hierarchy. Setting the WebView�s visibility to `GONE` will also hide its masks. However, removing the WebView from the view hierarchy does not automatically remove masking. WebView masking differs slightly from native view masking. It requires that you explicitly remove the `GlanceWebViewJavascriptInterface` when masking is no longer needed. While the operating system typically cleans up a WebView and its associated JavaScript interface when it is no longer in use, there are cases where the OS may retain a WebView for performance reasons. To ensure proper cleanup, it�s best practice to manually remove masking from the WebView when it's no longer required. Applying WebView masking: ```java String queryMaskSelectors = ".mask_1, .mask_2, #mask_3, .mask_4, #hplogo"; String labelsToMask = "mask 1, mask 2, mask 3, mask 4, LOGO"; WebView webView = new WebView(context); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setDomStorageEnabled(true); GlanceWebViewJavascriptInterface jsInterface = new GlanceWebViewJavascriptInterface(webView); webView.addJavascriptInterface(jsInterface, "GLANCE_Mask"); GlanceWebViewClient webViewClient = new GlanceWebViewClient(queryMaskSelectors, labelsToMask); webView.setWebViewClient(webViewClient); ``` Cleanup when done: ```java webView.removeJavascriptInterface("GLANCE_Mask"); jsInterface.onDestroy(); ``` --- ## Keyboard Masking (Optional) If your app includes custom keyboards or input accessory views that display sensitive content, you should apply the same masking techniques used for regular Android views. This can be done using either `addMaskedView` for traditional views or the `glanceMask` modifier for Jetpack Compose, depending on your implementation. For standard system keyboards, masking can be applied using the following method: ```java Glance.maskKeyboard(true); ``` This can be set during session initialization: ```java DefaultSessionUI.init( activity, startParams, true, // maskKeyboard parameter groupId, visitorId, eventsListener ); ``` ================================================================= FILE: /developer/sdk/mobile_sdk/masking_ios ================================================================= In Glance Mobile Cobrowse, masking is a critical feature used to protect sensitive or private information on the end user�s screen during a live session with an agent. By selectively hiding specific UI elements�such as passwords, credit card fields, or health data�from the representative�s view, masking enables companies to safeguard user privacy while still delivering real-time support. To enable masking during sessions, developers should use the Glance Mobile SDK to specify which parts of the screen should be hidden from agents. Masking integrates directly with the app's native rendering layer, allowing developers to selectively obscure sensitive views. There are four primary contexts in which masking can be applied: * **UIKit Masking** * **SwiftUI Masking** * **WebView Masking** * **Keyboard Masking** Below are best practices for each of these contexts, along with general masking guidelines that apply in all situations. --- ## General Masking In all contexts, once an element is designated to be masked by the SDK, it remains hidden from the agent�s view for the duration of the current session and any future sessions unless explicitly removed. Because of this behavior, masking should be applied during the creation of views�either at layout or during initialization�rather than waiting until a session begins. This ensures that masking is consistently applied, even if a session starts after views have already been rendered, or if views are recreated during the app lifecycle. Similarly, masking should be removed when a view is destroyed or removed from the view hierarchy. In most cases, masking is automatically removed when the associated view is deallocated. However, best practice is to explicitly remove the mask in the view�s destructor or lifecycle cleanup logic. Masking will always be active when the view is being displayed. If a view is destroyed or no longer present in the hierarchy, the mask will be removed and will not appear during sessions. However, there are cases where a mask may appear even though the view is not visibly present�typically because it is being covered by another view. Since the SDK cannot always detect when a view is visually obstructed, developers should manually remove and reapply masking when visibility changes and masking is not desired. ### Takeaways * Masked elements remain hidden for the entire session once registered with the SDK. * Apply masking during view initialization or layout, not after a session begins. * Always remove masking when a view is destroyed or removed from the hierarchy. --- ## UIKit Masking For apps built using UIKit (iOS), masking is applied by passing references to views directly to the SDK. Masking can be removed by calling the appropriate SDK methods and providing references to the views to be unmasked. Below are the Swift methods that should be used for masking UIKit-based views: ```swift // Adding Masked Views Glance.addMaskedView(textField, withLabel: "Masked text field") Glance.addMaskedView(label, withLabel: "Masked label") Glance.addMaskedView(button, withLabel: "Masked button") // Removing Masked Views Glance.removeMaskedView(textField) Glance.removeMaskedView(label) Glance.removeMaskedView(button) ``` When using UIKit, the SDK relies on the native view hierarchy to determine which views should be masked. Typically, you do not need to manually add or remove masked views based on their visibility�this is handled automatically. However, in certain edge cases, masks may remain visible even when the corresponding views are actually obstructed by another view. This situation can occur with elements like `UIAlertView` or with SwiftUI views layered on top of UIKit views in a way that prevents the SDK from detecting the obstruction. In such cases, you may need to explicitly call `removeMaskedView` when the view is no longer visible, and `addMaskedView` when it becomes visible again.
Note
This is a rare situation. In most cases, manual intervention is not required.
--- ## SwiftUI Masking Since SwiftUI manages its UI through a separate rendering layer and does not expose elements directly in the native view hierarchy, masking is applied using modifiers. Due to the limited access the SDK has to SwiftUI's internal structure, it cannot always detect when SwiftUI views are obscured by other elements. As a result, masks will remain active for any SwiftUI element that is part of the visible SwiftUI hierarchy, regardless of whether it is visually covered. To address this, the app must manage view visibility explicitly and apply the masking modifier conditionally�only when the view is actually visible. Note: SwiftUI automatically re-renders views whenever any of their bound state variables change. Avoid excessive or unnecessary state updates, as they can lead to redundant view redraws and performance degradation. However, this reactive behavior can be leveraged for masking: by using a state variable to track a view�s visibility and toggling that state, you can effectively add or remove the masking modifier when appropriate. Below is an example that demonstrates how to conditionally apply a masking modifier to a SwiftUI view: ```swift struct MaskedPasswordField: View { @State private var isVisible = true var body: some View { if isVisible { TextField("Enter Password", text: .constant("")) .addMaskedView(label: "Password Field") } else { TextField("Enter Password", text: .constant("")) } } } ``` --- ## WebView Masking Masking at the WebView level can be applied using **CSS selectors** and **element IDs**, allowing the SDK to hide specific content within the WebView. Similar to SwiftUI, WebView masking is visible as long as the WebView itself is visible and part of the view hierarchy. Setting the WebView's `isHidden` property to `true` will also hide its masks. However, removing the WebView from the view hierarchy does not automatically remove the masks. WebView masking differs slightly from native view masking in that it requires explicit removal of the masking controller. When you are done masking content within a WebView, you must manually remove the `GlanceWebMaskingController`. While in most cases the operating system will clean up the WebView and its associated `glanceMaskContentController` when it is no longer needed, there are instances where the OS may retain the WebView for performance reasons. Because of this, it is best practice to explicitly release the masking controller when the WebView is no longer in use. Even if the WebView has been removed from the screen, if it has not been fully deallocated, you should ensure that the `glanceMaskController` calls its `onDestroy()` method. Below is the code example for properly cleaning up WebView masking: ```swift let maskingQuerySelectors = [".mask_1", ".mask_2", "#mask_3", ".mask_4", "#hplogo"] let maskingLabels = ["mask 1", "mask 2", "mask 3", "mask 4", "LOGO"] glanceMaskContentController = GlanceMaskContentController( maskingQuerySelectors.joined(separator: ", "), labels: maskingLabels.joined(separator: ", ") ) let config = WKWebViewConfiguration() config.userContentController = glanceMaskContentController maskingWebView = WKWebView(frame: self.view.bounds, configuration: config) maskingWebView.load(URLRequest(url: URL(string: url)!)) glanceMaskContentController.setWebView(maskingWebView) self.view.addSubview(maskingWebView) ``` Cleanup when done: ```swift glanceMaskContentController.onDestroy() ``` --- ## Keyboard Masking (Optional) If your app includes custom keyboards or input accessory views that display sensitive content, you should apply the same masking techniques used for regular UIKit or SwiftUI views. Depending on the implementation, use either `addMaskedView` for UIKit components or the `.addMaskedView()` modifier for SwiftUI. For standard system keyboards, masking can also be applied using the following method: ```swift Glance.maskKeyboard(true) ``` ================================================================= FILE: /index =================================================================

Glance Docs

Get the most out of Glance. Access comprehensive guides, API documentation, and configuration best practices to seamlessly integrate Glance into your customer engagement strategy.

Integration guides and SDKs for bringing Glance into your web, mobile, and desktop applications.

Admin configuration, security & compliance protocols, and user guides for managing your Glance account.

Direct access to our REST APIs for managing users, sessions, reporting data, and webhooks.

Stay up to date with the latest features, improvements, and fixes across the Glance platform.

================================================================= FILE: /release-notes/Archive/2023-archive ================================================================= ## 6.7 Mobile SDK - December 29, 2023 ### Android * Improved security by now connecting to Websocket using Retrofit. * Fixed bug where DefaultUI SDK would crash after screen rotation. * Resolved conflict with Jettified obfuscated library. * Fixed bug where ANR would occur if a Glance Init call was made to a disconnected network. * Modernized the current HTTP calls mechanism using the Retrofit library. * Fixed bug where Fullscreen Capture Mode wasn't functioning properly. * Resolved issue where Null Pointer Exception would occur when performing REST API calls. ### iOS * The Glance SDK is now included in the frameworks folder for manual integration. * Fixed bug where Default UI integration would trigger an error on captureSession property using weak self. * Fixed bug where the video widget location on the visitor screen would not match what was displayed on the agent screen. * Resolved conflict with Presence auto-join. ## 3.31 Salesforce Package - December 22, 2023 ### Fixes and Improvements * **New Max Sync Minutes Field:** Added a new field in Glance Company Settings that allows you to set custom max sync minutes in the event that there are sync issues. Previously setting max sync minutes required assistance from Glance Customer Success. See [this page](/integrations/salesforce/sf-settings/#settings) for more information on how and when to modify this setting. * **Video Session Reporting enhancements:** Added the ability to see if video was used on sessions. * **Look and Feel changes:** Updated Glance Branding to the new logo. Note, you must complete a fresh install of the Glance package to see the updated branding. * **Ability to sort on Glance Sync History page:** Added the ability to easily sort the page contents by column, and set the number of records per-page. * Additional minor enhancements and improvements. ## 6.13 Website & Cobrowse - December 21, 2023 ### Bug Fixes and Optimizations * Customers with Allowed Sites for Agents enabled can now restrict which browser type an agent can screen share from. * Stability Improvements. ## 6.6.1 Mobile iOS SDK - December 18, 2023 ### iOS SDK * Resolved bug that prevented WebMasking from working. ## 6.6 Mobile SDK - December 4, 2023 ### Default UI as a Package The Glance SDK UI has been extracted to a standalone module, so you can use only the core features without any UI or you can use/change the UI code to match your application needs. The package includes sample apps showing how to use it. ### Two-Way Video + Screen Share The SDK now allows two-way video to be utilized during screen-sharing sessions. With one click, agents can connect face-to-face with your customers and naturally collaborate in your app. Or, start with screen share in the app and introduce video as needed in the conversation. How the experience works can be configured inside your app or managed in your group's settings. ### Mobile Session UI Redesign The Glance SDK UI has a more intuitive look and feel that supports two-way video communication. Video and controls are grouped into a movable widget that glides over your app experience. * The widget can escalate to different modes (and sizes) depending on the visitor/agent's needs. * The video widget will return to one of four corners when moved by your finger or collapse off-screen into a tab when pushed off-screen. * The video widget can expand to "Large Mode" for a focused face-to-face conversation. * During large mode, the mobile user can show their rear camera for sharing documents or other things in their physical space. * Alerts and prompts can be customized with your own language, styles, and links to terms & conditions to keep the experience consistent with your brand. * Session UI supports screen readers, allowing visually impaired customers to get auditory feedback on session status and swipe through session controls on top of the app. ### Agent Session Controls Agents now have more control over the session experience to better connect with customers. * Agents can move the customer's video widget around the screen, choosing a corner to leave it in or taking it off-screen in a tab to focus on the app content. * Agents can also dynamically change the experience to large and small video modes, allowing them to drive face-to-face connections before taking action in the app. * On occasions when customers inadvertently share their video, the agent can turn their camera off. Only customers can turn the video back on when they are ready. * **Note:** Session controls are for mobile phone sessions only. Desktops and tablets are not supported.* ### Optimizations * Easier integration and usage. * Improved stability when connecting to Presence on iOS. * Increased character limit for visitor IDs with Presence to 100. * Fixed an issue on iOS that prevented agents from offering sessions via Presence if the visitor had already completed a session. * Moved critical features like *Visitor Initialization* and *Session Start* out of the main (UI) thread to make it asynchronous on Android. * Cleaned Proguard rules to ensure that the built artifacts have only the necessary content, resulting in the artifacts getting smaller (Android). * Enabled SPM integration (iOS). ### Retirements & Support * The Glance SDK integration with VoIP is being retired. We recommend using the device's onboard voice capabilities instead. * The standalone 2-Way Video SDK is being retired. For 2-way video capabilities, use the standard Glance 6.6 SDK. * The previous 5.7 SDK generation remains supported for the time being. ## 6.5 Mobile SDK - November 24, 2023 ### iOS SDK Resolved the following issues with the Default UI: * Missing camera button on the Visitor side during a session. * Visitor phone seems frozen when in a session (no video on). ### Android SDK Resolved the following issues with the Default UI: * Missing Min or Max button in smallvisitoronly or largevisitoronly mode. * Smallvisitoronly or largevisitoronly mode prevents the Agent from seeing the Visitor after the Agent shares their own video. ## 6.12 Website & Cobrowse - November 21, 2023 ### Bug Fixes and Optimizations * Stability Improvements ## 6.11 Website & Cobrowse - November 9, 2023 ### Bug Fixes and Optimizations * Improvements to infrastructure for session servers. * Stability Improvements. ### Script Package Patch 6.11.1 Released on 11/13/2023 * Fix for XLS Cobrowse on the latest browser versions.
Info
The 6.10 version had no customer-facing changes and included Glance internal improvements only.
## 6.9 Glance Windows Client - November 9, 2023 The latest version of the Glance Client for Windows is available now at [www.glance.net/download](https://www.glance.net/install/install.aspx) This client contains the following improvements: * The embedded browser used by the client has been changed to the new Chromium Edge-based WebView2 embedded browser to improve the security of the client. * The [Evergreen](https://learn.microsoft.com/en-us/microsoft-edge/webview2/concepts/distribution#the-evergreen-runtime-distribution-mode) version is now used, which receives security and other updates from Windows Update along with Edge. * The install package is smaller and runs the WebView2 installer if necessary. * Added support for N-way video within Cobrowse, like our browser-based agent viewer. * Branding has been updated. * Implemented fixes and cosmetic improvements to screen sharing of selected applications. Please contact Glance to enable this feature on your account. * The client is now a 64-bit application and requires Windows 11 or 64-bit Windows 10 (Version 1809 Build 17763 or greater, we strongly recommend updating to the latest Version 22H2). * The client uses newer versions of some Microsoft packages, the following components must be installed. * **Note:** The installer does not include these, which reduces the size considerably, it will offer to download them from Microsoft. You can also manually install them from the links below or using the winget command:* **Microsoft Visual C++ Runtime 16.36.32532.0** * [https://aka.ms/vs/17/release/vc_redist.x64.exe](https://aka.ms/vs/17/release/vc_redist.x64.exe) * `winget install Microsoft.VCRedist.2015+.x64` **Microsoft .NET Core 6.0** * [https://dotnet.microsoft.com/en-us/download/dotnet/6.0](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) * `winget install Microsoft.DotNet.DesktopRuntime.6` ## 6.9 Website & Cobrowse - October 18, 2023 ### Bug Fixes and Optimizations * New option to add a Secondary Terms URL beneath the Terms and Conditions URL on the *Mind If I Browse With You* widget. Refer to the https://support.hp.com/us-en/document/c06036128(/glance-cobrowse/glance-cobrowse-customizing/url-configuration/) for additional information. * Created tools to generate custom Cobrowse Guest Join pages. * Renamed **Links** section within **Cobrowse Settings** to **URL Configuration**. * Optimizations and improvements to CAM. * Stability Improvements. ## 6.8 Website & Video - September 28, 2023 ### Bug Fixes and Optimizations * The background color of the header displayed while a guest is in session can now be customized. * Optimizations and improvements to CAM. * Stability Improvements. ## 6.7 Website, Video, & Cobrowse - September 14, 2023 ### Bug Fixes and Optimizations * Guests joining a Cobrowse session with video enabled now select their video options after they've been admitted by an agent. Refer to the [Adding A Guest](/glance-cobrowse/features/adding-guest/) page for more information. * Mobile users' video display now appears in a square frame when viewed on a computer screen to improve alignment. * Stability Improvements. ## 6.6 Website, Video, & Cobrowse - August 31, 2023 ### Bug Fixes and Optimizations * Eliminated reliance on 3rd party cookies for customers who iframe the guest join experience within Cobrowse. * Performance improvements, security updates, and bug fixes. ## 6.5 Website & Cobrowse - July 27, 2023 ### Bug Fixes and Optimizations * Clients now have the ability to host the Cobrowse guest join page on their own domain. Refer to the [Adding A Guest](/glance-cobrowse/features/adding-guest/) page for additional information. * Performance improvements and bug fixes. ## 6.4 Website & Cobrowse - June 29, 2023 ### Background Blurring on Mobile Devices Visitors and guests can now enable background blurring while in a Cobrowse session on a mobile device. Refer to [this page](/glance-cobrowse/features/agent-video/#enabling-background-effects) for more information regarding background blurring. ### Bug Fixes and Optimizations * Implemented Universal Cobrowse Asset Management (CAM) to increase session speeds. * Improved video mask edge blending. * Improved video stability when one or more guests join. * The agent now receives a notification if the Cobrowse tab remains open but is no longer the primary focus of the visitor, indicating that the visitor may have minimized the browser or opened an unrelated tab. * Updated the TLS cipher suites used on the website and services for improved security. This may affect use of services, especially Screen Share, from deprecated browsers or operating systems such as Windows 8.1 and earlier. * Additional performance improvements and bug fixes. ## 3.22 Salesforce Package - June 9, 2023 ### Fixes and Improvements * Improved the 1-Click Connect Experience to allow agents and visitors to get connected when agents click the **Join** button before the visitor is present on the page. * Added a debug mode to allow you to do additional debugging of Glance issues. See [this page](/integrations/salesforce/sf-settings/#settings) for more information on how and when to enable this setting. ## 5.7.13 Mobile SDK - June 9, 2023 ### All Platforms * Optimized ending sequence for shared sessions on both iOS and Android, reducing the total time to five seconds. * Ensured the appearance of an orange border around the device for enhanced visibility. * Rectified an issue causing application termination during privilege acquisition. * Fixed the issue of webview masking not being removed in the agent view. * Incorporated the "set terms" method for both iOS and Android platforms. * Made "visitor.init" asynchronous in Android to improve application responsiveness. * Resolved non-functional session IDs for colors in Android. ## 6.3 Website & Cobrowse - April 27, 2023 ### Bug Fixes and Optimizations * Web Screen Share Bookmarks and Allowed Sites have been moved from the main Settings page to the Cobrowse Settings page. * The agent is now able to interact with all document viewer controls while sharing a PDF document with the visitor. * Visitors are now able to use the Firefox browser when using Screen Share within Cobrowse. * Decreased the time it takes Cobrowse to detect a network drop for the agent. * Gesture labels are now visible for agents and additional guests in a Cobrowse session. * Video optimizations. * Fixed bug where gestures on elements in iframes were not displaying properly. * Additional bug fixes and performance improvements. ### Script Package Patch 6.3.1 Released on 5/23/2023 * Various bug fixes. ### Script Package Patch 6.3.2 Released on 6/01/2023 * Increased Cobrowse session speeds. * Various bug fixes. ## 5.7.12 Mobile SDK - April 14, 2023 ### All Platforms * Visitor IDs now support up to 100 characters. ## 5.7.11 Mobile SDK - March 31, 2023 ### Android SDK * Fixed crash in screen capture. ## 6.2 Website - March 30, 2023 ### Bug Fixes and Optimizations * Added a method to the Browser Agent API to identify if an agent is in a session. * Various bug and security fixes. ## 5.7.10 Mobile SDK - March 15, 2023 ### iOS SDK * Fixed a rare crash during initialization on slow networks. ### Android SDK * Fixed an issue related to the message displayed to an agent when the session is paused. ## 6.1 Mobile SDK - March 10, 2023 ### Two-Way Video + Screen Share The SDK now allows two-way video to be utilized during screen-sharing sessions. With one click, agents can connect face-to-face with your customers and naturally collaborate in your app. Or, start with screen share in the app and introduce video as needed in the conversation. How the experience works can be configured inside your app or managed in your group's settings. ### Mobile Session UI Redesign The Glance SDK UI has a more intuitive look and feel that supports two-way video communication. Video and controls are grouped into a movable widget that glides over your app experience. * The video widget will return to one of four corners when moved by your finger or collapse off-screen into a tab when pushed off-screen. * The video widget can expand to "Large Mode" for a focused face-to-face conversation. * During large mode, the mobile user can show their rear camera for sharing documents or other things in their physical space. * Alerts and prompts can be customized with your own language, styles, and links to terms & conditions to keep the experience consistent with your brand. * Session UI supports screen readers, allowing visually impaired customers to get auditory feedback on session status and swipe through session controls on top of the app. ### Agent Session Controls Agents now have more control over the session experience to better connect with customers. * Agents can move the customer's video widget around the screen, choosing a corner to leave it in or taking it off-screen in a tab to focus on the app content. * Agents can also dynamically change the experience to large and small video modes, allowing them to drive face-to-face connections before taking action in the app. * On occasions when customers inadvertently share their video, the agent can turn their camera off. Only customers can turn the video back on when they are ready. * **Note:** Session controls are for mobile phone sessions only. Desktops and tablets are not supported.* ### Optimizations * Improved stability when connecting to Presence on iOS. * Increased character limit for visitor IDs with Presence to 100. * Fixed an issue on iOS that prevented agents from offering sessions via Presence if the visitor had already completed a session. ### Retirements & Support * The Glance SDK integration with VoIP is being retired. We recommend using the device's onboard voice capabilities instead. * The standalone 2-Way Video SDK is being retired. For 2-way video capabilities, use the standard Glance 6.1 SDK. * The 6.1 SDK does not currently support custom UI. * The previous 5.x SDK generation remains supported for the time being. ## 6.1 Website & Cobrowse - March 3, 2023 ### Gesture Identification Cobrowse sessions that involve multiple agents and/or guests now have gestures with unique identifiers to differentiate which person is gesturing. Each gesture is identified with a specific color and the name of the agent or guest. Please see [this page](/glance-cobrowse/features/gesturing/) for more information regarding gesturing. ### Bug Fixes and Optimizations * Clients can now request a view-only security setting for members within a group. Members with this setting activated will be able to view security settings but not update them. * Corrected issue where the agent's mouse and gestures were positioned incorrectly on the visitor's side. * Various bug fixes to optimize Cobrowse. ## 3.18 Salesforce Package - March 1, 2023 ### Fixes and Improvements * The Glance for Salesforce package has been updated with a fix where the Glance Package was interfering when users were tabbing between interface elements. ## 6.0.1 Website - February 2, 2023 ### Bug Fixes and Optimizations * Improved security posture * Cobrowse stability improvements ## 5.8.6 CServer - January 25, 2023 ### Optimizations * Optimized CServer Performance to reduce: * Lag times on outbound HTTP requests. * DBCMD queue response times. ================================================================= FILE: /release-notes/Archive/2024-archive ================================================================= ## 6.9.2 Android SDK - December 23, 2024 ### Bug Fixes and Optimizations * Resolved an issue where the mouse click gesture was not at the center of an agent's mouse pointer. * Added documentation for the Session Pause Methods to the Readme. * Resolved an issue where having `isMinifyEnabled` and `isShrinkResources` enabled in gradle would cause the application to crash. * Resolved an issue where masking would briefly fail during a device rotation. * Updated documentation to include how to enable/disable media projection. ## 2.1.1 General Reporting - December 19, 2024 ### Fixes and Improvements * Added a new "Sessions Ended" endpoint to the Customer Records Retriever, which returns all glance sessions in addition to completed sessions. * Session status for the completed sessions endpoint will now display as "completed" instead of "ended". ## 6.37 Cobrowse and Website - December 12, 2024 ### Website * Resolved an issue with SAML where new users were created if an existing user's Glance address did not match the Glance address specified by autoprovisioning rules. * Resolved an issue where a server that is missing a server name in the `gserver_status` table causes all sessions to fail to start. * Resolved the exception thrown when the `inSession()` method in Mobile Camera Share is called. * Removed `script-src 'unsafe-inline'` from `/AccountSettings.aspx`. * Resolved a security vulnerability where the page to request a password reset email enabled users to distinguish between successful and unsuccessful attempts. ### Script Package * Added a `call_id` field to the data section of each event that has a touchpoint of video. * Video joined and exited metrics are now sent when a participant turns their camera on and off. ## 6.9.1 iOS SDK - November 29, 2024 ### Bug Fixes and Optimizations * Updated Webview masking documentation. * Added `pausePresence(Boolean isPaused)` method that toggles the connection to the Presence servers. * Updated documentation to include how to respond to messages from the agent viewer window. * Added an option to customize the `Localizable.strings` file directly from application level. * Added guardrails to prevent app crashes under certain circumstances due to presence websocket reconnection attempts. * Fixed an issue where the guests array included in the payload for the `onGuestCountChange` event would fail when an agent's Partner User ID included only numbers. * The guests array included in the payload for the `onGuestCountChange` event no longer includes the visitor. * Fixed a crash that could occur during app termination due to a race condition. * Removed `GlanceCore` from `GlanceFramework` to better support customers integrating with CocoaPods. ## 7.0 Glance Windows Client - November 26, 2024 ### Improvements This client contains the following improvements: * Upgraded to .NET 8. * Resolved an issue where username/password and loginkey authentication silently expired, causing unexpected states. ## 6.36 Cobrowse and Website - November 26, 2024 ### Website * Restored `EndCall.asp` to the Website. * Resolved an issue where filtering was not functional in the Bulk Update methods in Account Management. ### Script Package * Added logging from Cobrowse Script to CServer for visitor connecting to CAM. * Added logging from Cobrowse Script to CServer for CAM connection failing. * Resolved an issue where resizing a shared window in agent-side Web Screen Share led to a distorted view of the shared window on the visitor-side. * Resolved an issue where `GetDisplayMedia` prompt would reappear for a visitor who previously canceled the prompt. * If the Glance service attempts to retrieve a resource (such as an image, stylesheet or font) in order to render the view of the customer page from the customer's website, and the customer's website returns zero content length, or does not specify any content-length header, the response is now immediately treated as an error. Previously, in some cases, the session would have waited 5 seconds before determining that the resource was not accessible. ### Cobrowse Asset Management (CAM) * If the max size is exceeded for a resource in CAM service, the visitor-server logs an error, but does not publish the resource to NATS. It now replies with a 413 error (Payload too large). * Resolved issues relating to visitors navigating to a new page while the Glance service is still requesting constructed stylesheets from the previous page. Temporary errors caused by this scenario are no longer cached, so that subsequent attempts to request the same stylesheets will succeed. ### Video Server * Video Server now reports visitor video call ID to Session Metrics script. ## 6.35 Cobrowse and Website - November 14, 2024 ### Website * Stability Improvements ### Script Package * Resolved an issue where `visitorConnected` message incorrectly sent "True" when the visitor minimized the Cobrowse window. ## 6.34 Cobrowse and Website - October 31, 2024 ### Website * Resolved an issue where the `inSession` event always returned false for Mobile Camera Share sessions. ### Script Package * Stability Improvements ## 6.9.1 Android SDK - October 23, 2024 ### Bug Fixes and Optimizations * Added `pausePresence(Boolean isPaused)` method that toggles the connection to the Presence servers. * Resolved an issue where the Terms and Conditions modal would disappear when rotating a device. * Resolved an issue where the agent widget would disappear when rotating a device to landscape mode. * Resolved an issue where a session would end when clicking on the "No, I don't want to end the session" button. * SDK now supports 16KB page sizes. * Added Jetpack Compose masking. ## 1.6.0 Universal Connector - October 22, 2024 ### Fixes and Improvements * Customers who use only key-entry cobrowse sessions will now see the key entry field open by default. ## 6.33 Cobrowse and Website - October 17, 2024 ### Website * Mobile Camera Share messages to the UK can now be sent with an alphanumeric ID instead of a phone number. ### Script Package * Implemented a default set of visitor prompts in the Spanish-US language file. ## 6.32 Cobrowse and Website - October 3, 2024 ### Website * Resolved an issue where multiple Cobrowse functions were broken within a specific configuration of Document Share and Web Screen Share. ### Script Package * Extended timeout for reconnects on Cobrowse viewer side to two minutes. ### Cobrowse Asset Management (CAM) * Resolved an issue where images were not showing up on the visitor side for some customers. ## 6.8.7.1 iOS SDK - September 24, 2024 ### Bug Fixes and Optimizations * Web Socket no longer attempts to connect if there is not a Presence server set. * Removed `GlanceCore` and the frameworks file from `GlanceFramework`. * Resolved an issue where the WebSocket class in the GlanceSDK was causing the application to crash under certain, infrequent circumstances. ## 6.31 Cobrowse and Website - September 19, 2024 ### Website * Resolved an issue where the agent buttons didn't work if the user-agent string setting is used with multiple Document Share links configured. ### Script Package * Resolved an issue where an incorrect path to Session Metrics script caused Cobrowse to fail when the script tag has a direct path to Cloudfront. ## 6.30 Cobrowse and Website - September 10, 2024 ### Website * Stability Improvements. ### Script Package * Stability Improvements. ## 6.9.0 Mobile SDK - September 5, 2024 ### iOS * Created the `getCallID` API that returns the Call ID (unique identifier) of an active session. * Added the Session Key to the `EventSessionEnded` payload. * Resolved an issue where the alert view was displaying transparent in ScreenShare Agent View. * Fixed crash during webview masking initialization. * Added `Glance.setDrawViewHierarchy` as an optional render method to enhance alert views and support Flutter. ### Android * Created the `getCallID` API that returns the Call ID (unique identifier) of an active session. * Added the Session Key to the `EventSessionEnded` payload. * Removed the JNI folder from the Android DefaultUI public repository. * Added the `androidx.security:security-crypto:1.1.0-alpha03` dependency package to the CoreSDK. * Replaced deprecated Java methods from the Default UI. * Updated the Default UI package to be available in Kotlin. ## 1.5.3 Universal Connector - September 5, 2024 ### Fixes and Improvements * Customers can now view [XID and Origin data](https://help.glance.cx/integrations/webservices/crr/#session-data-description) from universal connector sessions in the Customer Records Retriever. This allows you to understand which agent desktop sessions initiated from, and the unique external identifier for the session. * Bug fixes and improvements. ## 6.29 Cobrowse and Website - August 22, 2024 ### Website * Cobrowse now supports Web Screen Share Bookmarks configured for an agent in a role. * Cobrowse displays Document Share Links based on the agent's role and organizes them by folders. ### Script Package * Implemented a change to CAM service where if an agent is not authenticated, the visitor should only upload the resource if the content type is a font type. * Resolved an issue where Web Based Screen Share View sessions stayed in an active state after the parent sessions end. ## 6.28 Website - August 08, 2024 ### Website * Stability Improvements. ### Cobrowse Asset Management * Added support for non-standard font files to be proxied through CAM service. ## 6.27 Cobrowse and Website - July 25, 2024 ### Website * Expanded enforcement of Content Security Policy (CSP) on glance.net pages (e.g., Account Management, Agent Join, etc.) for groups that had not previously opted in. * Implemented an internal step to verify a password reset email is sent before setting an hour time limit to send another one. * Modified the agent/start page to open Glance Client directly without needing the extension. * Resolved issue where video resources were not displayed in UCAM. ### Script Package * Resolved issue where UCAM failed on pages with no path for resources with relative URLs. * Removed picture-in-picture controls from Chrome and Edge. ### Help Site The Help Site has undergone a design overhaul and is migrating to `help.glance.cx`. To ensure a seamless transition, visitors to `help.glance.net` will be automatically redirected to the new URL, `help.glance.cx`. The revamped Help Site features a new design layout, customizable theme options, and enhanced search functionality. While the overall organization remains consistent with the previous site, please note that saved hyperlinks may need to be updated to reflect the new URL. ## 6.26 Cobrowse and Website - June 27, 2024 ### Website * Document Share button is now disabled when a visitor is on a masked page. ### Script Package * Introduced role-based masking for Elements and Pages. * Stability Improvements. ## 6.8.9 iOS SDK - July 25, 2024 ### Bug Fixes and Optimizations * Added Support localization for Glance Core and DefaultUI. * Resolved an issue where Presence-initiated sessions were beginning before the customer accepted the `showTerms` prompt on Mobile when using Genesys and Universal adapters. * Resolved an issue during Presence sessions where the "Waiting for agent to join" message was not displaying when the visitor would connect before the agent. * Resolved a memory leak in WebView GlanceSDK. ## 6.8.9 Android SDK - July 24, 2024 ### Bug Fixes and Optimizations * Resolved an issue where the aspect ratio of visitor video is incorrect in portrait and landscape. * Resolved an issue where agent's view of visitor video is elongated on certain devices. * Added the `setUseAndroidFlagSecureMasking(Boolean maskSecureDisplay)` method to the SDK for the customer to control which secure screens should be masked. * Updated APIs to support ReactNative Bridge and native implementation. * Resolved an issue where minimizing, rotating, or maximizing the widget would cause the application to crash. ## 6.8.8 Android SDK - June 25, 2024 ### Bug Fixes and Optimizations * Resolved an issue where rotating the device in fullscreen mode would result in the visitor being asked permission to turn on screen recording. * Resolved an issue where the nullpointer exception was causing the SDK to crash. * Modified WebviewMasking to update visibility of the masks. ## 6.8.8 iOS SDK - June 18, 2024 ### Bug Fixes and Optimizations * Resolved an issue where the **Join** button in Salesforce could be clicked again while a session was in progress causing another session to start. * Masking now checks the view hierarchy before applying the mask based on the view's visibility. ## 6.25 Cobrowse and Website - June 11, 2024 ### Website * Users are no longer able to upload files containing a `
{% callout type="warning" title="Note" %} By providing a telephone number and submitting this form you are consenting to be contacted by SMS text message. Message & data rates may apply. You can reply STOP to opt-out of further messaging. {% /callout %} ================================================================= FILE: /users/account-management ================================================================= As a Glance administrator, the Account Management section is your central hub for configuring your environments, managing your team's access, and analyzing session data. Choose a topic below to get started: ## Getting Started & Access * **[Logging in to Your Glance Account](/users/account-management/log_in/)**: Learn how to access your Glance administrator dashboard. * **[Glance Account Values](/users/account-management/account_values/)**: Locate your Group ID, API Keys, and LoginKeys. * **[System Requirements](/users/account-management/system_requirements/)**: Review supported browsers, operating systems, and video capabilities. * **[Bandwidth Requirements](/users/account-management/bandwidth_requirements/)**: Understand the network data requirements for running Glance tools. ## User & Group Settings * **[Manage Users](/users/account-management/manage_users/)**: Add, edit, delete, and bulk-update users and roles. * **[Manage Settings](/users/account-management/manage_settings/)**: Configure group-level privileges, role-level settings, and parent/child group inheritance. * **[Multiple Groups](/users/account-management/multiple_groups/)**: Understand how to structure and manage staging vs. production environments or distinct business units. * **[Managing Basic Screen Share Users](/users/account-management/screenshare/)**: A dedicated guide for standard Screen Share account dashboards. ## Auditing & Reporting * **[Reporting](/users/account-management/reporting/)**: Run and export team activity reports, session metrics, and session problem logs. * **[Access Logs](/users/account-management/access_logs/)**: Audit all administrative activity and backend setting changes across your group. ## Support & Extras * **[Screen Share Q & A](/users/account-management/screenshare_qa/)**: Get answers to common questions about subscriptions, login troubleshooting, and installations. * **[Glance Localization](/users/account-management/localization/)**: View supported out-of-the-box languages and learn how to customize translations. ================================================================= FILE: /users/account-management/localization ================================================================= # Glance Localization Glance allows the ability to translate our product offerings in different local languages. Localization is only available for the product offerings and versions listed in this table. If you are interested in localization, or a translation not listed below, [Contact Glance](../contact/). | Product | Out-of-the-box Languages | Customizable / Additional Languages* | How to Localize | | :--- | :--- | :--- | :--- | | **Cobrowse Visitor-side only** | **Version 5.0+:** English, French, French Canadian, German, Italian, Portuguese (Brazil), Spanish (ES), Spanish (MX)

**Version 6.33+:** Spanish (US)

**Version 6.41+:** Japanese | Yes | Utilize the [Cobrowse Widget Customization User Guide](/users/glance-cobrowse/getting-started/widget-customization/#languages) | | **Universal Connector** | English, French, French Canadian, German, Italian, Portuguese (Brazil), Spanish (MX) | No | [Contact Glance](../contact/) | | **Mobile SDK** | *None* | Yes | To update the language, you need to override values in the `Localizable.strings` file of your app. Glance does not offer default translations for the Mobile SDK, but you can translate our strings into local languages.

The list of strings for the Glance Mobile SDK default UI are available [for iOS and Android here](/developer/sdk/mobile_sdk/). | | **Glance Guest Client**
(version 4.17+) | English, Italian, Spanish (MX), Portuguese (Brazil), French, French Canadian, German | No | The Glance Guest client will use the default language of the Guest's Operating System. | | **Salesforce Integration**
(version 3.5+) | English, Italian, Spanish (MX), Portuguese (Brazil), French, French Canadian, German | No | [Contact Glance](../contact/) | *\* **Customizable / Additional Languages:** Glance supports the ability to customize the default languages. You can also provide your own custom translations for languages outside of the default.* ================================================================= FILE: /users/account-management/log_in ================================================================= To log in, follow these steps: 1. Go to [www.glance.cx](https://www.glance.cx).
Glance homepage login button 2. Click **Log In**. Or use the following link: [https://www.glance.net/login](https://www.glance.net/login) 3. Enter your administrative Glance login credentials (**Glance Address** and **Password**).
Glance Address and Password prompt
Info
Your Glance Address is not your email address.
Tip
If you're having trouble logging in, navigate to this link to be logged out and clear your cookies, then try logging in again.
================================================================= FILE: /users/account-management/manage_settings ================================================================= ## Managing Group Settings Through the **Settings** tab, you can manage user privileges and settings. These settings apply to all subscribers in your group. If you want to change settings for a subset of users, Glance recommends using Roles. These settings determine which features and functionality users can access. Glance Settings Tab ## Managing Role Settings You can also customize behavior for users at the role level from the **Portal** tab > **Role Settings**. ## Understanding Group & Role Settings * To enable a permission at the Role level, it must first be enabled at the Group level. In other words, permissions enabled at the Role level are always a subset of the permissions enabled at the Group level. * If a permission is changed from ON to OFF at the Group level, it will automatically be turned off for all roles, including roles where it had previously been ON. * If this permission is then changed back to ON at a later date on the Group level, it will automatically restore the state of the permission at the Role level to what it was the last time it was ON at the group level. * If a new setting is introduced that defaults to OFF at the Group level, the first time it is turned ON at the Group level it will remain OFF by default for each role. You must turn the feature ON for each role. * Any users not assigned to a role will inherit the permissions enabled at the group level. ### Inherit Settings from a Parent Group If you use child groups in your Glance account, the child group can inherit the group settings of the parent group, so you have a consistent experience across users. To enable inheritance in your account, [Contact Glance Support](../contact/). * The Admin of the parent group can select the child group to inherit settings from the parent group. * Only child groups of the parent group inherit settings from the parent group. Any sub-groups beyond the child group do not inherit any settings. * When inheritance settings are enabled for a child group, the child group's settings cannot be modified at the child-level. * If the inheritance capability is disabled for this child group, the child group's settings will be as they were prior to enabling inheritance. * All settings are included in inheritance, except: * API key and SSO * Users and roles To inherit settings from a parent group: 1. From **Account Management** > **Portal** tab, select **Inheritance**. 2. Select the groups you want to inherit the parent settings > **Save**. 3. Now, when a user is logged in to the **child** group, they will see this message on the **SETTINGS** tab, and are not able to modify their settings.
Child group inheritance message 4. When a user is logged in to the **parent** group, they will see this message on the **SETTINGS** tab indicating that changing these settings impacts child groups.
Parent group inheritance message ================================================================= FILE: /users/account-management/manage_users ================================================================= Through the Glance Portal tab, you can add and edit users, create roles, and export user lists. For Cobrowse, you can also use Glance's APIs found under Customizing for partner user registration to subscribe roles, show, update, delete, and add users. ## Add Users to Your Account To add users to your account: 1. Under **Account Management**, select the **Portal** tab.
Glance Portal Tab 2. Select **Add subscribers to this account**.
Add subscribers option 3. If using roles, select the role which is applicable.
Select Role dropdown There are two ways you can add users: * **Bulk Upload:** If you are adding more than five users, we recommend a bulk upload via a CSV file. You may only select one role per bulk upload. * Create a new bulk upload excel file using the following template and upload it to Glance. | FirstName | LastName | Email | Phone | GlanceAddress | Password | PartnerUID | | :--- | :--- | :--- | :--- | :--- | :--- | :--- | | | | | | | | |
Info
The file must be saved as a CSV before uploading to Glance.
* **Manual:** Use this option when you are adding one to three users.
Manual user addition fields ### Glance Address Naming Conventions Customers can choose any of the following standard Glance naming conventions, or create their own. For John Appleseed ``, the following would apply: 1. `ja..glance.net` 2. `john.appleseed..glance.net` 3. `appleseedj..glance.net` 4. `appleseed..glance.net` 5. `1.glance.net`, `2.glance.net`, `3.glance.net` ## Create Roles Create roles so you can: * Provide specific team members special access to Glance feature(s). First, create a role for the permission, and then provision users into this role. * Run session activity reports on teams. You can create a role for a team and provision users into this role. Follow these steps to create roles: 1. Verify the role exists. If it doesn't already exist, proceed to Step 2.
New Role button 2. To create a new role, select **New**. 3. Fill out the following: * **Role name**: Assign a name for the role. * **Description**: Give a brief description which will be helpful for your team when reviewing the role. * **Features / Settings**: Assign the capabilities and features for this role. The features/settings are pulled from the Settings tab found under the **User Privileges** and **Settings** section. 4. Save the role. 5. Click **OK**. 6. If you have no other roles to create, click **Apply**.
Warning
If you do not select Apply, the role will not be saved.
Apply role settings
Info
The trash can icon beside a role name means there are no users assigned to that role and it can be deleted. The user icon indicates that there are currently users in that role and it can't be deleted.
## Password Requirements The following password requirement settings apply to the passwords used to log into Glance from the Glance Client or website. They are only enforced when users create new passwords or change existing passwords. They do not apply to: * Session Keys * Login Keys * API Keys To set password requirements: 1. Under **Account Management**, select the **Settings** tab. 2. For Password Requirement choose one of the following: * 6-character minimum length (not secure) * 7-character minimum, with uppercase, lowercase, and digits * 8-character minimum * 8-character minimum, with uppercase, lowercase, and digit characters * 8-character minimum, with one or more non-alphanumeric characters * 9-character minimum * 9-character minimum, with uppercase, lowercase, and digit characters * 9-character minimum, with one or more non-alphanumeric characters 3. For **When users change passwords**, choose one of the following: * Use the present system default: allow reusing the current password * Require a new password * Allow reusing the current password If you are using a single sign-on application to access Glance: * To prevent your users from creating passwords so they can only authenticate via single sign-on, select **may not create their own passwords**. * To allow your users to create passwords using the password reset page to authenticate into Glance from both a username and password or single sign-on, select **may create their own passwords**.
Info
This setting does not apply to subscribers who already have a password assigned.
## Edit User Details Within Your Account Follow the steps below to edit contact details, update Glance usernames, passwords, PUIDs, and roles. 1. Go to the **Portal** tab. 2. Select your company name. 3. Choose **Edit users**.
Edit users option 4. Find the user you wish to modify and click the green **Edit Users** icon.
Edit user icon 5. The **Edit a Subscriber** window opens, where you can make changes to the user's information.
Edit a Subscriber window 6. After you make a change, click **Update User** to save.
Tip
To prevent agents from being able to change their own Glance address, update the setting found within the Settings tab.
## Delete a Single User Within Your Account 1. Go to the **Portal** tab. 2. Select your company name. 3. Choose **Edit users**. 4. Find the user you wish to delete, and click the green **Edit Users** icon. 5. From the **Edit a Subscriber** window, click **Delete User Permanently**.
Delete User Permanently button ## Edit a User Role Within Your Account Follow these steps if you want to update a single user's assigned role: 1. Go to the **Portal** tab. 2. Select your company name. 3. Choose **Edit users**. 4. Locate the user you want to edit. 5. Click on the green **Edit Users** icon. 6. Select the new role and click **Update User**.
Update User role dropdown ## Managing Locked Out Users Glance provides the ability for administrators to unlock users if they are locked out due to too many failed password attempts. 1. Go to the **Portal Tab** > **Edit Users**. 2. From the Users table, the Locked column will indicate if there are any locked out users. You can also sort this column by locked out users. 3. To unlock a user, click the **Unlock** link > **OK**.
Unlock user link 4. The user is able to log in again. ## Edit Users in Bulk Within Your Account (Customer View) The following steps walk you through editing (Role, Passwords, Suspend, Delete, and Reinstate) for multiple users. 1. Go to the **Portal** tab. 2. Select **Bulk update users**.
Bulk update users option 3. Select a method: * Suspend * Reinstate * Change subscriber's role * Password * PUID * Delete ## Export User Lists To export user lists, follow these steps: 1. Select **Export users**.
Export users option 2. Select which user list you want to export: * All subscribers * Active subscribers * Suspended subscribers 3. Click **Export**. The list will be saved in your download folder. ================================================================= FILE: /users/account-management/multiple_groups ================================================================= Additional groups may be requested to manage differences between staging and production or to represent multiple business units. It is important to consider the implications of splitting into multiple groups before starting the implementation. ## When New Groups are Required * You need to leverage customized branding for distinct business units. * You need to have different administrators managing different groups of users and are not comfortable with a shared administrator pool. * You need to manage staging and production differently from what the Glance Admin portal allows. ## Staging vs. Production Groups Glance allows for each group (denoted by a unique Group ID - e.g., 12345) to have two independent sets of settings, which are called "staging" and "production". Customers typically have a test site tagged with `site="staging"` and a production site tagged with `site="production"`. This allows you to configure and test new versions of Cobrowse on a staging site before pushing the change to the production site. However, not all settings within a group have staging versus production differentiation. Alternatively, you can use a separate group (with a separate Group ID) for staging versus production. ## Key Considerations If you have any of the above needs or require an additional group or groups for another reason, review the following considerations. | Category | Single Group | Multiple Groups | | :--- | :--- | :--- | | **User/Admin Accounts** |
  • Only one account per person is needed.
  • User permissions are not differentiated between staging and production.
|
  • Each group needs a separate account. (Users must maintain two sets of Glance IDs and passwords.)
  • Or, each person's account must be configured so that it is associated with both groups:
    • Must be done by a Glance employee.
    • Permissions can be different between groups.
    • Can sometimes lead to confusion with permissions conflict.
| | **Settings** |
  • Some settings can be differentiated between staging and production, while others apply to the entire group.
|
  • All settings are differentiated between groups with no overlap.
| | **Pushing from Staging to Production** |
  • Generally easier, using built-in functionality.
|
  • Settings must be manually copied over from one group to the other.
| | **Salesforce** |
  • Salesforce production and sandbox organizations are paired with the same Glance group.
  • Sessions in the Glance Admin activity tab will be synced with one or the other SF org, but it won't be obvious based on the activity tab export which org it is.
  • Each Salesforce org receives the full list of data, regardless of what org the session was launched from. It is then matched to the sessions that were launched from within the respective org, but some reports may reflect sessions that weren't launched out of that particular org.
|
  • Production and Sandbox organizations need to be paired with their respective Glance groups.
  • There should be a 1:1 match between what's in the Activity tab for a given group and the session details that are synced with the given SF org.
  • You cannot pair more than one Glance group with a single Salesforce org with SSO enabled.
| | **SSO Authentication (non-SF)** |
  • Shared configuration for authentication across users.
|
  • SSO mechanism would need to accommodate multiple Group IDs/API keys and each authentication attempt would need to point to a unique group.
| | **General/Overall Themes** |
  • Simpler
  • Less flexibility
  • Easier to push changes to production from staging
|
  • More complicated
  • More flexibility
  • Less risk of changes in staging inadvertently impacting production
| ================================================================= FILE: /users/account-management/reporting ================================================================= You can run a report for your team and export the details for all users, a single user, specific roles, or least active users. To run a team activity report, follow these steps: 1. Go to the **Activity** tab.
Activity Tab 2. When you click on the **Activity** tab, it will automatically provide you a team session report for today.
Activity Today Report 3. You can change the date range of the session report to: * Today * Yesterday * Last 7 days * Current month report * Last month's report * Two months ago * Three months ago * Four months ago * Custom date range
Date Range Selection Here is an example of selecting a **Custom Date Range**:
Custom Date Range 4. Select which report option you would like to View or Export: * **Sessions by Type**: You can export the report via type or all. Click on the Total number to see a breakdown of each session. You can see the duration, how many participants, if video or screenshare was used, etc.
Sessions by Type * **Sessions by Subscriber Role**: You can export the report via role or summary of all roles.
Sessions by Subscriber Role * **Sessions by Subscriber**: You can export the report by single subscriber, all, or summary.
Sessions by Subscriber * **Least Active Subscribers** (No sessions or low 5%): You can export all or summary.
Least Active Subscribers ## Report Session Problems (For Cobrowse Only) This feature is enabled for Cobrowse only. Agents may report any oddities while cobrowsing. Some examples include: page loaded slowly, screen froze, and "I didn't see the images the customer was seeing." By reporting session problems, Glance can help troubleshoot with you to improve your agent/customer experience. Events are also added through the AddCallReport API when an agent navigates to an unapproved website during a session. To use Session Problem Reports: 1. Under the **Activity** tab, select **Session Problem Reports**.
Session Problem Reports
Info
If no problems have been reported, the Session Problem Reports section will not be visible.
2. Once you have expanded the **Session Problem Reports** section, the report will automatically display the last 30 days. It is broken down into two sections: * **Summary by Issue**: To view the summary of an issue, click on the Number to the left of the issue. Once clicked, it will return a summary on this single issue. * **Summary by Page**: To view the summary of a specific page, click on the Number to the left of the page issue. Once clicked, it will return a summary of the issues on that particular page. The summary will look like this:
Session Problem Report Summary ## Export Reports To get the most out of the data, Glance recommends exporting the details into a CSV (comma-separated values) file. You can view and analyze CSV files with Excel or another spreadsheet program. After you have run the report, click **Export Detail** or **Export The Summary**.
Export Detail or Summary ================================================================= FILE: /users/account-management/screenshare ================================================================= To log in, follow these steps: 1. Go to [www.glance.cx](https://www.glance.cx). 2. Click **Log In**. Or use the following link: [https://www.glance.net/Login](https://www.glance.net/Login)
Glance homepage login button 3. Enter your admin Glance login credentials (**Glance Address** and **Password**). ## Account Dashboard Overview Once you are logged in to your account, you can access the following tabs: Manage Your Account Tabs * **Summary:** An overview of your profile, subscriptions and recent session activities for your Glance Address. * **Profile:** View and edit your contact information and change your password. * **Activity:** View your Glance session activities including: * Group Activity Sessions * Sessions by Subscriber Role * Session by Subscriber * Least Active Subscribers * **Audio:** See your audio conferencing account information. * **Subscriptions:** View your current subscriptions and shop for more capacity. * **Billing:** View and update your billing information. * **Users:** Add or delete users, view detailed reports of their usage, and view current subscriptions. * **Settings:** Adjust privileges for users in your group. ================================================================= FILE: /users/account-management/screenshare_qa ================================================================= A list of commonly-asked questions about Glance Screen Share. ## How do I log in to the Glance Screen Share Client? When you first installed the Screen Share Client, Glance prompted you to log in using your Glance Address and Password. If you didn't do this during the installation process, or if you need to make changes to your login details, follow these steps: 1. Click on the **G** icon located on the system tray next to your computer's clock. If you are using a Mac, it will display on the menu bar. * **Windows:**
Windows System Tray Icon * **Mac:**
Mac Menu Bar Icon 2. Enter your **Glance Address** and **Password**.
Glance Client Login Prompt 3. Click **Log In**. If you completed these steps but still get a login-related error, make sure your Glance Address and Password are correct by logging in to your online account from the Glance website. If you CAN log in online, but you are still having trouble logging onto the client with the correct credentials, try closing and relaunching Glance, or restart your computer. **To relaunch Glance in Windows:** 1. Click the **G** icon located in your system tray next to your computer's clock. 2. Click the **Gear Icon** > **Advanced**. 3. Click the **Advanced** tab. 4. Click the **Exit Glance** button. 5. Find Glance in your programs from the Start menu or in your File Explorer and relaunch. **To relaunch Glance on a Mac:** 1. Click the **G** icon located on your menu bar of your Mac (near your clock). 2. Click **Quit Glance**. 3. Find Glance from your Spotlight or Applications folder and open it. ## I am having trouble logging in to my account. What should I do? Before you can use the Glance service, you need to have the proper Glance account credentials. Your account credentials include your Glance address and password: * **Your Glance address** serves as your account username. You choose the address. It is often something like `yourname.glance.net`. Remember that when logging in to your account, you must enter your whole address including ".glance.net."
Info
This address is also the unique web address that you give to your guest(s) so they can join Screen Share sessions. It is not your email address.
* **Your Glance password** is a string of characters that you create to authenticate yourself, thereby granting you access to your account. If you cannot log in online, it is because your address or password do not match what Glance has on file. You will need to change your password by clicking the **Forgot your password?** link on the login page of the Glance website. Then follow the **Reset Your Password** prompts provided. If changing your password doesn't solve the problem, double-check your **Glance Address** is accurate. In case that your log in troubles persist, contact Glance Support to verify your address. ## How do I change my Glance address or password? You can change your Glance address or password at any time by following the steps below. To change your Glance address or password: 1. From the Glance home page, scroll to the bottom of the page and click **Log in**. 2. Log in using the account owner's **Glance Address** and **Password**. 3. Click the **Profile** tab. 4. Enter the new **Glance Address** and **Password**. 5. Click the **Update** button. ## How do I reset my password? All Glance passwords are encrypted and cannot be retrieved. Passwords can only be reset by the account owner. You will need the Glance address and email associated with the subscription to reset your Glance password. Once you have that information, follow the steps below. To reset your password: 1. From the Glance Home page, scroll to the bottom of the page, and click **Log in**. 2. Click the **Forgot password?** link. 3. Enter the full **Glance Address** (example: `andy.glance.net`) and account owner's email. They must match exactly. 4. You will be sent an email with a link. Click the link to reset your password. ## Why am I asked for my network password when I try to sign in? Glance needs to connect to the Internet the same way your browser does. Do you have to supply your Network Username and Password just to surf the web? If so, your corporate network probably requires the same password for you to start a Glance session. ## Where can I get a receipt of my Glance payments? You must log in as a billing account owner to view invoices. Once you have logged in to the account for which you want to view the billing information: 1. Select the **Billing** tab. 2. Scroll down to the **Invoice** section. 3. Select the **Receipt** link for the invoice you need. ## Is there a limit to how many machines I may download Glance Screen Share to? You can use your Glance subscription from different computers. 1. Download Glance to your new computer from `https://glance.net/download`. 2. Follow the prompts. When asked, enter your subscription's Glance Address and Password. ## I have a Glance Screen Share account. Do I need to install anything? You will need to install our free software on each computer you use to host sessions. Guests just use their browsers to join. ## How do I get Glance Screen Share on my other computers? You can access your Glance Screen Share subscription from multiple computers. However, please note that each subscription only lets you host one session at a time. To use your Glance subscription on a different computer: 1. Download Glance Screen Share to your new computer. 2. Follow the prompts. 3. When asked, enter your subscription's Glance Address and Password. ## How do I cancel my Glance subscription? We are sorry to hear that you have decided to leave Glance. However, you can cancel your subscription at any time by following the steps below. To cancel your Glance subscription, first, log in using the account owner's Glance Address and password. Then: 1. Choose the **Subscription** tab. 2. Check the box next to the subscription(s) to cancel. The subscription will expire on your next scheduled renewal date. There will be no additional charges.
Warning
Prepaid amounts are non-refundable.
## Do Glance subscriptions renew automatically? Yes, if you have a monthly or yearly subscription it will renew automatically, see [Glance Terms of Service](https://ww2.glance.net/terms/). If you have a yearly subscription, we will remind you about your approaching renewal date. If you have questions regarding your renewal, please contact us. ## Can I subscribe to Glance Screen Share for just a month or two at a time? Yes, you can subscribe to Glance Screen Share for as many or as few months as you need. Contact us and we will set your subscription to automatically expire on the date of your choice. To restart your subscription later on, just log in and click **Reactivate my subscription**. ## A message says my Screen Share trial has expired, but I have a subscription Your computer just needs the subscription's login info, to find this: 1. Single-click the **G** icon. The Glance Screen Share menu is displayed. 2. Enter your subscription's **Glance Address** and **Password**. ================================================================= FILE: /users/account-management/system_requirements ================================================================= All browsers and other software used with Glance must support TLS 1.2. See [this page](/users/security/glance/) for more information. ## Operating Systems * **Windows** * 11+ * **macOS** * Latest and previous version * **iOS** * Cobrowse: 13.0+ * Screen Share SDK: 15.0+ * Mobile Camera Share: 13.0+ * **Android** * Cobrowse: 7.1+ * Screen Share SDK: 8.1+ * Mobile Camera Share: 7.1+ ## Browsers | Agents | Guests/Visitors | | :--- | :--- | | Chrome & Edge | Chrome, Firefox, Edge, & Safari | These are used in the following scenarios: * Cobrowse sessions with customers * Viewing cobrowse sessions * Viewing screen share sessions * Starting screen share sessions * Pushing client software for desktop screen share sessions * Viewing video streams
Info
Glance does not recommend using its web services in Incognito/Private modes. Private browsing modes affect how session storage, cookies, and other browser functionality work, and we do not guarantee all Glance functions will work properly when using them. For testing purposes, Glance recommends clearing cache and cookies after making configuration changes, instead of using private browsing.
### Browser-Based Multi-Participant Video #### Visitors | OS/Device | Browser | Background Effects Supported | | :--- | :--- | :--- | | Windows, version 10 and later | Chrome, Edge, Firefox | Blur | | Mac, latest and previous version | Chrome, Safari, Firefox | Blur | | iPad & iPhone, iOS version 13.4.1 and later | Safari | Blur | | Android, OS version 10 and later | Chrome | Blur | #### Guests | OS/Device | Browser | Background Effects Supported | | :--- | :--- | :--- | | Windows, version 10 and later | Chrome, Edge, Firefox | Blur | | Mac, latest and previous version | Chrome, Safari, Firefox | Blur | | iPad & iPhone, iOS version 13.4.1 and later | Not Supported | Blur | | Android, OS version 10 and later | Chrome | Blur | #### Agents | OS/Device | Browser | Background Effects Supported | | :--- | :--- | :--- | | Windows, version 10 and later | Chrome, Edge | Blur, Image, Color Fill | | Mac, latest and previous version | Chrome | Blur, Image, Color Fill | Multi-participant video requires cobrowse version 5.0 or above. ## Background Effects Background effects during video sessions have the additional requirement of WebGL being enabled in the browser. To check whether your browser supports WebGL, go [here](https://get.webgl.org). ================================================================= FILE: /users/glance-cobrowse/RAP ================================================================= Report a problem is a tool available to agents within a Cobrowse session, provided they have the permission assigned within their Glance user record. Agents can submit an issue during a session and Glance automatically logs the following information: * The web page the problem was reported from * The preceding pages visited * The client browser details * Timestamp * Session Details This information is logged for your administrator to review and act on as needed.
Info
Problem reports are not managed by the Glance Support staff.
## Reporting a Problem During a Cobrowse session, agents can access the Report a Problem Tool from the session information toolbar. 1. Click the **Visitor Information** icon.
Visitor Information icon 2. Click the **Report a Problem** button.
Report a Problem button 3. Click the radio button next to any applicable errors and fill out the additional details if needed.
Report a Problem details modal 4. Click **Send**.
Info
Submissions cannot be made after the session has ended.
## Session Problem Reports Administrators can review sessions that had a problem reported within glance.net. 1. Select the **Activity** tab. 2. Enter the date range next to **Show activity history for**. 3. Scroll down to the **Session Problem Reports** section to view the details of the problems reported.
Session Problem Reports activity view 4. Click **Export Detail** or **Export this Summary** to download this report. ## Best Practices Glance recommends reviewing problem reports daily at go-live, weekly until stable, and monthly while Cobrowse sessions are active. Verify at the end of your implementation that the Report a Problem owners are set up with Glance to receive an email summarizing your reported problems for the desired period. **If there are a couple of reported issues** * Attempt to reproduce the issue using the details provided. * Follow up with the agent who reported the problem if additional details are needed. * Work with your IT team to investigate, reproduce, and resolve issues. * Publish a broadcast to Glance users with updates/training notes. **If there are several reported issues** 1. Select the option to **Export Detail** from the **Activity** tab to download a CSV file of the reported issues. 2. Save the downloaded CSV file and analyze patterns in the issues reported. (e.g., Sort by "URL" and then review whether there are patterns in visitor or agent browser/OS.) 3. Catalog the issues. (e.g., separate training notes from the issues that need to be reproduced/investigated.) 4. Work with your IT team to investigate, reproduce, and resolve issues. 5. Publish a broadcast to Glance users with updates/training notes. ================================================================= FILE: /users/glance-cobrowse/faq ================================================================= ## What is involved in the Glance Cobrowse version upgrade process? For complete information on upgrading, see the [Upgrading](/users/glance-cobrowse/upgrading/) section. ## What are the main features of Glance Cobrowse? Glance Cobrowse features include the following: * All features defined on the [Features](/users/glance-cobrowse/features/) page. * Effortless engagement with no passcode or complex key required for customers. * No proxy means there's nothing for your IT team to install, manage, or maintain. * Guests connect from Windows, Mac, or any browser. * Mobile support for every customer, no matter what device they are on. * No download required. ## What is Glance Cobrowse? Glance Cobrowse is a solution whereby customer service agents can simultaneously view web pages, live, as currently seen by visitors to the website they are supporting within the same browser view. With the visitor's permission, Glance Cobrowse also allows an agent to remotely assist a visitor's webpage, but can never view or control any other open browser or open applications on a customer's computer. Since agents can see and share exactly what customers are trying to accomplish, they can provide a seamless and more satisfying customer experience. This type of online collaboration dramatically reduces frustration and can build lifetime customer loyalty. To learn more about how Glance Cobrowse works, watch the [Glance Cobrowse video](/users/glance-cobrowse/) or visit the [Glance Cobrowse web page](https://www.glance.cx/guided-cx-platform/cobrowse). ## What is the difference between Cobrowse and Screen Share? Cobrowse enables you to simultaneously view company webpages as currently seen by visitors within a shared browser view. There is no download on the agent or guest side. Glance Screen Share is also a [visual engagement](https://www.glance.cx/guided-cx-platform/screen-share) solution that can be used alone or in conjunction with the Glance Visual Engagement Platform. The difference is that in a screen share session you can view a visitor's entire screen, not just specific company webpages. Both Cobrowse and Screen Share instantly clarify online interactions, providing an exceptional customer experience. ## How long does the "Please give the agent this code:" modal display before it's automatically dismissed? The code will stay on the page for a little over two minutes. If no agent has joined by that point, the session will time out and the code will disappear. ## How long does the Cobrowse session code last? It lasts for the duration of the session. Any agent with the code can join the session while it's active, and only one session can exist at any one time with a given code. Once the session ends, the code is put back in the pool to potentially be used again. Session codes can and do get used repeatedly over time. ## If the support representative gets dropped from a session, can they reconnect to the Cobrowse session with the same code, or will they need to prompt the user to generate a new one? If an agent closes their browser, then they have left the session. Once the last agent leaves a session, the session is over. The session code is no longer valid for that session and a new code would need to be generated by the visitor. If there are two (or more) agents in the session, and one of them leaves, the session would persist and the agent who left could re-join it with the same session code. As long as one agent remains in the session, it will continue to be active and other agents can leave and re-join as many times as they want. ## If the user gets dropped from a Cobrowse session, is there any way for them to reconnect to their existing session, or do they need to generate a new one? If the visitor leaves without clicking the end session button (e.g., closes the entire browser tab, shuts off computer abruptly, etc.), the session enters a suspended state and the agent sees a gray screen with a message indicating that the session is suspended. If the visitor comes back to a tagged page within 10 minutes and the agent has not left the session, then the session will resume automatically. If all agents leave the session at any point (even during the suspended state), the session ends. Suspended sessions time out and end after 10 minutes. ## How does Cobrowse integrate with my CRM? For complete information on integrations, see our [Integrations](/developer/integrations/) section. ## Can additional guests join my Cobrowse session? Yes, additional guests are able to participate in a Cobrowse session. Refer to the [Adding a Guest](/users/glance-cobrowse/features/adding_guest/) page. ================================================================= FILE: /users/glance-cobrowse/features/adding_guest ================================================================= Agents can invite additional participants to join an active Cobrowse session by following these steps: 1. Click the **Add Guest** button located in the top-right corner of the Agent Viewer.
Add Guest button 2. The visitor will see a prompt asking them to **Allow the agent to add a guest?**. They must click **Yes** to proceed.
Visitor prompt to allow guest 3. Copy the URL underneath **Share with guest:** and send it to the guest.
Share with guest URL 4. The guest will be prompted to enter their name and then click **Continue**.
Guest join name prompt 5. Once the guest enters their name, a code is displayed.
Guest code displayed 6. The agent enters the code from the guest in the **Enter the code given to them:** field and clicks **Admit**. 7. The guest will be given the option to join the session with their video enabled or disabled by clicking **Continue** or **No thanks**. The guest can choose which camera they want to use from the gear icon. 8. Agents can disable guest or visitor video at any time by clicking the Video Off icon.
Video off icon 9. To remove a guest from the session, click the Eject button.
Eject button ## Hosting Guest Join Page on Your Own Domain Glance allows you to host the Guest Join Page on your own domain for a more branded experience. 1. Contact your Glance representative to request the necessary configuration changes. 2. Once the changes are confirmed, navigate to **Account Management** > **Settings** > **Manage your cobrowse settings** and scroll down to the **Links** section. 3. Update the **Guest Join short URL** with the URL of your hosted page.
Guest join short URL setting 4. Add `allow="camera*"` to the iframe element. See the below example. ```html ================================================================= FILE: /users/glance-cobrowse/features/agent_video ================================================================= Glance offers a variety of video options within the Glance Visual Engagement Platform in which a customer can see an agent. Personalizing the conversation with video enables your agents to build trust, confidence, credibility, and rapport. Glance offers: * [Multi-Participant video for visitors, agents, and guests](#multi-participant-video-features) * [1-Way Agent video](#1-way-agent-video) ## Multi-Participant Video Features **Requires CB 5.1 or higher** * A responsive UI that supports both desktop and mobile screen formats * Multi-participant Video (up to 10 participants) * Ability to add additional guest participants * Accessible UI (conforms to the WCAG 2.1 AA standard) * Standard cobrowse features such as PDF/XLS document viewing, masking, gesturing, and remote control * Salesforce Integration: agents can instantly join video sessions using 1-Click Connect * [Background Effects](#video-background-effects): blur, color fill, or image fill agent video backgrounds Multi-Participant Video Interface More information on multi-participant video is in this section [here](/users/glance-cobrowse/video/). ## 1-Way Agent Video **Requires CB 4.5 or higher** An agent who has connected to a cobrowse session may now start Agent Video. Formerly, Agent Video always required connecting with the Glance desktop client. Glance 1-Way Agent Video includes specific [system requirements](/users/account-management/system_requirements/) for both an agent and visitor (customer, prospect) to employ the video service. ### Agent Video Features Glance Agent Video features include the following: * Leverages onboard or external cameras * Cloud-based * Scalable * No proxies on onsite installs * Can embed in any app * [Background Effects](#video-background-effects): blur, color fill, or image fill agent video backgrounds ### Requirements To use Agent Video, the following are required: * The Glance Group account must be set to use Cobrowse version 4.5 or above, or if self-hosting scripts, then version 4.5 must be used. * The agent must have a subscription plan that allows video. * The setting **Add one way video during screenshare or cobrowse sessions** must be enabled in **Account Management** > **Settings**. * If User Roles are in use, the Role must have **Use Agent Video during sessions** enabled. * The agent must have a webcam. ## Video Background Effects **Requires CB 5.1 or higher** Administrators can choose background effects for agents during the session for Cobrowse and Mobile SDK sessions. ### Enabling Background Effects To enable this feature, select the following settings depending on which experience you want agents to have. See the [System Requirements](/users/account-management/system_requirements/) page for details on what is required to use background effects. Navigate to **Account Management** > **Settings** > **Manage your video settings**. 1. Under **Background Effects**, choose the background effects you want to be enabled: * **Enable Agents to use video background effects**: allows the agent to add background effects. * **Enable visitors and guests to use video background effects**: allows visitors and guests to add background effects. * **Enable button for agents to toggle background effect on/off**: displays a button for the agent to toggle background effect on/off. * **Enable button for visitors to toggle background blur on/off**: displays a button for the visitor to toggle background blur on/off. 2. Under **Agent Background Effect,** choose the agent video background experience: * **Role**: Indicates which role you are updating the background for. | Effect | Description | Options | | :--- | :--- | :--- | | **Blur** | Blurs the agent's background. | None | | **Image** | Choose an image to display behind the agent. | Select a background that has been uploaded to **Manage Background Images**. | | **Fill** | Choose a color to display behind the agent. | Enter the hex value for the color you want to use. | 3. **Manage Background Images:** Upload a file to use for the background replacement. You can upload up to five files at a time. * Glance recommends using an image that is 1280 x 720 pixels * **Minimum Supported File Size:** 640 x 360 * **Maximum Supported File Size:** 1280 x 720 * **Supported File Types:** JPEG, PNG * There is a total file size limit of 1 MB.
Note
If your background features a logo or text, ensure the image is 1280 x 720 pixels, with the logo/text positioned 160 pixels from the side borders and 50 pixels from the top border.
4. **Insufficient Hardware Behavior:** Choose which experience you want if there is insufficient hardware for agents or visitors/guests to use background effects: * Show no video * Show video with no background effect 5. Select the **Video Size at Session Start**. Choose between Off, Small, or Large for the video size to begin your session within the Staging and Production environment. 6. Click **Save.** During the session, if the toggle button is enabled, agents can turn their background effects on or off during the course of the session from the gear icon > **Video Background Effects**.
Toggle Video Background Effects Visitors and guests can toggle their blur off from the blur icon while Cobrowsing on a mobile device or computer.
Mobile Background Blur ### Best Practices for Agent Background Selection * In general, light replacement backgrounds work better because the algorithm attempts to 'feather' the edging which will always look more distinct if there is a big disparity between the colors. * A detailed background (picture of an office/branch) may work better than a solid color. * Make sure the agent has proper lighting and is centered in view as the background detection algorithm is trained for the human to be in the center. * Whenever possible, minimize wide variations in color in the agent's physical background (e.g., columns that are white versus black). ### Usage The **g** icon is available from the left side of the agent control bar. This menu has commands including requesting remote control. Not all accounts are configured to see this menu.
Video Bar Icon If you meet the requirements listed above, the agent control bar contains the video button. To use agent video: 1. Click the video button on the agent control bar. 2. The first time you use video, your browser presents a warning. Click **Allow**. 3. When agent video is active, the video button glows white. ### Integration When connecting to Cobrowse from Salesforce using Glance for Salesforce, if the agent has the **Glance - AgentVideo** Custom Permission then video will automatically start. Other agent software integrations can connect to Cobrowse with a URL like: ```text [https://www.glance.net/agentjoin/AgentView.aspx?sessionkey=](https://www.glance.net/agentjoin/AgentView.aspx?sessionkey=)&agentvideo=1 ================================================================= FILE: /users/glance-cobrowse/features/document_sharing ================================================================= **Requires CB 5.2 or higher** Document sharing is a feature that allows visitors and agents to share documents with each other during the session. Users can optionally save the files shared with them to their local computer. This is in addition to our existing support for [PDF](/users/glance-cobrowse/features/pdf_cobrowse/) and [Excel](/users/glance-cobrowse/features/excel_cobrowse/) Cobrowsing, which provides the ability to cobrowse PDF or Excel documents hosted on the customer website. * Only PDF, XLS, and CSV files are supported. * Document sharing from the agent/visitor desktop is only supported in Cobrowse 5.1 and later. * Document sharing is not supported on unsecure pages. * Only the 'Accessible' Cobrowse widget is supported. * Agents must join the session through a web browser, not the Glance Client.
Note
Glance does not keep a copy of any document shared during a Cobrowse session.
## File Size Limits **Shared by Agent** | Type | Visitor Can Download | Visitor View Only | | :--- | :--- | :--- | | **PDF** | 10MB | 10MB | | **XLS/CSV** | 5MB | 5MB | **Shared by Visitor** | Type | Agent Can Download | Agent View Only | | :--- | :--- | :--- | | **PDF** | 5MB | No limit | | **XLS/CSV** | 5MB | No limit | ### Enabling Document Sharing To enable document sharing, select the following settings in **Account Management**. To share files: * Visitor to share files from their computer * Agent to share files from their computer To download files: * Agent to save files that visitor has shared * Visitor to save files that Agent has shared ## Agent-Initiated Sharing If the agent would like to share a document with the visitor during a session: 1. From the **Document Share** icon in the agent viewer > **Choose a File**.
Document Share icon 2. The agent is prompted to choose a file from their local computer > **Open**. 3. The agent gets the opportunity to preview the file, then clicks **Share**.
Preview and share file 4. The agent is cobrowsing the document with the visitor.
Cobrowsing the document 5. Click the magnifying glass to search for text within the document.
Search text icon 6. The visitor can download the document to their local drive if this function is enabled. 7. Click the **X** in the top-right corner to close the document. ## Visitor-Initiated Sharing If the visitor would like to share a document with the agent during a session: 1. The agent clicks the document share icon > **Send Request**.
Send request to visitor 2. The visitor accepts the request.
Note
The URL used for the Terms and Conditions link is configured by a Glance admin under Settings > Cobrowse Settings > URL Configuration > Document Sharing Terms URL.
Visitor accepts request 3. The visitor is prompted to drag or open a file from their local computer. 4. The visitor gets the opportunity to preview the file, then clicks **Share**.
Visitor previews and shares 5. The agent can cobrowse the document with the visitor.
Agent cobrowsing visitor document 6. Click the magnifying glass to search for text within the document.
Search text icon 7. The agent can download the document to their local drive if this function is enabled. 8. Click the **X** in the top-right corner to close the document. ## Document Sharing Links Glance offers the ability to add links to approved PDF, CSV, and Excel documents that agents can share in a session. Once you add documents in the **Account Management** site, the document is shown in the **Document Sharing** modal in the Agent Viewer. You can upload a total of 20 links that reference PDF/CSV/XLS files. **Before You Begin** Configure the CORS headers on your resources to allow requests from [https://www.glance.net](https://www.glance.net/) during the session. To add document sharing links: 1. From **Account Management** > **Settings** > **Manage your cobrowse settings**, scroll to the **Document Sharing Links for Agents** section.
Document Sharing Links section 2. For **Document Name**, enter the name you want to display for the link in the agent viewer. 3. For **Link**, add a link to the location of the file. 4. For **Role**, select the role that needs to access the document. 5. Select the **Active** checkbox to make the file active for the agent. 6. Select the **Download** checkbox to make the document downloadable. 7. For **Type**, select the type of document: PDF, or Excel/XLS. 8. Click **Save** to add the link. 9. Once you are satisfied with your changes in Staging, click **Publish to Production**. ## Using Document Sharing Links If document sharing has been configured to **Active** in **Account Management**: 1. From the document share icon > Select a file from the list of **Approved documents you can share**.
Approved documents list 2. The agent gets the opportunity to preview the file, then clicks **Share**.
Preview approved document 3. The agent and visitor can cobrowse the document together. 4. If this capability is enabled, the visitor can download the document to their local drive. 5. Click the **X** in the top-right corner to close the document. ## Events For events related to document sharing, see [Cobrowse Visitor Events](/developer/legacy_api/visitor_agent/visitor_event/#document-sharing-events) and [Browser Agent API Events](/developer/sdk/browseragent/reference/#agent-events). ================================================================= FILE: /users/glance-cobrowse/features/excel_cobrowse ================================================================= ## Overview
Note
XLS cobrowsing requires visitor side Cobrowse script 6.11.1 or later.
Glance Cobrowse supports cobrowsing Microsoft Excel files that customers may open while navigating your website. The following section outlines the requirements and implementation steps needed to enable Excel file cobrowsing on your web property. **Requires CB 4.17 or higher** ## Supported File Types * .XLSX * .XLS * .CSV ## Implementation While in a session, you can preview an Excel file using the [Glance Visitor API](/developer/legacy_api/visitor_agent/visitor/). To launch the Excel viewer, call the Glance Visitor UI: ```javascript if(GLANCE.Cobrowse.Visitor.inSession() && GLANCE.Cobrowse.Visitor.viewXLS) { GLANCE.Cobrowse.Visitor.viewXLS({url: "https://accounts.xlsx"}); } ``` If you want to prevent Excel files from being downloaded during the session, you can add the following option to the `viewXLS` API to hide the download button: ```javascript GLANCE.Cobrowse.Visitor.viewXLS({url: "...", options: { hideDownload: true }}); ``` ## Support for Other Data Types **Requires CB 5.1 or higher** If you have Excel files that are passed from the server to the visitor's browser for download as binary strings, and there is no URL of the file to pass to the Glance `viewXLS` API call, you will need to call the following API and utilize either `xlsData` or `ArrayBuffer`: ```javascript GLANCE.Cobrowse.Visitor.viewXLS(params); ``` ### xlsData Where: ```javascript var params = {data: xlsData}; ``` And: ```javascript var xlsData = atob( 'JVBERi0xLjcKCjEgMCBvYmogICUgZW50cnkgcG9pbnQKPDwKICAvVHlwZSAvQ2F0YWxvZwog' + 'IC9QYWdlcyAyIDAgUgo+PgplbmRvYmoKCjIgMCBvYmoKPDwKICAvVHlwZSAvUGFnZXMKICAv' + 'TWVkaWFCb3ggWyAwIDAgMjAwIDIwMCBdCiAgL0NvdW50IDEKICAvS2lkcyBbIDMgMCBSIF0K' + 'Pj4KZW5kb2JqCgozIDAgb2JqCjw8CiAgL1R5cGUgL1BhZ2UKICAvUGFyZW50IDIgMCBSCiAg' + 'L1Jlc291cmNlcyA8PAogICAgL0ZvbnQgPDwKICAgICAgL0YxIDQgMCBSIAogICAgPj4KICA+' + 'PgogIC9Db250ZW50cyA1IDAgUgo+PgplbmRvYmoKCjQgMCBvYmoKPDwKICAvVHlwZSAvRm9u' + 'dAogIC9TdWJ0eXBlIC9UeXBlMQogIC9CYXNlRm9udCAvVGltZXMtUm9tYW4KPj4KZW5kb2Jq' + 'Cgo1IDAgb2JqICAlIHBhZ2UgY29udGVudAo8PAogIC9MZW5ndGggNDQKPj4Kc3RyZWFtCkJU' + 'CjcwIDUwIFRECi9GMSAxMiBUZgooSGVsbG8sIHdvcmxkISkgVGoKRVQKZW5kc3RyZWFtCmVu' + 'ZG9iagoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDEwIDAwMDAwIG4g' + 'CjAwMDAwMDAwNzkgMDAwMDAgbiAKMDAwMDAwMDE3MyAwMDAwMCBuIAowMDAwMDAwMzAxIDAw' + 'MDAwIG4gCjAwMDAwMDAzODAgMDAwMDAgbiAKdHJhaWxlcgo8PAogIC9TaXplIDYKICAvUm9v' + 'dCAxIDAgUgo+PgpzdGFydHhyZWYKNDkyCiUlRU9G'); ``` ### ArrayBuffer Where: ```javascript var params = {data: new ArrayBuffer()}; ``` ## Limitations * The Excel viewer overlay is only available during active Cobrowse sessions and requires that the Cobrowse scripts are fully loaded in the browser. * This feature is not supported for customers who self-host the Cobrowse script. ## Cobrowsing Excel Files When cobrowsing Excel files, the visitor will see the first sheet of the document overlaid directly on their screen. The experience includes the following functionality: * **Sheet Navigation**: Visitors can navigate between sheets using the arrow buttons in the top-left corner of the overlay. * **Agent Interaction**: Agents can scroll through and gesture on the Excel file content to guide the visitor. * **Visual Fidelity**: The HTML representation closely mirrors how the file appears in the Excel application. * **File Size Limitations**: Very large sheets (approximately 12,000 cells or more) may be truncated. The viewer header will display how many rows are visible out of the total. * **Exiting the View**: Visitors can exit the Excel overlay by clicking the X button or refreshing the page. Excel Cobrowse viewer interface
Note
Pressing the back button will not navigate the visitor back to the page from which they launched the viewer. The Excel viewer functions like an overlay on the current page, not a new page.
================================================================= FILE: /users/glance-cobrowse/features/gesturing ================================================================= Once in a session, agents and guests have the ability to gesture over elements on the visitor's browser to guide and indicate to the visitor. The agent and guest can: * **Move and Indicate**: Shows as a colored cursor for the visitor. * **Highlight**: Click and highlight a page element, which will be outlined for ~5 seconds. * **Gesture**: Click-drag a rectangle for indicating an area, which will be outlined for ~5 seconds. ## Details * Gesturing is a feature on by default for Cobrowse, except when the session is in Remote Assist mode. * Gestures for an agent or guest include their name in the top left corner. If multiple agents and/or guests are in a Cobrowse session, they will each have a different colored gesture. * Highlighting is not available while Gesturing. * **Screen reader gesturing**: Allows an agent to highlight a page element when a visitor is using a screen reader. See the [Accessibility](/users/glance-cobrowse/getting-started/accessibility/) page for more information on screen reader gesturing.
Info
Agent gesturing is disabled during visitor screen share.
================================================================= FILE: /users/glance-cobrowse/features ================================================================= | Feature | Release Version | Description | | :--- | :--- | :--- | | [Folders for Web Screen Share Bookmarks](/users/glance-cobrowse/features/webscreenshare/#configuring-screen-share-bookmarks-and-folders) | 6.0 | Administrators can now organize bookmark URLs into folders. | | [Navigation Assist](/users/glance-cobrowse/features/navigation_assist/) | 5.8 | Navigation Assist provides the ability for the agent to navigate to a URL on the visitor's behalf by clicking on a bookmark within the agent viewer. | | [Drag and Drop Cobrowse Widget](/users/glance-cobrowse/getting-started/ui_ref) | 5.8 | The widget can now be dragged and dropped on the screen during a session and will snap to a corner based on the quadrant it is moved into. | | [Role Setting for Background Effects](/users/glance-cobrowse/features/agent_video/#enabling-background-effects) | 5.8 | Administrators can choose background effects for agents based on their role during the Cobrowse session. | | [Screen Share for Visitors](/users/glance-cobrowse/features/webscreenshare/#screen-share-for-visitors) | 5.7 | The agent is able to grant the visitor permission to share their entire screen. | | [Remote Assist with Restricted Editing](/users/glance-cobrowse/features/remote_assist/) | 5.5 | Remote Assist with Restricted Editing controls which specific elements of the page agents can interact with during a Cobrowse session. | | [Web Screen Share Bookmarks](/users/glance-cobrowse/features/webscreenshare/#screen-share-bookmarks) | 5.3 | Administrators have the ability to configure bookmark links of easy-to-share websites that agents can share. | | [Escalate to Web Screen Share](/users/glance-cobrowse/features/webscreenshare/#escalate-to-web-screen-share-from-cobrowse) | 5.3 | Agents have the ability to escalate from a Cobrowse session to a Screen Sharing session without downloading any software. | | [Visitor Background Blurring](/users/glance-cobrowse/features/agent_video/#enabling-background-effects) | 5.2 | Visitors have the ability to blur their background while they are on video. | | [Dynamic Masking](/users/glance-cobrowse/features/masking/) | 5.2 | The contents of specific element fields, such as credit card number or password fields, can be masked from view by agents. Masked elements can be identified by any CSS selector, including the html name or id attribute. When a text element is masked, agents will only see asterisks in their view. Agents will not be able to see the status of masked dropdown boxes, radio buttons, or checkboxes. | | [Document Link Sharing](/users/glance-cobrowse/features/document_sharing/#document-sharing-links) | 5.2 | Administrators have the ability to add links to approved PDF, CSV, and Excel documents that agents can share in a session. | | [Add Additional Guests to Cobrowse Session](/users/glance-cobrowse/video/configure_video/#adding-a-guest) | 5.1 | Agents have the ability to invite additional guests to a Cobrowse session. | | [Agent Video Background Effects](/users/glance-cobrowse/features/agent_video/#video-background-effects) | 5.1 | Administrators can choose background effects for agents during the Cobrowse session. | | [Document Sharing](/users/glance-cobrowse/features/document_sharing/) | 5.1 | Agents and visitors have the ability to share documents with each other during the session. Users can optionally save the files shared with them to their local computer. | | [Agent Video](/users/glance-cobrowse/features/agent_video/#1-way-agent-video) | 4.5 | Agent video provides the ability for the agent to lead a web-based video session during which a live video of the agent is displayed to the customer. | | [Excel Cobrowse](/users/glance-cobrowse/features/excel_cobrowse/) | 4.17 | Agents and visitors have the ability to share Excel documents with each other during the session. Users can optionally save the files shared with them to their local computer. | ================================================================= FILE: /users/glance-cobrowse/features/masking ================================================================= The contents of specific element fields, such as credit card number or password fields, can be masked from view by agents. Masked elements can be identified by any CSS selector, including the html name or id attribute. When a text element is masked, agents will only see asterisks in their view. Agents will not be able to see the status of masked dropdown boxes, radio buttons, or checkboxes.
Note
If a form field is identified to be masked and to be edited, masking will take priority.
You can also mask non-input page elements. Masking an element also masks any nested elements and input fields that are contained by the masked element. The dimensions of masked elements are preserved, but text content and images are removed. The values of `href` and `src` attributes are cleared and the contents of `svg` audio and video tags are removed. ## Configuring Masked Elements You can configure masking from the [Cobrowse Settings](/users/glance-cobrowse/getting-started/cobrowse_settings/) page. No customer website modifications are required to add or change masked field definitions. To configure the masked elements: 1. Enter the element you want to mask in the **CSS Selector** field, and click **Add**. 2. When finished, click **Publish to Production**.
Masked Elements Configuration UI
Note
In the above screenshot, all elements with an id of "confidential" and/or a class of "sensitive-data" will be masked.
Warning
Be aware that if your website is modified, the CSS selectors for masked elements may need to be updated.
## Verifying Masked Elements You should run a Cobrowse session on the new version of your website on a staging server to verify that all content is correctly masked. A good practice is to add the attribute `glance_masked="true"` to all elements that should be masked. You may also add the `glance_masked` class to those elements. This way, even if the elements' ids or other attributes change when you update your website, the elements will continue to be masked. If you want to download a CSV file of your masked elements for reporting purposes, click the **Export** button. Glance auto-masks element fields with the attribute `"type=password"`. Visitor and Agent View Comparison
Note
During Remote Assist, agents cannot control masked elements.
## Styling Masked Elements You can apply special styling to masked elements during a Cobrowse session to indicate to both visitors and agents that an area is masked. This can be accomplished by adding custom CSS to the Cobrowse button customization tool. Use the selector `[data-gid][glance_masked=true]` to select only masked elements during a session. ## Agent-Side Masking By default, no CSS is applied to a masked element, so the agent will see blank white space. [Contact Glance](/users/account-management/contact/) to apply the agent-side CSS. ## Visitor-Side Masking To display a masking indicator, such as an orange border around masked elements, use the following CSS. This example will work if you have added `glance_masked="true"` to the masked elements on the page. ```css [data-gid][glance_masked=true] { border: 2px solid orange; } ``` Alternatively, you can use the following CSS if you have added the `glance_masked` class: ```css [data-gid] .glance_masked { border: 2px solid orange; } ``` ## Allowed and Blocked URLs Glance Cobrowse can be configured to mask entire pages from view based on the URL using either an Allowed List or a Blocked List. A page is masked if an entry in the Blocked List appears in the page URL, e.g., `/account/preferences`, `billing.aspx`, or `securearea.mycompany.net`. A page is allowed if an entry in the Allowed List appears in the page URL. If both an Allowed List and a Blocked List are specified, then a page is cobrowseable only if its URL matches an entry in the Allowed List, but does not match an entry in the Blocked List. To configure an Allowed List or a Blocked List, [contact Glance](/users/account-management/contact/). ## Role-Based Masking **Requires Cobrowse 5.2 or higher** Legacy role-based masking can be configured to mask content based on the user's role by utilizing our Cobrowse Visitor API. See [this page](/developer/legacy_api/visitor_agent/visitor/) for more information. For users on Cobrowse 6.26 or higher, Glance has introduced a new portal that enables administrators to [configure role-based masking through our user interface](/users/portal/masking/). If you are not on version 6.26 or higher, and would like to utilize this feature, please [contact Glance](/users/account-management/contact/) to upgrade your version and gain access to the portal. ================================================================= FILE: /users/glance-cobrowse/features/navigation_assist ================================================================= **Requires CB 5.8 or higher** Glance allows the agent to navigate to a URL on the visitor's behalf by clicking on a bookmark within the agent viewer. The URL that the agent directs the visitor to must contain the Cobrowse script tag in order for the agent to follow along. Administrators can designate which websites will be available for navigation assist through the **Account Management** site. ## Enable Navigation Assist 1. Navigate to **Account Management** and select the **Settings** tab. 2. Click the **Enabled** checkbox next to **Navigation Assist**.
Enable Navigation Assist checkbox
Note
If you have Roles set up within your group, you will need to enable Navigation Assist within Role Settings found in the Portal tab.
3. Scroll down to the **Cobrowse Settings** section and click **Manage your cobrowse settings**. 4. Scroll down to the **Navigation Assist Sites** section and click **Add Link** to add a site to be used for navigation assist.
Add Link button for Navigation Assist Sites 5. Input a **URL Title**, the **URL** of the website, and select the **Active** checkbox.
Input URL Title and URL
Info
The site must be tagged with the Cobrowse script tag and may need to be added to the Cross Domain Cobrowse section if it is on a new domain. Refer to Cobrowse Cross-Domain for more information.
6. Click **Save** then click **Publish to Production**.
Publish to Production button ## Activate Navigation Assist During Cobrowse 1. During a Cobrowse session, click on the folder icon to the left of the URL.
Folder icon in Agent Viewer 2. Select a site to navigate to from the dropdown list.
Dropdown list of available sites 3. The visitor will see a modal asking them to accept the navigation to the new site.
Visitor acceptance modal 4. The visitor will be redirected to the new site after clicking **Accept**. ================================================================= FILE: /users/glance-cobrowse/features/pdf_cobrowse ================================================================= Glance Cobrowse supports cobrowsing PDF files that your customer may wish to view when navigating your website. The following section outlines requirements and implementation steps for enabling cobrowsing of PDF files on your web property.
Warning
The PDFs must be hosted on the same web server as your website. Glance does not support cobrowsing documents downloaded to the customer's computer.
## How It Works All browsers have a built-in native PDF viewer which, unlike the browser's HTML page viewer, cannot run JavaScript, including the Glance Cobrowse JavaScript. The key to making PDF Cobrowse work is to configure Glance Cobrowse to instead open PDF files in the Glance PDF viewer. When a visitor views a PDF document in the Glance PDF viewer, it can be cobrowsed just like any other page. ## Implementation There are two options for enabling the ability to cobrowse PDFs, depending on how users navigate to PDFs on your web property: ### Option 1 - Anchor Tag Selectors In some cases, a PDF document is opened by a visitor clicking on an anchor tag link. In this case, the Anchor Tag Selector method can be used. For example, if your web page has an anchor tag such as: ```html Price List ``` Glance Cobrowse can be configured to automatically open this PDF in the Glance PDF Viewer. This is done via CSS selectors, similar to how you identify masked fields. The following are some typical selectors, either of which would work for the anchor tag example above: | Selector | Description | | :--- | :--- | | `a.pdf` | All anchor tags with `class="pdf"` | | `a[href$=pdf]` | All anchor tags which reference `.pdf` files | The CSS Selectors used here must be unique to PDFs. Whenever a visitor clicks a link with one of these selectors during a session, Cobrowse expects a PDF. If the link is not a PDF, the result will be an error stating "Could not open document". You then configure the PDF CSS selectors in the **Account Management** portal, per the instructions below. #### Adding PDF CSS Selectors 1. Go to **Account Management** > **Settings** > **Manage your cobrowse settings**. 2. Scroll to the **PDF Elements** section.
PDF Elements section 3. Enter the CSS selectors into the **PDF CSS Selectors** field, and click **Add**. 4. When you are ready to move from staging to production, click **Publish to Production**. 5. You can download a list of the selectors from the **Export** button. ### Option 2 - JavaScript API Call Sometimes PDFs are opened via a `window.open` call in JavaScript. In this case, the JavaScript API Call method must be used. For example, if your web page has a button which opens a PDF file by calling: ```javascript window.open("[https://www.glancevelo.com/pricelist.pdf](https://www.glancevelo.com/pricelist.pdf)"); ``` You must modify your JavaScript to call `GLANCE.Cobrowse.Visitor.viewPDF()` instead when in a Cobrowse session: ```javascript var url = "[https://www.glancevelo.com/pricelist.pdf](https://www.glancevelo.com/pricelist.pdf)"; if (GLANCE && GLANCE.Cobrowse && GLANCE.Cobrowse.Visitor && GLANCE.Cobrowse.Visitor.inSession()) { GLANCE.Cobrowse.Visitor.viewPDF({url: url}); } else { window.open(url); } ``` The URL to the PDF file must be an absolute URL. If the JavaScript works with relative URLs, you can build an absolute URL by combining `window.location` with the relative path: ```javascript var relativeUrl = "pricelist.pdf"; if (GLANCE && GLANCE.Cobrowse && GLANCE.Cobrowse.Visitor && GLANCE.Cobrowse.Visitor.inSession()) { // the relative URL of the .pdf to view var absURL = window.location.protocol + "//" + window.location.hostname + window.location.pathname + "/" + relativeUrl; GLANCE.Cobrowse.Visitor.viewPDF({url: absURL}); } else { window.open(relativeUrl); } ``` If you want to prevent PDFs from being downloaded during the session, you can add the following option to the `viewPDF` API to hide the download button: ```javascript GLANCE.Cobrowse.Visitor.viewPDF({url: "...", options: { hideDownload: true }}); ``` ## Enabling PDFs Sent as Binary Strings
Info
This functionality is available in Cobrowse 4.15 or later.
If you have PDFs that are passed from the server to the visitor's browser for download as binary strings, and there is no URL of the PDF to pass to the Glance `viewPDF` API call, you will need to call the following API: ```javascript GLANCE.Cobrowse.Visitor.viewPDF(params); ``` Where: ```javascript var params = {data: pdfData}; ``` And: ```javascript var pdfData = atob( 'JVBERi0xLjcKCjEgMCBvYmogICUgZW50cnkgcG9pbnQKPDwKICAvVHlwZSAvQ2F0YWxvZwog' + 'IC9QYWdlcyAyIDAgUgo+PgplbmRvYmoKCjIgMCBvYmoKPDwKICAvVHlwZSAvUGFnZXMKICAv' + 'TWVkaWFCb3ggWyAwIDAgMjAwIDIwMCBdCiAgL0NvdW50IDEKICAvS2lkcyBbIDMgMCBSIF0K' + 'Pj4KZW5kb2JqCgozIDAgb2JqCjw8CiAgL1R5cGUgL1BhZ2UKICAvUGFyZW50IDIgMCBSCiAg' + 'L1Jlc291cmNlcyA8PAogICAgL0ZvbnQgPDwKICAgICAgL0YxIDQgMCBSIAogICAgPj4KICA+' + 'PgogIC9Db250ZW50cyA1IDAgUgo+PgplbmRvYmoKCjQgMCBvYmoKPDwKICAvVHlwZSAvRm9u' + 'dAogIC9TdWJ0eXBlIC9UeXBlMQogIC9CYXNlRm9udCAvVGltZXMtUm9tYW4KPj4KZW5kb2Jq' + 'Cgo1IDAgb2JqICAlIHBhZ2UgY29udGVudAo8PAogIC9MZW5ndGggNDQKPj4Kc3RyZWFtCkJU' + 'CjcwIDUwIFRECi9GMSAxMiBUZgooSGVsbG8sIHdvcmxkISkgVGoKRVQKZW5kc3RyZWFtCmVu' + 'ZG9iagoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDEwIDAwMDAwIG4g' + 'CjAwMDAwMDAwNzkgMDAwMDAgbiAKMDAwMDAwMDE3MyAwMDAwMCBuIAowMDAwMDAwMzAxIDAw' + 'MDAwIG4gCjAwMDAwMDAzODAgMDAwMDAgbiAKdHJhaWxlcgo8PAogIC9TaXplIDYKICAvUm9v' + 'dCAxIDAgUgo+PgpzdGFydHhyZWYKNDkyCiUlRU9G'); ``` ## Viewer Interface The Glance PDF viewer includes the following interface elements for navigating through the document: * Page selector, which allows the visitor to open a specific page in the document * Page forward and back buttons * Zoom in and out * Page up and page down keys * Text search There is a link to open the document in the browser's native PDF viewer to get additional functionality not supported by the Glance viewer: * Print * Form filling (Chrome) However, once the visitor opens the document in the native viewer, the agent cannot follow. ## Limitations The following is a list of the current limitations of PDF Cobrowsing: * No form filling * No printing * No masking * Agent cannot scroll * PDFs currently always open in the same tab, regardless of how the website behaves when not in a cobrowse session * Original page and PDF must share the same protocol (https) to avoid mixed content errors * Original page and PDF must either be on the same domain, or the PDF server must return CORS (cross-origin resource sharing) headers * All limitations of PDF.js: no video, high-resolution images, etc. ================================================================= FILE: /users/glance-cobrowse/features/remote_assist ================================================================= If enabled for Cobrowse, Remote Assist (formerly called Remote Control) provides the ability for the agent to request control of the visitor's browser interface during the session. To enable the remote assist button in the agent viewer, from **Account Management** > **Settings** > **While Cobrowsing with a customer, allow** > **Remote Assist**. Glance also offers the ability to restrict which items the agent can control during the session, see [below](#remote-assist-with-restricted-editing). ## Using Remote Assist 1. As the agent, click the **Remote Assist** icon in the agent viewer to request control.
Remote Assist icon 2. As the visitor, click **Yes** to accept.
Remote Assist request modal 3. Now the agent can take control of the visitor's browser interface to help them navigate, select interface elements, or fill out form fields. When remote assist is on, a green dot in the middle of the **Remote Assist** icon is displayed, and the screen border turns red. 4. To stop remote assist, click the **Remote Assist** icon again. * The agent can only remotely take control of the website interface tagged with Cobrowse. * The agent cannot take control of the visitor's desktop applications or other browsers during the session. * Gesturing is not available during remote assist mode. * Interactions are logged in the [Event Stream](/developer/legacy_api/visitor_agent/visitor_event/#remote-control-events).
Note
Remote Assist supports Angular CDK drag-and-drop functionality, but does not support native browser drag-and-drop.
## Remote Assist with Restricted Editing **Requires CB 5.5 or higher** In addition to Remote Assist, you can enable Restricted Editing to control which specific elements of the page agents can interact with during a Cobrowse session. * The visitor can retake control at any time by clicking or moving their mouse. * Supported on iframed content. * Event Stream Logging: Provides a list of events when Restricted Editing occurs. ### Prerequisites Ensure you have the following set in the **Settings** tab in **Account Management**: * Remote Assist * Remote Assist with Restricted Editing ### Configure Restricted Editing Selector Fields You can configure which fields the agent can control during the Cobrowse session by: * Adding the class `class="glance_controllable"` to any elements you want the agent to be able to control. * If you have existing CSS selectors you want to use, follow the instructions below to add your CSS selectors to **Account Management**. 1. From **Account Management** > **Settings** > **Manage your cobrowse settings** > scroll to the **Remote Assist with Restricted Editing** section. 2. Enter the CSS selectors of the UI elements you want agents to have the ability to control in the **CSS Selector** field > **Add**. 3. Click **Publish to Production** when satisfied with your changes in Staging. 4. You can export a list of CSS selectors from the **Export** button. 5. To add custom styling to the agent-side CSS for elements, [Contact Glance](/users/account-management/contact/). #### Restricted Editing On the agent side, an element's editability is determined when the view initially loads. If the page's HTML changes after loading � causing an element to either match or no longer match a restricted editing CSS selector � the inputs on the viewer side may incorrectly appear as editable or non-editable. For example, if the following is listed as a selector for Restricted Editing: `.allow-restricted-editing input` The HTML for the page would include: ```html
``` The `firstname` input will not be editable by the agent, even if the JavaScript running on the page later adds `class="allow-restricted-editing"` to the div. To avoid confusion, it is recommended that customers choose restricted editing selectors that will identify editable inputs at the time the page is initially loaded. ================================================================= FILE: /users/glance-cobrowse/features/webscreenshare ================================================================= ## Overview Glance provides the ability for agents to escalate from a Cobrowse session to a screen sharing session without downloading any software. During a Cobrowse session, the agent can click the **Screen Share** button to have the option of sharing their screen or granting the visitor permission to share. The agent or the visitor can share their entire screen, a window, or a browser tab. ## Prerequisites * The Glance Group account must be set to use Cobrowse version 5.3 or above. * The setting **Escalate to Show** must be enabled in **Account Management** > **Settings**. As an administrator, you can choose if agents can share tabs, windows, or their entire desktop.
Note
For macOS users, verify Screen Recording is selected in your system's Security & Privacy Settings for the browser you are using to join sessions.
## Using Screen Share from Cobrowse 1. After the agent and visitor have joined the Cobrowse session, the agent clicks the **Share Screen** icon in the agent viewer.
Share Screen icon 2. The agent can choose to share their entire screen, a window, or a browser tab. 3. The agent clicks **Share** to share the content. 4. The visitor can view the agent's content. ## Multiple Participants Sharing Their Screen If a session involves multiple agents, and a second agent shows their screen, the initial agent will get a message stating **Another agent is sharing their screen. You are no longer sharing your screen.** Another agent is sharing their screen message ### Screen Share Bookmarks **Requires CB 5.3 or higher** Glance also provides the ability to configure bookmark links of easy-to-share websites agents can share. Once enabled, these websites display in the **Screen Share** menu of the Agent Viewer for the agent to easily select. ### Configuring Screen Share Bookmarks and Folders **Bookmark Folders Require CB 6.0 or higher** As an administrator, from **Account Management** > **Settings** > **Manage your cobrowse settings**, go to the **Web Screen Share Bookmarks**. Web Screen Share Bookmarks settings To add a bookmark: 1. For **URL Title**, enter the title for the bookmark link in the Agent Viewer. 2. For **URL**, enter the URL of the bookmark site. 3. Select the **Active** checkbox. 4. Click **Save**. 5. To add an additional bookmark, click the **Add Link** button. 6. After you test your changes in staging, click **Publish to Production**. To add a folder: 1. Click the **Add Folder** button. 2. Input a name for your folder in the **Insert folder name** field. 3. Select the **Active** checkbox. 4. Click **Save**. 5. Create new bookmarks within your folder or drag existing bookmarks beneath the folder. 6. Click **Publish to Production**.
Info
The Web Screen Share Bookmarks section can store up to 20 items (e.g., 18 bookmarks and 2 folders, 16 bookmarks and 4 folders, etc.)
### Using Screen Share Bookmarks 1. Once the agent and visitor are in a Cobrowse session, the agent can click the **Share Screen** icon to view the bookmark links.
Share Screen bookmark menu 2. After clicking the link, the bookmark site will open in a new window, and the agent has the opportunity to preview the content. 3. Click **Share...** > **Window** > select the bookmark window from the available windows. 4. The visitor can view the agent's window. 5. Click **Stop Sharing** to end the screen share session. The cobrowse session will continue. ## Screen Share for Visitors **Requires CB 5.7 or higher** The agent is able to grant the visitor permission to share their desktop, application window, or browser tab with the agent to quickly resolve any issues. Visitors must be on a PC or Mac to share their screen. Mobile devices do not support screen sharing from their browsers.
Note
Escalate to View must be enabled within the Account Management page for this feature to function.
1. From a Cobrowse session, click the **Share Screen** icon. 2. Click **Send** within the **View** section.
Send View Request 3. The visitor will receive a **Share Your Screen** modal in which they must click **Accept**.
Visitor Share Your Screen prompt 4. The visitor can then choose if they want to share their entire screen, a window, or a tab.
Info
If the visitor is using the Safari web browser, they will only be able to share their entire screen.
5. After the visitor has made their selection, they click the **Share** button to share with the agent.
Info
When the agent is sharing their screen and the visitor shares their screen back and layers the new share on top of the existing Agent Share, the Stop Sharing button is grayed out and non-functional.
## Troubleshooting If you attempt to share the entire screen or tab, but you are only configured to share a window, you will receive the following error: Screen Share error notification **Remediation:** You can click the Screen Share button and try to share the Window instead. ================================================================= FILE: /users/glance-cobrowse/getting-started/CAM ================================================================= In some scenarios, the Glance Cobrowse Agent Viewer may be unable to access certain assets required to fully render the browser page. When this occurs, agents may see missing images, styles, or fonts. While uncommon, this issue can arise if both of the following conditions are met: * A session cookie is required to access the asset. * The page's Content Security Policy (CSP) blocks XHR requests. If this occurs, we recommend contacting [Glance Support](/users/account-management/contact/) to determine the best solution. In many cases, a small adjustment to the CSP can resolve the issue. Alternatively, assets can be uploaded through **Cobrowse Asset Management** to ensure proper rendering. To resolve issues with assets not loading in the Agent Viewer, follow these steps for each missing resource: 1. Identify the resource that is failing to load. On the agent side, open the browser's Network tab and look for fonts, images, or CSS files returning HTTP error statuses. 2. On the visitor side, use Chrome developer tools to locate the resource (click on **Application** and navigate to the resource under **Frames** on the left side). 3. Save the resource to your hard drive. * For stylesheets, right-click and select **Save as**. * For images or font files, you may need to save them to the **Overrides** area of Chrome DevTools. 4. Right-click the resource and choose **Copy URL** for future reference. 5. In the **Network** tab, check the **Content-Type** header in the response for the resource request. 6. Navigate to **Account Management** > **Settings** and select **Cobrowse Settings**. Scroll to the **Cobrowse Asset Management** section.
Cobrowse Asset Management section 7. Select the saved resource file for upload. 8. Paste the full URL into the **Asset URL** box, including any query string parameters. 9. Select the content type from the drop-down menu (as identified in Step 5). 10. Click **Upload**. Once uploaded, agents should be able to retrieve and view these assets correctly in their session view.
Note
If the assets change, you will need to re-upload them under Cobrowse Asset Management.
================================================================= FILE: /users/glance-cobrowse/getting-started/accessibility ================================================================= Glance is committed to ensuring digital accessibility for individuals with disabilities. We are continuously working to improve the user experience for everyone by adhering to relevant accessibility standards. The Glance Cobrowse platform includes a visitor-facing user interface that is fully customizable by our enterprise clients. Several leading financial services organizations have leveraged these customization capabilities to meet their specific accessibility compliance requirements. To support these efforts, Glance has obtained a Voluntary Product Accessibility Template (VPAT) for our default Cobrowse visitor UI (version 5.0 and later). This assessment, conducted by the external accessibility firm TPGi, confirms conformance with WCAG 2.1 AA standards. For more details, please contact Glance. Glance offers industry-leading accessibility features for the visitor Cobrowse experience, including: * Screen reader compatibility * Agent gesturing support for screen reader users * Full UI customization capabilities ## Accessibility Features Glance Cobrowse offers accessibility features for both [visitors](#visitor-side-accessibility) and [agents](#agent-side-accessibility). ## Visitor-Side Accessibility The Glance Cobrowse visitor interface is designed to support accessibility standards, including compatibility with screen readers and the use of built-in ARIA attributes. Visitors can perform essential actions such as starting and ending sessions, as well as receive agent guidance through gesturing, features that are fully accessible to visually impaired users utilizing screen readers. By default, the agent code box is accessible, allowing agents to easily instruct visitors to read the session code to begin a Cobrowse session. ## Screen Reader Gesturing Screen reader gesturing enables agents to guide customers by clicking on page elements, which automatically triggers the visitor's screen reader to read the selected element aloud. This functionality ensures that agent guidance is clearly communicated and understood by the visitor. Additionally, the Cobrowse visitor interface can be customized to meet your corporate standards, including specific accessibility requirements. ## Using Screen Reader Gesturing 1. A cobrowse session is started with a visitor who is visually impaired and uses a screen reader. 2. In the top-left corner of the agent view, click the **Gear** icon followed by the **Visitor Accessibility** slider. If you do not see this option, [Contact Glance](/users/account-management/contact/).
Agent view gear icon and accessibility slider 3. In the agent view, click an interface element. 4. The screen reader tool reads the clicked element out loud to the visually-impaired user. ## Agent-Side Accessibility To better support agents with disabilities, Glance Cobrowse includes built-in accessibility features on the agent side. Agents can navigate the Cobrowse interface using keyboard gestures, pressing **Tab** to move between interface elements, with screen reader support that reads each element aloud as it receives focus. The Agent Viewer is fully accessible, offering keyboard operability, screen reader compatibility, and visible focus indicators. Agents with the setting **Enable Agent Accessibility** in their account can also use the keyboard to have page contents read aloud. Additionally, if a field is masked, the screen reader will notify the agent. To enable agent accessibility: 1. Navigate to **Account Management** and select the setting **Enable Agent Accessibility**. 2. The agent can turn on agent-side accessibility by clicking the **Gear** icon followed by the **Agent Accessibility** slider on the agent viewer.
Agent Accessibility slider ## Using Agent-Side Accessibility Agents can navigate the Cobrowse interface using standard keyboard gestures: * Press **Tab** to move through interface elements in the header. * Press **Enter** to open drop-down menus. * Press **Esc** to close open drop-down menus. These shortcuts enhance usability for agents relying on keyboard navigation and screen readers. ## Agent-Side Zoom The agent can zoom in on the visitor's screen by utilizing the zoom function. Click the **Gear** icon followed by the **Zoom Viewer** slider on the agent viewer.
Zoom Viewer slider ## Guest Accessibility Guests have the ability to zoom in while using the viewer by clicking the magnifying glass icon located in the top-right corner of the interface.
Guest magnifying glass icon ================================================================= FILE: /users/glance-cobrowse/getting-started/cobrowse_requirements ================================================================= Presence enables agents to initiate a Cobrowse session with visitors instantly without requiring the visitor to click a link, enter a hotkey sequence, or read a session key over the phone. To use Presence, the following requirements must be met: * Agents must be using Glance for Salesforce or a custom integration. * Add `data-presence="on"` to the [Cobrowse script tag](/developer/glance-cobrowse/attributes/). * Specify a unique [Visitor ID](/developer/legacy_api/visitor_agent/visitor/) on every page where a Cobrowse session can be initiated. The Visitor ID must: * Be known to the agent's CRM. * Be unique to each individual visitor. If two people browse your site using the same Visitor ID, the Presence service will be unable to distinguish between them. * During 1-Click Connect sessions, the visitor ID acts as the Session Key, so it must meet all requirements of a Session Key as outlined [here](/developer/legacy_api/visitor_agent/visitor/#using-startsession). * Agents must have an active Presence subscription. * The agent's CRM must be integrated with the Glance Presence service via the Glance Presence API. Glance's Salesforce integration supports Presence out of the box. For more details on the Glance Presence API, see the [Customizing](/developer/presence/) page. Cobrowse Flow Diagram The diagram below illustrates a typical flow for initiating a Cobrowse session using Presence. Both the visitor and the agent connect to the Presence service using the same unique Visitor ID. Once connected, the agent and visitor can communicate through the Presence service. This flow is also applicable to visitors using the mobile SDK. Presence Flow Diagram ## Disable Console Logs
Info
The ability to disable console logs is supported in Cobrowse version 4.9 or later.
To suppress console logs generated by Presence, include the following line in your JavaScript before Glance is loaded or a session is started: ```javascript window.GLANCE_COBROWSE = { disableLogging: true }; ``` ## Ad Blockers Ad blockers can interfere with Presence functionality. If you have completed all of the required setup steps and Presence still is not working, try disabling any ad blockers installed in your browser. ## Reconnecting If a visitor or agent loses network connectivity, it may take up to one minute to automatically reconnect to Presence. Refreshing the page will initiate an immediate reconnection attempt. ================================================================= FILE: /users/glance-cobrowse/getting-started/cobrowse_settings ================================================================= # Managing Glance Cobrowse Settings To integrate Glance Cobrowse into your website, you'll need your Customer Group ID�a unique identifier assigned to each customer. You'll also need your Glance username (also known as your Glance Address) and password to access this information. If you're unsure of your username or password, contact [Glance Support](/users/account-management/contact/) for assistance. Once you have your Customer Group ID, follow these steps to manage your Cobrowse settings: 1. Navigate to [www.glance.cx](https://www.glance.cx) and click **Login**. 2. Log in using your **Glance Address** and **Password**. 3. Click the **Settings** tab under **Account Management**. 4. Scroll to the **Session Settings** section and select **Manage your Cobrowse settings**.
Manage your Cobrowse settings link 5. Refer to the [Manage Settings](/users/account-management/manage_settings/) page for additional information. ================================================================= FILE: /users/glance-cobrowse/getting-started/cobrowse_sso ================================================================= Agents already logged into their CRM console can use single sign-on (SSO) functionality to join a Glance Cobrowse session without needing to log in separately. For more information, visit [Glance Integrations](/developer/integrations/). **Example SSO URL:** ```text https://glance.net/cobrowse/AgentView.aspx?SessionKey=[nnnn]&partnerid=[pid]&partneruserid=[puid]&loginkey=[loginkey] ``` Replace the bracketed placeholders with actual values to initiate a Cobrowse session using SSO. ================================================================= FILE: /users/glance-cobrowse/getting-started/glossary ================================================================= Below is a list of common terms used throughout Glance. * **Agent:** Your company's representative who supports your visitors in carrying out various tasks such as completing a purchase. Representatives who use Glance to support your visitors are known as subscribers. * **CDN:** A content delivery network or content distribution network is a geographically distributed network of proxy servers and their data centers. * **Glance Address:** A subscriber's username on the Glance service. Glance Addresses have the form `person.example.glance.net`. * **Glance Customer:** A customer of Glance who subscribes to the Cobrowsing service. * **Group ID:** A unique ID, a four-, five-, or six-digit number assigned to your company by Glance. You may have separate Group IDs for your development, staging, and production environments. * **Guest:** An additional party invited to a Cobrowse session. * **Masked Element:** An element in your company website containing sensitive or confidential data. Masked elements should not be visible to agents. * **Masked Field:** An input form field in your company website containing sensitive or confidential data such as a social security or credit card number. Masked fields should not be visible to agents. * **Production:** This is your live site. When you are happy with how Cobrowse looks and performs in your staging environment, you can publish the changes to Production from the Settings page, and those changes will be live�no need to update any code on your production website. * **Script Tag:** A short snippet of JavaScript furnished by Glance. When inserted into a website's HTML, the Script Tag enables Cobrowsing. * **Session:** A Cobrowsing encounter between a visitor and an agent. A session may view one or more pages on a website. * **Session Code:** A unique session identifier available to both the visitor and agent, allowing the agent to connect to the correct session. * **Session Server:** A secured server that runs the Glance Cobrowse service, accepting session updates from the visitor and relaying them to the agent. Glance operates multiple Session Servers. Also known as a "CServer". * **Staging:** Used for new website changes, where you can test and accept changes such as adjusting colors or text for the UI, masked fields, or new versions of Cobrowse. The staging site may require a different Cobrowse configuration from the production site. * **Subscriber:** An agent or other person with an account on the Glance service. * **Visitor:** Anyone navigating your company website. Your agents use Glance Cobrowse to assist your visitors. ================================================================= FILE: /users/glance-cobrowse/getting-started ================================================================= Once you set up Cobrowse, an agent can direct a visitor to click a link or button on the website and share the code that appears, or it can be integrated into the agent's [CRM system](/developer/integrations/) so that the agent can initiate a session for the visitor to accept. Cobrowse Flow Diagram ## In This Section {% children description="true" /%} ================================================================= FILE: /users/glance-cobrowse/getting-started/join_session ================================================================= If you are using Cobrowse as a stand-alone service without CRM integration, agents can join a session by visiting: [https://www.glance.net/agentjoin](https://www.glance.net/agentjoin) If the agent is not already logged in, they will be prompted to: 1. Log in using their Glance address and password. 2. Enter the **Session Code** provided by the website visitor.
Join a Cobrowse session prompt To avoid repeated logins throughout the day, agents can keep the following link open in their browser: [https://www.glance.net/account/accountkeepalive.aspx](https://www.glance.net/account/accountkeepalive.aspx). As long as this page remains open, the agent's session will stay active, and they will not need to re-authenticate when accessing the Agent Join page. ## Join a Session Through CRM Integration If you are using a CRM integration such as Glance for Salesforce, you can join a Cobrowse session by setting up a field from a standard object (Lead, Case, Person, Opportunity, etc.) as the Visitor ID. Once set up, the agent can click the Cobrowse button from Salesforce and when the button lights up orange�indicating that the visitor is currently active on the company's web property�they can be instantly connected to a Cobrowse session together. This eliminates the need for the visitor to verbally share a session key. You can optionally configure this workflow to include a verbal confirmation, accept terms and conditions, or launch the session automatically. For more information, visit [Glance Integrations Support](/developer/integrations/). ================================================================= FILE: /users/glance-cobrowse/getting-started/multiple_groups ================================================================= All Cobrowse settings are specific to the group in which the session runs. These settings include: * Masked elements * Trusted domains for cross domain Cobrowse * Trusted domains for invoking Cobrowse from a "chat" window Cobrowse supports running multiple sessions across different groups on the same website, enabling flexible call center models. Agent permissions can be configured to allow access only to sessions within designated groups. ## Specify the Groups in the Script Tag Customers can specify additional Group IDs in the script tag using the `data-additionalgroupids` attribute. For example: ```html data-additionalgroupids="59923,50920" ``` This allows different pages to be tagged with different sets of Group IDs as needed. However, a primary Group ID (`data-groupid`) must still be specified. This ID serves as the default group and is also required for non-Cobrowse features such as Presence. ## Start a Session in a Particular Group The `GLANCE.Cobrowse.Visitor.startSession()` API call accepts an optional `groupid` parameter, allowing you to specify the group in which the session should start. If this parameter is not provided, the session will default to the primary group defined in the script tag. For example, this starts a session in group 72: ```javascript GLANCE.Cobrowse.Visitor.startSession({ groupid : 72 }); ``` Refer to the [API](/developer/legacy_api/visitor_agent/visitor/#using-startsession) section for more details. An alternate Group ID can also be specified by the agent side when initiating a session via the Presence API.
Note
It is currently not possible to specify an alternate Group ID when starting a session using either:
  • A link with the data-glancebutton attribute.
  • Key combinations specified in the data-inputevents attribute in the script tag.
## Security Once a session is started with a specific Group ID, any agent with a Cobrowse subscription in that group will be able to view the session. For this reason, it is critical that website authors explicitly allow only the intended Group IDs to ensure proper access control. Every time a session is initiated or resumed (whether via API call, window message, Presence, page navigation, cross-domain transition, or when the page regains focus) a validation check occurs. This check ensures the session's Group ID either matches the `data-groupid` or is included in the `data-additionalgroupids` attribute defined in the script tag. Refer to the [Security](/users/security/) section for more information. ## Button Customization Each group has its own button customization settings. When using the default UI, the Cobrowse scripts automatically load the appropriate button styles based on the group in which the session is running. If you need to apply the button style from a different group, you can do so by calling: ```javascript GLANCE.Cobrowse.VisitorUI.setStyle(); ``` Additional information is available [here](/developer/legacy_api/visitor_agent/visitor_ui/). ## Presence with Multiple Groups Presence always uses the group specified in the `data-groupid` attribute. Therefore, if an agent wants to join a session via Presence, they must be a member of both the group defined in `data-groupid` and the group in which the session is actually started. ## Custom UI with Multiple Groups When using a [custom UI](/developer/legacy_api/visitor_agent/visitor_ui/) (`data-ui="custom"` in the script tag), the customer-supplied user interface script can dynamically adjust the UI based on the group in which the session is running. The following API can be called to return the `groupid` of the currently running session, if one is active: ```javascript GLANCE.Cobrowse.Visitor.sessionGroupId(); ```
Warning
It is not possible to use a custom UI for one group and the default UI for other groups.
================================================================= FILE: /users/glance-cobrowse/getting-started/self_hosting ================================================================= Glance recommends referencing the Cobrowse script from the Glance CDN at [cdn.glance.net](https://cdn.glance.net). When you use the Glance CDN: * Glance can easily provide you with updates and enhancements to the Cobrowse product. * Changes made using the button customization tool will be automatically applied without involving your website development team. You can, however, host the scripts on your own server if you prefer. Glance will provide upgraded scripts approximately once per quarter, and will support the current version and at least one version prior.
Warning
Excel Cobrowsing is not supported for customers who self-host the Cobrowse script.
Glance provides a tool to help generate a single customized self-hosting package, which includes: * The standard JavaScript, HTML, and CSS that is currently included in the self-hosting package. * Your group's staging and production custom skin CSS file with your color and branding customizations. * Your group's staging and production custom visitor text JSON files with customized widget text.
Note
Glance must turn on self-hosting in order for this package to be available in Account Management.
To host the script on your company website instead of accessing it from our CDN, you will need to: 1. Download the package by going to the **Cobrowse Settings** section of **Account Management**. Scroll down to the **Self-hosting Package** section. * Each version of Cobrowse has its own unique package link. * If you don't see a link for the version you are expecting, contact [Glance Support](/users/account-management/contact/). 2. For Cobrowse versions 6.3.0+, download the corresponding video package from `https://cdn.glance.net/video/packages/GlanceVideo_X.X.X.zip` (Replace the `X`s with the same version number as the base package downloaded in Step 1).
Note
The video package is required even if your sessions are not using video.
3. Unzip the contents of the packages and place them on your server. Place the base package from Step 1 in a folder named `cobrowse` and the video package from Step 2 (if using Cobrowse 6.3.0+) in a sibling folder named `video`. * The URL must contain the word "cobrowse" only once. * For example, if you plan to host your files at `https://www.yourcompany.com/glance/` then you would create the following folders: * `https://www.yourcompany.com/glance/cobrowse` * `https://www.yourcompany.com/glance/video` 4. Reference the location of the `GlanceCobrowseLoader_X.X.XM.js` file in the `src` attribute of your script tag, as shown in the following example: ```html ```
Warning
None of the other scripts, images, or style sheets in the package should be referenced in your website.
## Upgrade a Self-Hosted Script Periodically, Glance releases updates to the Cobrowse JavaScript package. To upgrade your website to use the latest scripts, you will need to download a new package and put it on your website. The `GlanceCobrowseLoader` script in the new package is named with the new version number. You have a few options for managing upgrades once you generate and download the new self-hosting package: 1. Once a new release is available, update your website to point to the new version. In other words, in the script tag above, change the version number to match the version number you are upgrading to. 2. Use a configuration setting on your website to control the version number, for example: `src="https://www.yourcompany.com/glance/GlanceCobrowseLoader_<%=GlanceCobrowseVersion%>M.js"` 3. Copy the `GlanceCobrowseLoader_x.y.zM.js` script to a generic name (`GlanceCobrowseLoader.js`) and reference that name in the script `src` attribute. You will need to make sure that your server applies appropriate cache headers so that visitors will be getting the latest version after you upgrade. ================================================================= FILE: /users/glance-cobrowse/getting-started/ui_ref ================================================================= ## Agent Controls The agent controls support a range of capabilities, from basic session participation to advanced collaboration features like remote assist and document sharing.
Resize Video

Allows the agent to resize the video window.

Resize Video icon
Turn Video On/Off

Allows the agent to turn their video on and off.

Turn Video On/Off icon
Eject Guest

Allows the agent to eject the guest, if needed.

Eject Guest icon
Pause Visitor Video

Allows the agent to pause the visitor's video.

Pause Visitor Video icon
Cobrowse Widget

The Cobrowse widget contains the End button and options to resize video or turn video on/off. The widget can be dragged and dropped on the screen during a session and will snap to a corner based on the quadrant it is moved into.

Cobrowse Widget
Glance Icon

The G icon is only informational.

Glance Icon
Settings

Provides the ability to choose a webcam, turn on video background effects, or turn on accessibility.

Settings icon
Settings - WebCam

Choose which camera you want to use for the session.

WebCam Settings
Settings - Video Background Effects

Turn background effects on or off.

Video Background Effects Settings
Settings - Accessibility

If enabled, turn this switch on (blue) to enable accessibility. This feature allows agents to guide customers by clicking on a page element, which automatically activates the visitor's screen reader to read the clicked element out loud.

Accessibility Settings
Back/Forward

If remote assist is enabled, these buttons allow you to go back or forward.

Back and Forward buttons
Refresh

If remote assist is enabled, this button allows you to refresh the page.

Refresh button
Add Guest

Allows the agent to invite guests to the session.

Add Guest button
Add Guest (dropdown)

Once the agent clicks Add Guest, they can click the copy button to copy the URL to the guest join page to share with guests. Once the agent has a code from a guest, they enter the code into the field and click Admit.

Add Guest dropdown
Share Screen

If the agent has share screen privileges, it provides the ability for the agent to share a window, browser tab, or their entire screen. It also allows the agent to send a request to the visitor to view their screen.

Share Screen icon
Remote Assist

If the agent has remote assist privileges, it provides the ability for the agent to request control of the visitor's interface. When remote assist is on, a green dot in the middle of the mouse icon is displayed. To stop remote assist, click the mouse button again.

Remote Assist icon
Share Document

If the agent has share document privileges, it provides the ability for the agent to share a document with the visitor or for the visitor to share a document with the agent.

Share Document icon
Video

If the agent has video privileges, it provides the ability for the agent to show video. Click the video button to start agent video. When video is on, a green dot in the middle of the camera icon is displayed. To stop agent video, click the video button again.

Video icon
Customer Info

Provides relevant session details and diagnostics, including Session Code, Visitor OS, Browser Type, Browser Version, and Report a Problem (if enabled).

Customer Info icon
End

The End button ends the session and closes the browser window.

End button
## Visitor Controls This section covers the visitor-side UI experience during video-enabled sessions, including how visitors preview their camera, accept terms, and manage permissions before connecting with an agent.
Visitor Preview (1-Click Connect) with Terms and Conditions

If a visitor is logged in, and an agent has 1-click connect enabled in a CRM, when the agent clicks the orange Join button, the visitor is presented with a set of terms and conditions.

Visitor Preview Terms and Conditions
1 of 2: Visitor Preview (Code use case)

If the camera isn't enabled, this is the first screen.

Visitor Preview screen 1
2 of 2: Visitor Preview (Code use case)

Video preview with session code once the camera is enabled.

Visitor Preview screen 2
Blocked Camera/Camera Off Alert

Visitor has clicked the block camera on the browser bar icon or turned off the camera in the modal.

Blocked Camera Alert
Waiting Message

Displays when the visitor has accepted terms, but is waiting for the agent to click Join.

Waiting Message
Remote Assist Request

Allows the visitor to accept the remote assist request.

Remote Assist Request
Camera Settings

Allows the user to choose a camera.

Camera Settings
Video Settings

Allows the user to turn their camera on or off.

Video Settings
## Guest Controls This section outlines the guest UI experience when joining a Glance session via invitation.
Name Field

Allows the guest to enter their name. Once they click Join, a code appears.

Guest Name Field
Camera Settings

Allows the guest to choose a camera.

Guest Camera Settings
Video Settings

Allows the guest to turn their camera on or off.

Guest Video Settings
Code Field

Once the guest has entered their name, a code box appears, which they will provide to the agent to admit them.

Guest Code Field
Video Slider

In small video mode, if you cannot see all participants in the session, this icon allows you to filter through different participants.

Video Slider
================================================================= FILE: /users/glance-cobrowse/getting-started/url_configuration ================================================================= URL Configuration settings interface The **URL Configuration** section within **Cobrowse Settings** allows you to customize the URL links used during a Cobrowse session. * **Terms and Conditions**: Provides customers with a terms and conditions agreement at the beginning of a Cobrowse session. This URL defaults to the Glance Terms and Conditions page. * **Additional Terms**: An additional line for terms to show up below Terms and Conditions. If this field is not populated, nothing will display on the modal. If a URL is provided, text must be provided in the [Customization Tool](/users/glance-cobrowse/getting-started/widget-customization/) in order for this URL to be displayed. * **Document Sharing Terms**: The Terms and Conditions displayed to the customer when an agent prompts a visitor to share a document. This URL defaults to the Glance Terms and Conditions page. * **Guest Join Redirect**: Create a new URL for the Guest Join page to provide to the guest. The customer must create a page hosted on their own domain and then add a redirect to the Glance Guest Join page. This URL defaults to the Glance guest join page. * **Guest Session End Page**: The page that guests are redirected to when a Cobrowse session ends. This URL defaults to Glance.cx. ================================================================= FILE: /users/glance-cobrowse/getting-started/widget-customization ================================================================= The Cobrowse Widget Customization UI contains two tabs at the top: one for **Staging** and one for **Production**. As you make changes to the respective sections, the preview will dynamically change to reflect your changes. After you finish making customization changes, first click **Save to Staging** to preview to Staging. Once you are satisfied with the changes, click **Publish to Production**. This feature is supported for Cobrowse version 5.7 and later. ## Access 1. Administrators navigate to **Account Management**. 2. Click the **Settings** tab. 3. Scroll down to the **Session Settings** section and select **Manage your Cobrowse settings**. 4. Scroll down to the **Cobrowse Customizations** section and click **Manage cobrowse customizations**. ## Color Choose the colors for the widget bar, buttons, and gesturing. You can customize the color of the following UI elements by entering the hex value into the field next to the element. * Primary Color (Widget bar and all main buttons' background color and links) * Button Text Color (Session code, all main buttons) * Body background (Prompts and modal windows) * Message text (Text and headlines that appear on all UI elements) * Secondary button background (Usually a cancel or decline button) * In-session border * Remote Assist border * Gesture * Focus indicator color Color Customization Options ### Demo Below is a video demonstration of updating the colors of UI elements.
## Branding The **Branding** section allows the user to customize the logo and font displayed on the modals. The user is also able to customize the cursor display for the agent.
Tip
SVG format is preferred for images, but PNG is also acceptable.
* **Logo icon**: Enter a URL where the logo icon is stored; the image must be in SVG or PNG format. * **Agent Cursor**: Enter a URL where the cursor icon is stored; the image must be in SVG or PNG format. * **Font**: * Glance supports any standard HTML and CSS fonts along with any non-standard fonts, as long as the customer website includes the font source. * To have your custom font appear in the customization tool, enter your publicly available Font Source URL and the matching Font Family.
Note
If your font source is private, upload the font source file to the Resources section within Cobrowse settings. Add the generated URL to the Font Source URL within the Customization tool.
Branding Customization Options ## Languages The **Language** section allows the user to customize which languages are enabled within the widget. The user is also able to make bulk updates to the text used within the modals by updating JSON files. The following languages are supported by Glance: * English * French * French (Canada) * German * Italian * Japanese * Portuguese (Brazil) * Spanish * Spanish (Mexico) * Spanish (US) - *only available for Cobrowse version 6.33 and later* Language Customization Options ### Enabled Language Select the **Enabled** option next to each language that you wish to support. Enabled Language Toggle ### Default Language Click the **Default** option next to a language to set it as the default language. Default Language Toggle ### Language Hierarchy When the Cobrowse session first starts, Glance will check the `` `lang` `` attribute on the `` `` `` tag of the page. 1. If the `` `lang` `` attribute is set to one of the enabled languages, that language will be used. 2. If there is no `` `lang` `` attribute or the `` `lang` `` attribute specifies a language not enabled for Cobrowse, then Glance checks the language setting in the visitor's browser. If the browser is set to a language enabled for Cobrowse, that language will be used. 3. If neither the language specified by the `` `lang` `` attribute nor the visitor's browser is an exact match of any of the languages enabled for the group, then the Cobrowse widget will display in an enabled language (if there are any) that shares the same main language code based on the HTML language attribute then the browser language setting. For example, if the visitor's browser is set for Spanish (`es`) but the group has only enabled Mexican Spanish (`es-mx`), then the widget will display using the strings set for Mexican Spanish, and vice versa. 4. If none of the above are applicable, the customer's default language will be used. ### Download A Language File A language file can be downloaded in order to make bulk updates to the text within the modals. Complete the following steps to download, edit, and reupload a language file. 1. Click the **Download** button next to the desired language. 2. The file will download through your browser.
Download language file 3. Save the file to your local drive and open it using a text editor.
Open language file in text editor 4. Make the desired changes to the JSON file. 5. Save the file as **VisitorText_[groupid]_language_S.json** (e.g., English Language = `VisitorText_12345_en_S.json`) when your changes are complete.
Note
The group ID must be changed to your ID when saving the file.
6. Click the **Choose File** button next to the language and select your modified JSON file. 7. Click the **Upload** button.
Upload modified language file ## Text The **Text** section allows the user to modify individual segments of text within the modals. Text Customization Section
Note
br can be used in the text to indicate a line break.
### Demo Below is a video demonstration of text being updated on a modal.
### Editing Language The **Editing Language** dropdown allows users to select the language to modify. The languages available in the dropdown are based on the languages enabled within the **Languages** tab. Editing Language Dropdown ### Categories The **Categories** buttons allow users to select which part of the session they would like to modify. The user clicks on a category and the correlating text options are displayed below. Sessions are broken down into the following categories: * Start Session * In Session * Questions/Responses * Status Indicators * Camera Messaging
Info
This category is dependent on multi-way video settings for the group.
* Document Sharing ## Custom CSS The Custom CSS section allows users to modify widget styles and positions. CSS files can be imported using the **CSS Imports** section or CSS can be modified directly using the **Custom CSS** section. Custom CSS Interface
Note
You may need to clear your browser's cache to pick up changes as you change styling.
Note
If preview modals are not all displaying on one line, zoom out the browser window.
================================================================= FILE: /users/glance-cobrowse/har ================================================================= Glance Customer Care may occasionally need additional information about the network requests that are generated in your browser. A member of the team may ask you to record a HAR file, or a log of network requests, while that issue occurs. The following instructions describe how to generate a HAR file within different internet browsers. ## Generating a HAR File in Chrome 1. Open Chrome and navigate to the page where the issue is occurring. 2. Click the vertical ellipsis button and select **More Tools** > **Developer Tools**.
Chrome Developer Tools menu 3. Select the **Network** tab.
Note
If Customer Support has requested a HAR file with WebSockets, select the **WS** option in the **Network** tab. Reload your browser to start seeing the traffic over the WebSocket.
Chrome Network tab WS option 4. Confirm the record button in the upper left corner is red. If it is grey, click the button once to start recording. 5. Check the **Preserve Log** box. 6. Click the **Clear** button to clear any existing logs from the network tab.
Chrome Network tab clear logs button 7. Reproduce the issue while the network requests are recorded. 8. Click the download button to save the file to your computer. Save the file as "HAR with Content".
Chrome export HAR file button 9. Upload the HAR file to your ticket with Glance Customer Support for further investigation.
Info
For any issues generating the HAR file in Chrome, review Google's Help Center document [Capture Web Session Traffic](https://support.google.com/admanager/answer/10358597?hl=en).
## Generating a HAR File in Firefox 1. Open Firefox and navigate to the page where the issue is occurring. 2. Open the [Network Monitor](https://firefox-source-docs.mozilla.org/devtools-user/network_monitor/#opening-the-network-monitor). 3. Reproduce the issue while the network requests are recorded. 4. Right-click anywhere under the **File** column and click **Save All As HAR**.
Firefox save all as HAR option 5. Save the HAR file to your desktop. 6. Upload the HAR file to your ticket with Glance Customer Support for further investigation.
Info
For any issues generating the HAR file in Firefox, review Firefox's source document [Network Monitor](https://firefox-source-docs.mozilla.org/devtools-user/network_monitor/index.html#opening-the-network-monitor).
## Generating a HAR File in Safari 1. Open Safari and navigate to the **Develop** menu.
Note
If you don't see the **Develop** menu, refer to [Use the developer tools in the Develop menu in Safari on Mac](https://support.apple.com/en-ie/guide/safari/sfri20948/mac).
2. Select **Show Web Inspector**. 3. Click the **Network** tab. 4. Reproduce the issue while the network requests are recorded. 5. Click the **Export** icon and save the HAR file.
Safari export HAR file icon 6. Upload the HAR file to your ticket with Glance Customer Support for further investigation.
Info
For any issues generating the HAR file in Safari, review Safari's Developer Website [Web Inspector](https://developer.apple.com/safari/tools/#current).
## Generating a HAR File in Edge 1. Open Edge and go to the [Network Tool](https://learn.microsoft.com/en-us/microsoft-edge/devtools-guide-chromium/network/#open-the-network-tool). 2. Click the **Network** tab. 3. Reproduce the issue while the network requests are recorded. 4. Export captured traffic as a HAR file.
Edge export HAR file button 5. Upload the HAR file to your ticket with Glance Customer Support for further investigation.
Info
For any issues generating the HAR file in Edge, review Edge's Website [Inspect Network Activity](https://learn.microsoft.com/en-us/microsoft-edge/devtools-guide-chromium/network/).
================================================================= FILE: /users/glance-cobrowse ================================================================= Provisioned agents can instantly launch a session to share their screen or to view the customer's browser screen, highlight page content, and scroll the page to guide the customer as they navigate the company website or browser-based app. No downloads or installations are required by the customer, as the Glance Cobrowse functionality is enabled on the company web pages using simple JavaScript tags. To read more about the features included with Cobrowse, visit the [Features](/users/glance-cobrowse/features/) page.
{% children description="true" /%} ================================================================= FILE: /users/glance-cobrowse/integrity ================================================================= The Glance Cobrowse Service allows one or more customer service agents to view, in real time, the web browsing activity of visitors to a website. Agents see exactly what visitors see in their browsers, with the exception of the contents of designated masked fields, such as a credit card number or password. This document outlines the mechanisms that guarantee security and integrity specifically of the Glance cobrowse service. Security of the Glance website, database infrastructure, and Glance login and account management is covered in the general Glance security whitepaper. For definitions of terms, please see the [glossary](/users/glance-cobrowse/getting-started/glossary/). The Glance Cobrowse service relies on a [script tag embedded in each page of your website](/developer/glance-cobrowse/quickstart). It loads a JavaScript file hosted by the Glance web server, and starts Cobrowse sessions when your website visitors want them. In this explanation we call this visitor javascript file **Cobrowse.js**. ## Session Initiation All visitor-initiated Cobrowse sessions require a way for the visitor to obtain the unique session key to share with the agent. The agent needs the key to join the session. At Glance, we recommend using an HTML element, typically a button on the page. For more information, please see [Create and Add a Cobrowse Button](/developer/glance-cobrowse/add_button). Alternatively, you can allow the visitor to generate a session key with a hot-key combination such as `Shift` - `Enter`.
Tip
Use an HTML element to initiate sessions, because visitors on mobile browsers cannot use hot-key combinations. And, some website visitors may struggle with certain hot-keys.
## Content Security Policy (CSP) Refer to the Content Security Policy (CSP) Headers section within the [Cobrowse Security Architecture page](/users/security/security_cobrowse/#content-security-policy-csp-headers).
Info
If a customer disallows unsafe-inline styles, Cobrowse will continue to work as expected. However, you may see CSP violation warnings in the console that reference unsafe-inline styles being blocked; these are harmless and can be ignored.
## Agent Group Policies If your organization's agents use Microsoft Edge, you may have Group Policy Manager settings in place. If so, please ensure that your agents' Trusted Sites include `https://*.glance.net` to ensure your agents can connect to cobrowse sessions. ## Field Masking (optional) You may prevent sensitive visitor information from being shown to your agents while cobrowsing. For example, you may conceal your visitors' payment card numbers or taxpayer ID numbers from your agents. Use Field Masking to do this. You can add an HTML attribute or class to each object you wish to mask, or you can identify them via CSS selectors in the Glance Admin Portal. You may find [more information about masking here](/users/glance-cobrowse/features/masking/). ## Firewall Settings To ensure agents can successfully connect and Cobrowse with visitors, ensure your network allows traffic to the following domains. **Required Domains (Allow-list):** * `*cdn.glance.net` * `*.glance.net` **Ports and Protocols** * **Port:** 443 * **Protocols:** HTTPS (TLS 1.2+) and WSS (Secure WebSockets)
Note
Glance uses standard web protocols. No custom ports are required.
If your team experiences connectivity issues, contact [Glance Support](/users/account-management/contact/). ================================================================= FILE: /users/glance-cobrowse/upgrading ================================================================= As your website evolves and Glance releases new features, keeping your Cobrowse integration up to date ensures the best possible experience for both your agents and your visitors. This section provides guidance on how to manage updates to your own web properties without breaking your Cobrowse implementation, as well as how to navigate Glance's version upgrade process. ## In This Section {% children description="true" /%} ================================================================= FILE: /users/glance-cobrowse/upgrading/upgrading_cobrowse ================================================================= Several times throughout the year, Glance will release a new version of the Cobrowse visitor-side JavaScript files. In general, upgrades require no code or configuration changes on the part of the customer. The implementation of the upgrade will depend on whether you are using the Glance CDN to serve the scripts or if, as an organization, you're hosting the scripts internally. ## Glance Cobrowse Upgrade Process A Glance Cobrowse upgrade is a single setting change in the Glance database that determines what version/release of Glance Cobrowse the customer is running. A typical upgrade process would look like the following: 1. Glance Support upgrades your version within the Staging environment. 2. You test the Staging environment to ensure everything is functioning correctly. 3. Notify Glance Support of the results. If everything is working properly, Glance upgrades your version within the Production environment. 4. You test the Production environment to ensure everything is functioning correctly. Refer to the [Multiple Groups](/users/account-management/multiple_groups/#staging-vs-production-groups) page for an explanation of Staging vs. Production groups. The upgrade process is completed within a few seconds. Following the upgrade, it may take up to an hour for web caching to take place depending on when the visitor connects to the customer's website. For example, visitors who connect to the customer's website for the first time experience the upgrade immediately because they do not have anything cached on their browser. However, if a visitor is on the customer's website minutes before the upgrade, the upgrade may take longer to propagate because the visitor has more recent cached data in their web browser. Additionally, this type of visitor is not impacted by the longer upgrade time because they will simply use the previously "working" version of Cobrowse while the upgrade is processing.
Info
Web caching does not involve nor is controlled by Glance.
## Glance CDN - Standard Implementation If your site uses the Glance CDN to serve the visitor-side Cobrowse JavaScript files, Glance will first push the upgrade to your staging site where you can verify that the new scripts work correctly. Once verification from the customer side is complete, Glance will coordinate the final push to upgrade the production site. You will be notified via email at least one week prior to the staging site upgrade. During this time, you may coordinate with [Glance Support](/users/account-management/contact/) to set up user acceptance testing from your side and any included efforts from Glance as your MSA outlines. You will be given at least two weeks to validate the release before the upgrade is pushed to your production environment. ## Upgrading the Self-Hosted Cobrowse Script Customers who host their own scripts will download the new scripts from the Glance CDN, followed by updating the staging or production sites to reference the new scripts. ================================================================= FILE: /users/glance-cobrowse/upgrading/upgrading_faq ================================================================= ## Do I have to accept the Glance Cobrowse upgrade on Glance's schedule? Customers are encouraged to upgrade to the newest version when it becomes available to take advantage of new features, bug fixes, and performance improvements. For customers who choose not to upgrade to every new release, Glance provides two years of support for each version of Cobrowse. Customers are required to upgrade Cobrowse versions in a timely manner such that the version used in production is always one that has been released within the past two years. Glance continually updates our servers to support the latest features, fixes, and security patches. Cobrowse versions older than two years may be incompatible with newer server versions and fail to function properly even if no changes are made on the customer website. Should an issue arise with your Cobrowse implementation, one of the first troubleshooting steps will be to upgrade to the newest version. Staying up-to-date on the version deployed in your environment will make that process smoother and faster. ## How can I test the new Glance Cobrowse version before I upgrade to it? Glance configures the new Glance Cobrowse version in a staging environment for testing. Within two weeks, the release is pushed to customer production sites. ## How do I know what is in the new Glance Cobrowse version? Glance publishes release notes to keep you informed about the latest Glance Cobrowse version. Please contact [Glance Support](/users/account-management/contact/) to request release note notifications. ## How often do Glance Cobrowse version updates occur? Glance Cobrowse version updates occur every two to three months. ## How do I know when a Glance Cobrowse upgrade becomes available? You can sign up to receive notifications of the latest Glance Cobrowse release upgrades. Please contact [Glance Support](/users/account-management/contact/) to request new release notifications. ================================================================= FILE: /users/glance-cobrowse/upgrading/upgrading_website ================================================================= Whenever you make changes to your website, it is a best practice to verify that Cobrowse will still run correctly on the modified portions of your site. Verify the following checklist whenever you upgrade your web property: * New pages have been tagged with the Cobrowse script tag. * New iframes have been tagged with the Cobrowse script tag (this is a common source of issues). * New sensitive information or form fields are correctly masked. * If there are hover states in the new website areas, contact [Glance Support](/users/account-management/contact/) to ensure that hover states will be reflected on the agent side during Cobrowse sessions. * If there are new custom fonts or icons that are not accessible from your website via a cross-origin request, contact [Glance Support](/users/account-management/contact/) and Glance can host them on our CDN for access by Cobrowse agents. ================================================================= FILE: /users/glance-cobrowse/video/configure_video ================================================================= At a high level, configuring Glance Video on your website requires: * A website tagged with Cobrowse Version 5.0 or later. * Users with these settings enabled by Glance in the Account Management website: * Add multi-participant video during cobrowse sessions * Invite Guests If you are using Salesforce, you can join Glance Video sessions from the Join button in Salesforce. * Install the Glance Package, version 3.9 or later. Details [here](/developer/integrations/salesforce/install_sf/#download-the-glance-for-salesforce-application). * Choose to start the session in Large or Small video mode. Details [here](/developer/integrations/salesforce/sf_settings/#modify-profile-settings). To learn more about enabling this product for your group, [Contact Glance](/users/account-management/contact). ## Conduct a Glance Cobrowse session with Video To join a Glance Cobrowse session with Video, Glance recommends that you place a clickable element, such as a link, button, or other object, at the footer of every web page. An agent can then ask the visitor to scroll to the bottom of whatever page they are on and click that element to start a session. See [this page](/developer/glance-cobrowse/add_button/) for more information on creating a Cobrowse button. To join a Glance Cobrowse session with Video: 1. The visitor clicks the element to start a session. 2. The visitor receives a prompt to allow access to the camera. Once allowed, they will see the session code to provide to the agent.
Visitor camera permission prompt 3. The agent enters the code in the Agent Join Page or CRM. 4. Depending how the group is configured, the agent will join with video on automatically, or they can click the video icon in the agent viewer to turn on their camera. Now the visitor and agent can see each other.
Agent and visitor connected with video 5. The visitor and agent can move from small or large video modes by clicking the resize icon.
Resize video icon ## Capabilities By User Users have different abilities during the session. The following table lists which capabilities are available to agents, viewers, and guests in the session. | | **Agent** | **Visitor** | **Guests** | |---|---|---|---| | End Session | X | X | | | Leave session | X (last agent leaving ends session) | X (leaving ends the session) | X | | Scroll | X | X | | | Gesture | X | | X | | Turn on/off personal video | X | X | X | | Turn off another agent's video | X | | | | Turn off guest video(s) | X | | | | Turn off visitor video | X | X | | | Remove guest from a session | X | | | | Add guest to session | X | | | | Enlarge video | X | X | | | Minimize video | X | X | | ================================================================= FILE: /users/glance-cobrowse/video ================================================================= Glance Video humanizes digital interactions by providing the ability for agents to participate and lead a web-based, multi-participant video session with a primary cobrowse visitor. By enabling agents, visitors, and participants to visually interact face-to-face, Glance Enterprise customers improve key business metrics such as CSAT, NPS, lead conversion, reduced customer churn, and increased sales close rates. A few key benefits: * Build, grow, and facilitate material relationships that rival in-person experiences. * Built into pre-existing workflows - start calls with video and quickly escalate into cobrowse with video. * Embeds directly into your website or mobile site, ensuring a consistent experience. * Seamlessly connects into your existing CRM, telephony, and chat technology. Multi-participant video display To enable this feature, [Contact Glance](/users/account-management/contact). ## Glance Video Features * Ability to add additional guest participants. * Multi-participant Video (up to 10 participants). * Accessible UI (conforms to the WCAG 2.1 AA standard). * Standard Cobrowse features such as PDF/XLS document viewing, masking, gesturing, Screen Share, and remote assist. * Salesforce Integration (beta): agents can instantly join video sessions using 1-Click Connect. ## Display * **Multi-way Video Large** (up to 10 participants) * First 9 display in grid. * 10+ see preview - but do not enter grid. * If one person in the initial 9 leaves the grid, then the 10th enters the grid for display (and so on). * **Multi-way Video Small** (display up to 4 participants with scrolling) * All participants are shown in turn on the 'filmstrip' UI. ## Browser and Device Support Glance Video is supported on a variety of devices, browsers, and operating systems, depending on the type of user in the session. Refer to the [Browser-Based Multi-Participant Video](/users/account-management/system_requirements/#browser-based-multi-participant-video) table for a detailed breakdown. ## Bandwidth Requirements Glance Video will require different amounts of bandwidth depending on a number of factors. Refer to the [Bandwidth Requirements](/users/account-management/bandwidth_requirements/#glance-video) page for a detailed breakdown. ## In This Section {% children description="true" /%} ================================================================= FILE: /users/glance-cobrowse/video/troubleshoot ================================================================= To use video, the participants must enable their camera in the browser during the session. The same instructions apply for both visitors and guests. Glance Video is only supported on a limited number of browsers for visitors and guests. See [this page](/users/account-management/system_requirements/#browser-based-multi-participant-video) for more information. If the visitor or guest is on an unsupported browser, instruct them to use one of the supported browsers for best results. ## Enabling the Camera for Visitors ### In Chrome 1. Once the cobrowse session starts, the visitor will be prompted from their browser to allow the camera. 2. The visitor clicks **Allow**.
Chrome allow camera prompt 3. If the visitor has clicked **Block**, they will see a message in the video preview indicating their camera is blocked.
Camera blocked message 4. If the video has been blocked by the visitor/guest prior to joining the session, they will not be able to turn their camera back on during the session, and must start a new session to show video. To show video, the visitor will need to end the current session, click the camera icon in the top-right corner of the browser bar, and change to **Always Allow** > **Done**. Then the visitor can start a new video session.
Change camera to Always Allow 5. If the visitor has allowed the camera, but turned off their video, a video icon with a slash will display in the video preview for all parties. If they want to turn their video back on, they can click the red video icon at any time during the session.
Video icon with a slash ### In Safari (macOS) 1. Once the Cobrowse session starts, the visitor will be prompted from their browser to allow the camera.
Safari allow camera prompt 2. Once they click **Allow**, they will see their video preview. 3. If the visitor has clicked **Don't Allow**, they will see a message in the video preview indicating their camera is blocked.
Safari blocked camera message 4. If the video has been blocked by the visitor prior to joining the session, they will not be able to turn their camera back on during the session, and must start a new session to show video. To show video, the visitor will need to end the current session, click the camera icon in the top-right corner of the browser bar, and change to **Allow**. 5. If the visitor has allowed the camera, but turned off their video, a video icon with a slash will display in the video preview for all parties. If they want to turn their video back on, they can click the red video icon at any time during the session.
Safari red video icon ### In Safari (iOS) 1. Once the visitor starts the Cobrowse session, they will be prompted from their browser to allow the camera. In Safari on iOS, the camera will show the visitor video preview by default. When the browser is accessing the camera, a red video icon displays in the top-left corner of the address bar.
iOS Safari allow camera prompt 2. The visitor can change the front or back camera from the gear icon.
Change front or back camera 3. If the camera is blocked in the visitor browser, the video preview is gray, and there is no red video icon in the address bar.
iOS Safari blocked camera preview ### In Edge (Windows) 1. Once the Cobrowse session starts in Edge, the visitor will be prompted from their browser to allow the camera.
Edge allow camera prompt 2. Once they click **Allow**, they will see their video preview. 3. If the visitor has clicked **Block**, they will see a message in the video preview indicating their camera is blocked.
Edge blocked camera message 4. If the video has been blocked by the visitor prior to joining the session, they will not be able to turn their camera back on during the session, and must start a new session to show video. To show video, the visitor will need to end the current session, click the camera icon in the top-right corner of the browser bar, and change to **Always Allow** > **Done**.
Edge Always Allow camera setting 5. If the visitor has allowed the camera, but turned off their video, a video icon with a slash will display in the video preview for all parties. If they want to turn their video back on, they can click the red video icon at any time during the session.
Edge video off icon ### In Chrome (Android) 1. Once the Cobrowse session starts in Chrome on an Android device, the visitor will be prompted from their browser to allow the camera.
Android Chrome allow camera prompt 2. Once they click **Allow**, they will see their video preview. 3. If they click **Block**, the visitor can re-enable the camera from the 3 Dots in the upper right corner > **Settings** > **Site Settings** > **All Sites** > Search for the site in question > **Clear & reset**.
Android Chrome site settings clear and reset ## Blurring and Video Problems ### Blurring Problems If the video is displayed, but the entire screen is blurred, try the following: 1. Change your distance from the camera. * Your full head and the upper part of your shoulders should be in the frame. * There should be a little distance between the top of your head and the top of the frame. 2. Make sure you are horizontally centered in the frame. 3. Make sure you have adequate lighting. * The room should be well lit. * Make sure the light is coming from the front of the agent, and that the agent's display is not the only/main source of light. 4. Change your background if possible. * Maximize the contrast between your skin/hair/clothing and the colors in your background. ### Video Problems If the video is not shown at all, try the following: 1. Verify the camera is not in use by any other applications. 2. Verify your browser can engage the camera. 1. Navigate to [this page](https://webrtc.github.io/samples/src/content/getusermedia/gum/) and click the **Open camera** button. 2. Verify your video appears on the page. 3. Verify your browser supports [WebGL](https://get.webgl.org). * You should see a spinning cube and the words "Your browser supports WebGL" at the top of the page.
WebGL support confirmation 4. Navigate to [https://meet.google.com/](https://meet.google.com/) and start an empty Google meet. * Does the video work? * Does blurring work? 5. Verify hardware acceleration is enabled in Chrome. * Navigate to **Settings > System** and enable **Use hardware acceleration when available**.
Chrome hardware acceleration setting ### Open a Support Ticket Please contact [Glance Support](/users/account-management/contact/) if the steps for [Video Problems](#video-problems) and [Blurring Problems](#blurring-problems) did not resolve the issue. Include the following information for each impacted agent: 1. The agent's Glance username and description of the problem. * What is the nature of the issue? * When did it start occurring? * How often does it occur (e.g., always, sometimes, etc.)? 2. The following hardware specifications for the agent: * OS and Version * Hardware model * CPU, GPU, and RAM 3. The GPU log from the agent's machine, located at `chrome://gpu/` 4. A screenshot of the [WebGL report](https://webglreport.com/?v=1) from the agent's machine. 5. A screenshot of the console tab during the impacted session. 1. Right-click anywhere within the agent view window and choose **Inspect**.
Browser inspect element option 2. Select the **Console** tab. 3. Right-click within the **Console** tab and choose **Save as...**
Save console log 4. Save the file and include it in your support email. ================================================================= FILE: /users/glance-screen-share/configuring ================================================================= When your customers or session guests use Glance for desktop viewing or sharing, they will go to a Join Page to connect them to a session. Out of the box, these Join Pages will be styled to Glance's branding. As an admin in your group, you have the option to customize the Join Pages to match your company's branding. ## When are Join Pages used? * Customers or Guests joining Desktop Show sessions hosted by one of your Glance users. * Customers joining Desktop View sessions hosted by one of your Glance users. * Customers initiating Desktop Show sessions for one of your Glance users to join. * Customers joining mobile camera share sessions. In the first two use cases, the Join Page asks for information from a Session Guest like a Session Key or a name, phone, or email address, if required. After that, the Join Page will either connect the guest as a viewer or deliver the Glance client to show their screen. In the third use case, the Join Page simply delivers the Glance client to your customer and starts a session to show their screen to an authenticated user in your Group. For each use case, these pages have been designed to make the connection process as simple and quick as possible. ## Customize Join Pages The Page Customization editor can only be accessed by administrators in a Glance Group. To find the branding editor: 1. Log in at [www.glance.net/login](https://www.glance.net/login). 2. From **Account Management**, click the **Settings** tab. 3. Under **Branding**, click on **Manage your page customization settings**.
Manage your page customization settings option 4. On the left hand side of the page, edit the customization options. The right hand side of the page will give you a preview of how parts of the page will look according to the customization options applied.
Page customization editor preview The following describes all the available options to brand your Glance pages: * **Logo image URL:** Enter your Logo image file URL. Glance supports SVGs and PNGs, with or without transparency. * **Font family:** If you are using a standard web font, specify it here. If you are using a custom font, enter the URL to retrieve it (see below), and specify the font family from your source file. By default, the pages use Roboto.
Info
Custom fonts are not applied to buttons.
* **Font Source URL:** Enter a URL for a font file on your CDN or elsewhere to pull in. Glance supports TTF/OTF and WOFF but recommends using TTF. * **Text color:** Change the color of all body text. * **Header text color:** Change the color of the header at the top, showing your logo and context for where in the connection process your customer is (preview shows Join Session). * **Header background color:** Change the color of the header at the top. * **Button text color:** Change the color of the text in the sample button. * **Button background color:** Change the color of the sample button. * **Link color:** Change the color of linked text. * **Preface:** Enter text to display at the top of your Join page before a guest joins, such as a legal disclaimer or a slogan. * **Session End Landing Page:** Enter a URL for where a guest can be redirected after you end a Show session. If left blank, guests will go to a Glance promotional page. * **On session join, ask guests for:** Choose which information is collected from guests when they join the session.
Note
These settings only apply if you have disabled **Data Capture for Name, Phone, Email** on **Group Settings**. To change this setting, go to the **Settings** tab. You can also toggle the setting by Role.
## Customize Mobile Camera Share Join Pages You can customize the join and end pages for Mobile Camera Share. 1. Scroll to the **Mobile SMS Camera Share** section. 2. For **Background page**, enter a URL of the page to display in the background while the mobile device is prompting the user to show their camera. 3. For **Camera end page**, enter a URL of the page to direct customers when the session ends. ## Browser Extensions Browser extensions are useful when Glance is invoked from web applications like Salesforce. Glance's browser extensions exist only to allow web pages to communicate with Glance software and avoid confusing prompts for protocol handlers. These extensions are secure, they can only be used with Glance software, and they do not track any kind of browser activity. To add Glance Browser extensions, go to the [**Glance Downloads Page**](https://glance.net/install/install.aspx), and select **Chrome**, **Edge**, or **Firefox**. Glance browser extensions download page ================================================================= FILE: /users/glance-screen-share/faq ================================================================= Browse the questions below to find quick answers regarding system compatibility, software features, and getting the best performance out of your Glance Screen Share sessions. ## Compatibility ### Which OS and browser versions work with Glance Screen Share? A list of operating systems and browsers Glance supports is available on the [System Requirements](/users/account-management/system_requirements/) page. ### How do I connect to my guest's mobile devices (iPhone, iPad, Android, etc.)? Guests may join and view your session from any device. To view your session, guests will only need a web browser and internet access. ### Does Glance Screen Share work with Parallels, Boot Camp, or VMware Fusion? Yes, Glance Screen Share works with Parallels, Boot Camp, and VMware Fusion. **Coherence Mode in Parallels** If you are running Glance Screen Share from within the Windows environment in Coherence mode (which runs Windows applications on the macOS desktop), some special macOS functions (like zooming windows) may not work. Try running Glance from the macOS side to use and show macOS functions alongside Windows functions. ### Do I need to download Glance Screen Share? Session hosts do need to download Glance Screen Share. If you are hosting a Glance session, [download and install](https://glance.net/download) Glance Screen Share on your computer. ## Performance and Features ### What's the best way to view a Glance Screen Share session? For the fastest performance, [download](https://glance.net/download) the Glance Client, and connect with its built-in viewer by clicking the **G** icon and selecting **SHOW** or **VIEW**. ### How much memory does Glance use? When Glance is not in a session, it uses about the same amount of virtual memory as an instant messaging icon sitting idle (under 5MB). During a session, Glance needs as much memory as a multimedia player (15 to 20MB). ### How can I record a Glance session? Glance solutions do not come with a recording technology. ### How can I get the fastest possible Glance Screen Share performance? Below is some advice on how to get the best Glance Screen Share performance: * **User-friendly firewall**: You may want to ask your network administrator to add a simple, secure rule to your company's firewall policy so Glance can run at peak efficiency. * **Check your upload speed**: Many small business and home office networks enjoy fast download speeds, but their upload speed is often just a fraction as fast. Slow upload speed can cause slow Glance Screen Share performance. ### How can guests join my session without a Session Key? Have your guests navigate to your Glance Address and join instantly. 1. Click the **G** icon near your computer's clock. The Glance menu opens. 2. From the **G** icon, click the Gear icon. 3. Select **Session**. 4. Under **Session Key**, choose **No key**. To join your sessions, guests browse to your Glance Screen Share address. They join immediately after entering any contact information you might require. ### Glance Screen Share System and Performance Requirements * **Glance Screen Share Show session:** A host shows their desktop screen to a guest. * **Glance Screen Share View session:** A host views a guest's desktop screen. * **Glance Screen Share View & Control session:** A host views and controls a guest's desktop screen. **Host and Guest Show Session System Requirements** Guests instantly join your Glance Screen Share Show session from any Windows or Mac computer or any mobile device without the need to install any software. They are also required to have internet access using any of the browsers listed on the [System Requirements](/users/account-management/system_requirements/) page. ### Does the Glance icon sitting in my system tray (near the clock) slow down my PC? No. Glance only uses processing power during a session. ### Can I switch the monitor Glance Screen Share shows? Yes. Your primary or main monitor is shown by default, but you can switch the monitor. Glance shows one monitor at a time, leaving your other displays private. To show a different screen, follow the steps below: 1. Click the **G** icon. 2. Click the drop-down menu next to **SHOW**. 3. Choose the monitor you want to show. You can even switch which monitor shows in the middle of your session. The yellow border will appear on the monitor you choose and your guest's Glance viewer window will show the contents of the newly chosen screen. ### Can I download/export Glance Screen Share session information? Yes. You can export session details as a .csv (comma separated value) text file. Import it to any spreadsheet, from any time period, for one individual or everyone in your group. **Export session information** 1. From the Glance home page, click the **Log in** button at the bottom of the page. 2. Log in using your Glance Address and password. Then follow the steps below, depending on whether you want to export details for one or multiple sessions. To export details for one session, follow the steps below: 1. Click the **Activity** tab. 2. Choose a date range that includes the session. (Account administrators can click the Session number to see all sessions for that date range.) 3. Click the session's **Detail** link. 4. Click the **Download** link in the Guests section. To export details for multiple sessions or for your entire group, follow the steps below: 1. Click the **Activity** tab. 2. Choose a date range. 3. To export details for one Glance Address, click the **Export** link in that row. To export details for all Glance Addresses in your group (you must be an account administrator), click **Export All** in the row at the bottom of the page. ### Can Glance solutions transfer files? No, Glance solutions cannot transfer files. You can reassure your security-conscious session guests that neither person can send any files during a Glance session. Should you need to transfer files, we suggest you send the files as an email attachment or provide them to your guests on your website. ================================================================= FILE: /users/glance-screen-share/getting-started ================================================================= # Getting Started This section will walk you through how to set up, use, and configure Desktop Screen Share. More detailed information on how to personalize your Screen Share experience can be found under [Configuring](/users/glance-screen-share/configuring/). Provisioned agents can share their desktop screen or company-approved applications instantly with customers without the customer requiring a download or installation. An agent can pass control to customers and allow them to show their screens. Remote control can be used to navigate and manage configurations on the customer's computer. Glance Screen Share also gives agents the ability to open multiple customer sessions to work across multiple views if necessary. ## Features | Name | Description | |---|---| | **Gesturing** | Once in the session, viewers have the ability to gesture over elements on the presenter's browser to guide and indicate to the presenter. | | **Screen Share** | Screen Share makes it easy to quickly see or show anything on your screen during a conversation. The agent or the visitor have the ability to share their screen. | | **Remote Control** | Remote Control provides the option for the viewer to request control of the presenter's browser interface during the session. | | **Agent Video** | Agent video provides the ability for the agent to lead a web-based video session during which a live video of the agent is displayed to the customer. |
Info
For Web Screen Share information, refer to [Escalate to Web Screen Share from Cobrowse](/users/glance-cobrowse/features/webscreenshare/).
## In This Section {% children description="true" /%} ================================================================= FILE: /users/glance-screen-share/getting-started/screenshare_config ================================================================= From the Gear icon in the top-right corner of the Glance Client, you can customize the Glance experience for yourself and your guests. To exit **Settings**, click the Gear icon again. Glance Client settings menu ## Session Settings Session settings provide the ability to modify session settings such as keys, drawing, and if users can show their screens. You can choose which type of key you want to use: * **Random key:** Glance will generate a random key for every session. * **Always use this key:** Every session will use the same key. Note that this option is less secure. * **No key (fastest, least secure):** Guests join as soon as they go to your Glance address. If you want users to have the ability to highlight interface elements while you are sharing, click **Draw on your screen**. If you want users to have the ability to switch presenters, click **Show their own screen**. When this checkbox is clicked, guests who have Glance installed can click the G icon and switch to showing their screen on-the-fly. This is ideal for meetings when you need to change the presenter. Guests can download Glance from [www.glance.net/guest](https://www.glance.net/guest). They don't need a paid subscription, but you need a subscription that allows viewing other people's screens. ## Visitor Options Visitor options allow you to modify which type of contact information visitors provide prior to the session. You can choose to have the visitor provide a name, phone, and/or email. You can also determine if these settings are: * **Required:** Guests must enter the information in order to join your session. * **Optional:** Guests will have the option of entering the information. * **Don't Ask:** Glance will not ask your guests for this information. Glance Client visitor options ## Account Settings This section allows you to modify your name and title. Here you can also log out of the Glance Client. ## Advanced Settings This section provides details about the version of the Glance Client you are using. ================================================================= FILE: /users/glance-screen-share/getting-started/screenshare_schedule ================================================================= Glance is designed to be used on-the-fly as the visual enabler for any conversation, so you shouldn't need to schedule a session most of the time. Unlike traditional meeting tools, Glance is simple enough to start up and connect in the middle of a meeting or over a conference call. It only takes a few seconds for everyone to join. If you are giving a presentation where it's just you talking to a group instead of a freeform conversation, you might want to give everyone the details to join a Glance session in advance so that you can just focus on presenting instead of talking them through joining. You can do this by selecting **Always use this key**, and providing the key ahead of time to your guests. ## Host a Session Without a Key If you're not sharing any sensitive information during your meeting, this is the easiest way to host a session. Send a message to your group that says: > Join my Glance session at example.glance.net
> Dial in: 702-589-8350 PIN: 5555555 1. Before your call, click the **G** icon and select the **Gear** icon. 2. Go to **Session**. Under **Session Key**, choose **No Key**. 3. Your guests will join as soon as they get to your Glance address. ================================================================= FILE: /users/glance-screen-share/getting-started/screenshare_setup ================================================================= Glance works on most current Windows and Macintosh operating systems. See the [System Requirements](/users/account-management/system_requirements/) page for more information. ## Download Glance Once you have an active subscription, you can download Glance at [www.glance.net/download](https://www.glance.net/download). ## Install Glance for Windows Once Glance has downloaded: 1. Enter your **Glance Address** and **Password**. 2. Click **Log In**.
Glance Client login window You will now find Glance as a **G** icon in your system tray next to your computer's clock. Glance icon in Windows system tray If you want to make sure the **G** icon stays visible, complete the following steps: 1. Click the hidden icon arrow in the tray. 2. Select the **G** icon. 3. Drag the **G** icon into the tray next to the clock. ## Install Glance for Mac After the download has started, the Glance ZIP file is downloaded and opens automatically. The Glance Installer walks you through the steps necessary to install the Glance Client. 1. Enter your **Glance Address** and **Password**. 2. Click **Log In**. 3. Once installed, you will find Glance on your dock and menu bar. * Dock:
Glance icon in Mac dock * Menu Bar:
Glance icon in Mac menu bar
Note
If you are running macOS Catalina or later, you need to take additional steps to grant Glance access to record your screen.
1. Go to **System Preferences** > **Security & Privacy** > **Privacy** > **Screen Recording**. 2. Select the checkbox next to the **Glance Client**.
macOS Screen Recording permissions ================================================================= FILE: /users/glance-screen-share/getting-started/screenshare_using ================================================================= Glance Screen Share makes it easy to quickly see or show anything on your screen during a conversation. If you are speaking with a person over the phone and you want to show your screen or see theirs, it only takes a few steps to set up. ## Start a Session When you are on the phone with your guest and want to start a session, follow these steps: 1. On a PC, click the **G** icon in the corner of your screen next to your clock. On a Mac, click the **G** icon on your dock, then click the **G** icon in the menu bar. 2. Choose which kind of session you want to start: * **Show:** to share your desktop with a guest. If you choose to show your screen, a border will be drawn around your screen to indicate that it is being shared. You also have the option to choose which monitor you want to view. Your guests will not need to download any software to view your screen. * **View:** to view a guest's screen. You have the ability to choose if you want to use remote control or not. Select **View Only** to view without remote control, or **View and Control** to use remote control. After you start a session, the Session Info box appears with directions on how to invite guests to the session. Glance session options menu Once you start a session, the Session Info box is displayed with directions on how to invite guests to the session. After guests are connected, it also displays how many guests are connected to your session. Glance Session Info box You can minimize this box at any time without affecting your session. To bring it back, click the **G** icon. The Glance session times out if your first guest doesn't join within ten minutes. ## Invite Guests Over the phone, invite guests by following the directions under **Invite Guests** on the Session Info box. You can use the buttons found below these directions to send session details to your guests. Invite guests copy and email buttons * The copy button copies session details to your clipboard for you to paste into any other communication service. * The envelope button opens your default email client and drafts a message with a link to join your session. Once your guests access the URL, it should look similar to this: Guest Join Session screen To connect, your guests simply enter the Session Key and click Join Session. If the session is to view their screen, they are prompted to download the Glance Guest software. ## During a Session During your session, you have options that you can access by clicking on the **G** icon. ### Show Show allows you to choose which monitor you want to use during the session. ### Gesture During the session, the visitor and agent can: * Move and Indicate - with their cursor (shows as a colored cursor for the presenter). * Point - Click for a radiating indication, which will radiate for ~5 seconds. * Gesture - Click and drag a rectangle to indicate an area. Gesturing can be set on/off at group/role for View and Show sessions. It can also be set to on/off from the Glance Client. ### Hide My Screen The pause button allows you to hide your screen while keeping your guests connected to your session. The border will disappear to indicate that sharing is suspended, the UI updates to say "Screen hidden", and your guests will see a message saying "Screen not being shown..." Screen hidden status message To show your screen again: 1. If Glance is minimized, click the **G** icon. 2. Click the **Play** icon to resume showing your screen.
Resume showing screen icon ### Allow Remote Control Turning the remote control option on will allow viewers to remotely control the screen. When a guest has control, an orange dot appears over their cursor. Whoever's screen is being shown has priority control. When they move their mouse or type on their keyboard, viewers are prevented from taking control. When the showing person stops, guests can take control again. To turn off remote control: 1. If Glance is minimized, click the **G** icon. 2. Click the **Arrow** icon.
Remote control arrow icon When the arrow icon has a white outline, the guest has the ability to use remote control but it is currently turned OFF. If the icon has a red outline, remote control is turned ON. If you do not want your Glance users have the option to use remote control, you can disable it in your group settings.
Warning
When remote control is active, viewers have full access to your computer. Do not leave your computer unattended while in a Glance session with remote control active.
### Select an Application Glance provides the ability to choose which applications your agents have the ability to share. You can configure a list of approved applications, so that agents can only share those applications and not their entire desktop. This feature is available upon request, [Contact Glance](/users/account-management/contact/) for more information. ### Ending Session Click the **END** button when you are finished. This closes the session for both the client and the viewer. ================================================================= FILE: /users/glance-screen-share/getting-started/upgrading ================================================================= To upgrade the Glance Client: 1. Go to the [download page](https://www.glance.net/install/install.aspx) for the latest version. 2. Click **Download**. 3. After Glance has downloaded, log in to your Glance Account. Additional installation information is available on the [Setting up Desktop Screen Share](/users/glance-screen-share/getting-started/screenshare_setup/) page. ================================================================= FILE: /users/glance-screen-share/getting-started/visitor_view ================================================================= There are two options to view your customer's desktop on a service call: * An agent can host a Glance Screen Share session to view a visitor's screen. * A visitor can host a session from the visitor start page for the agent to join. Choose a method that best meets the needs of your organization as detailed below. ## When Should You Use Visitor Sessions? * Your agents need the ability to view more than one person's screen, or multiple desktops of the same person simultaneously. The visitor session includes the session key in the browser tab so that if you are viewing multiple desktops, you can clearly identify each session. * Your agents need the ability to transfer the service call to another agent, monitor or train an agent, or work collaboratively on a call. * Your organization does not want to have any Glance software downloaded on agents' computers. While you can join the visitor session from the Glance desktop client, you can also join the session from a CRM integration or agent join page. * Your organization needs more robust security. Glance Visitor Sessions require the agent to authenticate with Glance credentials, so it is impossible for someone else to intrude on the call. ## When Should You Host View Sessions? * Your organization needs the ability for unauthenticated guests to join sessions. * Your organization's users need the ability to switch presenters. ## View Session Types There are two types of view sessions depending on if the visitor or agent initiates the session. **Visitor-Initiated Session:** The visitor starts the session from the agent join page. 1. The agent gives the customer the Glance join page. 2. The visitor downloads Glance, starts a session, and gets a code. 3. The visitor gives the code to an agent. 4. The agent joins the session using agent join. **Agent-Initiated Session:** The agent starts the session from the agent view button in Salesforce or the Glance Client. 1. The view session code originates on the agent side. 2. The agent gives the customer a Glance address and code. ## How to Set Up Visitor Sessions If you are an agent setting up a visitor session, you must have the following: 1. A Panorama Special subscription (or similar), as well as permission to join Screen Share sessions started by customers. You can configure permissions by group-level settings or in roles. 2. Access to the Universal Join button in your CRM or be able to navigate to [www.glance.net/agentjoin/agentjoin.aspx](https://www.glance.net/agentjoin/agentjoin.aspx). 3. A way for customers to get to the Visitor Start page, which is found at `www.glance.net/visitor/start?groupid=`. ## How to Start a Visitor Session 1. The visitor navigates to the company's visitor start page, or the agent starts the session from the agent view button. Glance recommends setting up an easy-to-speak short URL on your domain to redirect to it. For example, `glance.yourdomain.com`. 2. The visitor start page pushes the Glance Guest download and invokes it to start a Visitor Session in the company's group. 3. The customer receives a session key to pass to the agent over the phone or chat. 4. The agent clicks Join in their CRM or goes to Agent Join and enters the key. 5. The agent can view the customer's screen. 6. To show another computer, the customer repeats steps 1-3 on another computer, and the agent joins that session the same way. ================================================================= FILE: /users/glance-screen-share/glance-guest/Mac ================================================================= You may need to instruct visitors using macOS to update their permissions on their computer to enable Glance. Permissions requirements vary depending on the type of session: * [View-Only Sessions](#view-only-sessions) * [View and Control Sessions](#view-and-control-sessions) ## View-Only Sessions A session where an Agent starts a View session with a visitor. 1. The first step is for the visitor to download the GlanceGuest application. This can be done in one of the following two ways: * The visitor opens a web page using the agent's Glance address as the URL and enters the session code, which auto-downloads the GlanceGuest application to the visitor's computer. * The visitor starts a session from the Visitor Start page (e.g., `https://glance.net/visitor/start/?groupid=12345`). 2. After the visitor follows the on-screen prompt to unzip the downloaded file and double click GlanceGuest.app to open it, the following system alert will appear. The visitor should click **Open**.
macOS system alert to open application 3. The visitor will then see instructions on giving Glance permission to record the screen. The visitor should click on **Open System Preferences**.
Screen recording permission instructions 4. Within **Screen & System Audio Recording**, toggle GlanceGuest to on.
Toggle GlanceGuest screen recording permission 5. If prompted, enter your password to confirm the changes. 6. The visitor should go back to the session start page and click the link right after **allow the agent to view your screen**. 7. The visitor will see a confirmation from the browser to open the GlanceGuest.app. They should click "Open GlanceGuest.app". They then need to click **Allow** to start the session.
Browser confirmation to open GlanceGuest 8. At this point the agent should be able to see, but not control, the visitor's entire desktop. ## View and Control Sessions 1. To start a View and Control session, first follow the steps above to launch a successful View Session. 2. The first time the agent attempts to control the visitor's screen, it will prompt the visitor to grant Accessibility Access.
Accessibility access prompt 3. The visitor will need to go to **System Preferences** > **Security & Privacy** > **Accessibility**. 4. The visitor should toggle GlanceGuest on.
Toggle GlanceGuest accessibility permission 5. Once these permissions are granted, the agent will be able to **control** the visitor's screen. ## Other Scenarios 1. **Second View and Control Session without removing the GlanceGuest App** If the visitor does not remove the GlanceClient and connects again with an agent at a future time, no alerts occur and no additional steps are needed. 2. **When the visitor connects in a session and has removed the GlanceGuest** If the visitor deletes the GlanceGuest from their Downloads or Application folder, the GlanceGuest may be installed in the main system's application folder. In this case, the visitor connects in a View and Control session without the need to download the GlanceGuest application again and doesn't receive any alerts or additional steps. 3. **When the visitor connects in a session and has removed the GlanceGuest and the GlanceGuest did not install in the system's application folder.** In this case, the visitor will need to re-install the GlanceGuest but will not see any alerts or additional steps needed. 4. **When the visitor was in a View Only session with an agent in the past, and connects again with an agent in the future in a View and Control Session** * The first time the agent attempts to control the visitor's screen, it will prompt the visitor to grant Accessibility Access. * Follow the steps above under **View and Control Sessions**. ================================================================= FILE: /users/glance-screen-share/glance-guest ================================================================= GlanceGuest is a lightweight application that allows unauthenticated visitors to share their screen with authenticated Glance agents. GlanceGuest, available for Windows and Mac, must be downloaded, installed, and invoked for a particular Glance group before the screen sharing session can start. Once the session starts, only agents in the appropriate group can view the visitor's screen. For more information on troubleshooting the installation process, see the [Troubleshooting](/users/glance-screen-share/troubleshooting/) section. ## Starting the Session Refer to the [Starting a GlanceGuest Session](/users/glance-screen-share/glance-guest/starting-session/) page. ## During the Session The following controls are available on the visitor side during the session (from left to right): GlanceGuest session controls 1. **10-Square Icon:** Allows the visitor to drag the control bar around on their screen. 2. **Pause/Resume (Single Screen Icon):** Toggles Screen Share on and off. * When turned off, the border disappears from the visitor's screen and the visitor sees a message saying:
Screen sharing paused visitor message * The agent sees:
Screen sharing paused agent view 3. **Remote Control (Mouse Icon):** Allows the visitor to toggle the session into and out of remote control mode. * When in remote control mode, any agent with remote control privileges may control the visitor's computer. * Agents without remote control privileges will not be able to control or gesture when in this mode. * The visitor may immediately take back control temporarily by moving their mouse. * The visitor can end remote control mode at any time by clicking the mouse icon again. 4. **Switch Display (Multi-Screen Icon):** Clicking this icon brings up a drop down list of all connected displays. The user can then switch the screen share to a different display as desired. * If the visitor has only one display, this icon is omitted. 5. **Hang-up Button (End Session):** Allows the visitor to end the session. ## After the Session When the session ends, the visitor will see the following message: GlanceGuest session ended message ## Using the Extension The Glance Extension is a Chrome and Firefox extension that enables a faster session start experience with GlanceGuest by avoiding the need to download/install GlanceGuest during subsequent sessions. The extension allows the browser to know whether or not GlanceGuest is downloaded on the user's computer. Glance browser extension popup This extension, as well the latest version of the GlanceGuest application, is available on the [Glance downloads page](https://www.glance.net/install/install.aspx). ## In This Section {% children description="true" /%} ================================================================= FILE: /users/glance-screen-share/glance-guest/starting-session ================================================================= ## Starting the Session Sessions start in the following ways: ### Visitor-Initiated 1. The agent directs the visitor to Screen Share via a link (e.g., `https://www.glance.net/visitor/start/?groupid=12345`).
Note
12345 in the above URL must be replaced with the desired group ID.
2. The visitor visits the link to start the download of GlanceGuest. 3. The visitor unzips the GlanceGuest download. 4. The visitor clicks **Launch Glance** on the web page (not in GlanceGuest). 5. The visitor may be prompted by the browser or OS to allow GlanceGuest to be opened. 6. The visitor begins the Screen Share session. 7. The visitor provides a key code to the agent.
GlanceGuest session key code prompt 8. The agent joins the Screen Share session from the Agent Join page. ### Agent-Initiated 1. The agent starts a View session in the Glance client. 2. The agent directs the visitor to an agent-specific URL (e.g., `agent1.glance.net`). 3. The visitor enters the key received from the agent and clicks **Join Session**. 4. The visitor is redirected to a group-specific URL to download, open, and install GlanceGuest. 5. The visitor clicks **Click Here** to begin the session. 6. The visitor may receive a browser prompt to open GlanceGuest. 7. The visitor accepts the prompt from GlanceGuest that someone would like to view their screen. Sessions started by this method can begin in either gesture-only or remote-control mode. Gesture Only Prompt:
GlanceGuest gesture only prompt
Remote Control Prompt:
GlanceGuest remote control prompt 8. The agent can now view the visitor's screen. ### Session Initiated from Salesforce Refer to the [Joining Sessions](/developer/integrations/salesforce/joining_sessions/#joining-sessions) page within the Glance for Salesforce section. ### Session Initiated from Genesys Refer to the [Genesys](/developer/integrations/genesys/) page within the Integrations section. ================================================================= FILE: /users/glance-screen-share ================================================================= This section contains everything you need to successfully deploy, use, and troubleshoot Glance's Screen Sharing solutions. Whether you are configuring Desktop Screen Share for the first time, helping visitors navigate the lightweight GlanceGuest application, integrating our core features directly into your own software using the Desktop SDK, or hunting for a quick answer in our FAQs, all the resources you need are here. Explore the categories below to dive into the documentation. ## In This Section {% children description="true" /%} ================================================================= FILE: /users/glance-screen-share/troubleshooting ================================================================= Browse the categories below to find step-by-step solutions for the most common issues. If you still can't resolve your problem, contact [Glance Support](/users/account-management/contact/) for further assistance. ## In This Section {% children description="true" /%} ================================================================= FILE: /users/glance-screen-share/troubleshooting/troubleshooting_join ================================================================= ## I get an error that Glance can't be opened on Mac When I try to run the GlanceGuest application, I get this error: Mac warning that GlanceGuest cannot be opened To resolve this issue: 1. Go to **System Preferences** > **Security & Privacy** > **General**. 2. Click the **Open Anyway** button in the bottom-right corner to allow GlanceGuest to run.
System Preferences Open Anyway button ## When joining a session a viewer window does not appear Here are a few suggestions for the cause of your issue: * Your viewer window might be behind other windows. Look underneath your current window. * Your viewer window may not have opened. Look for a window with the message **Thank you for using Glance and click the link that says If you do not automatically join your session, click here**. ## The guest cannot find the Join Session page Your guest probably searched for your Glance address (name.glance.net) with Google or Yahoo!. Make sure your guest types your Glance address into their browser's address field. ## Do people viewing a session need to install any software? If you are joining to view a presentation, you can join instantly and no download is required. However, if the host is starting a session to view your screen, you will be prompted to download the Glance guest download. ## I was invited to a session as a guest, but I'm having trouble joining Make sure that your device meets Glance's [System Requirements](/users/account-management/system_requirements/). If you're still having trouble, contact Glance for assistance. ## How do I enable the browser's JavaScript to join a session? Glance works best when your browser's JavaScript is enabled. JavaScript is enabled by default, but if it has become disabled, you may see a message recommending that you re-enable it when joining a Glance session. How you enable JavaScript depends on what type of browser you are using. Ask your system administrator, or look for an Enable JavaScript checkbox in your browser's Options, Settings, or Security dialog. You can also search for JavaScript in your browser's Help documentation. ## The Viewer doesn't get past "Negotiating with firewall" or "Requesting data" A network security device is probably interfering with the session. Glance works through most network security devices, but some may have a policy that disrupts sessions. Your guests might not be able to connect or your session might pause or drop unexpectedly for a few seconds or even a few minutes after your guests connect. You might be able to start another session (or your guest might manually reconnect), only to see the new connection fail again in the same manner. If you or your guest connect through a corporate network and experience any of these symptoms, contact your respective IT department for help resolving the issue. Since TLS is more efficient than HTTPS, a company that blocks port 5501 might consider adding a rule to their firewall policy that allows outbound connections to those ports at the http://glance.net servers. ================================================================= FILE: /users/glance-screen-share/troubleshooting/troubleshooting_session ================================================================= ## I want to Screen Share with two monitors If you use 2 monitors, both monitors need to be set to the same scaling settings. If they are different, it may cause the guest's view of the screen to be truncated. ## Using a webcam during a session On a PC, power up your webcam and put it in preview mode so you can see yourself. Your guests will see you too. On a Mac, open the Photo Booth application. ### Showing a video during a session To show a video, all you have to do is play it. ### Video performance Don't forget that internet services used by small businesses often let you upload data only about 10% as fast as you can download. This can limit video performance to only a few frames per second. You can improve quality by playing the video inside a smaller window or by getting a faster upload speed. Some video players on PCs write directly into your video card's display memory, an operation that our solution might not detect. ## My session repeatedly drops when I am connected through my home office If your sessions repeatedly drop (especially if this happens some minutes into a session) and you connect through a home office router, make sure the router has the latest software. We have found that a surprising number of inexpensive home office routers shipped in recent years with buggy software. They often work fine for typical web browsing (which mostly downloads data), but intermittently fail when hosting a Glance session (which uploads heavy bursts of data). Check the manufacturer's support page to make sure you are using the newest version: Linksys, Netgear, D-Link, etc. Contact us if you need further assistance. ## My Glance Screen Share session suddenly ended Glance is like a phone call: either party can "hang up." The session ends when you click your Glance icon and choose **End Session** or when your last remaining guest closes the window showing your desktop. If a session ends unexpectedly, then either your network or your guest's network dropped its connection to our service. If you experience session drops with guests from various locations, the problem most likely resides inside your network. ### Troubleshooting options We have found that frequent network drops often can be traced to a weak wireless connection (which can fade or drop) or an inexpensive home office router that shipped with buggy software (like Linksys, D-Link, Netgear). If you are experiencing issues, try the following actions: * Make sure you are using the latest Glance software, which continuously monitors your internet connection and immediately attempts to re-establish communication whenever it detects a drop. * If you were on a wireless network, try using a wired connection instead. ## My video background blurring isn't working When doing a screen share session, older hardware may not have sufficient drivers to ensure that video background blurring is working. If a session is noted where the video is working and background blurring isn't happening, then you should attempt to update the camera firmware/drivers if any new versions are available. In addition, it may be necessary to update the computer firmware/BIOS to the latest version to make sure video blurring functions appropriately. ================================================================= FILE: /users/glance-screen-share/troubleshooting/troubleshooting_start ================================================================= ## Challenges with Connecting Typical connection issues include: * Firewall blocks the download * The guest cannot find the downloaded file * The guest chooses not to "run" the download * Security software prevents the guest from running the download * Guest lacks the privilege to install the download * Guest's security software quarantines the executable * Guest's corporate firewall blocks its connection Glance Screen Share employs multiple browser-based technologies and automatically selects the best one to use with each guest. Everyone connects quickly, sees virtually no UI that might confuse or distract them, and never finds unwanted icons left behind. To adjust guest connections: * Connect instantly (no download), usually with a general-purpose viewer. * Get a compact, high-performance viewer, which most first-time guests install in less than 15 seconds. In the first option, there is no download, install, security warning, or additional clicks. Guests connect instantly with their favorite browser on any PC, Mac, or Linux computer, smartphone (iPhone, Android), or tablet (iPad, Android). Glance Screen Share's general-purpose viewer runs inside the guest's browser, using AJAX technology. The device does not need Java or Flash, nor does the guest have to install a plug-in or download a custom app. Afterward, the session ends, and nothing is left behind. The second option lets hosts ensure that their guests enjoy the best possible viewing experience. As each guest joins the session, Glance Screen Share silently and automatically selects the best viewer technology to use. The various Glance Screen Share viewers download quickly (less than 1.5 MB) and set up in seconds, often without additional clicks. Viewers include: * Native (executable) viewer for Firefox, Chrome, or Edge on PCs. * Unsigned (running sandboxed) Java applet viewer for Java-enabled browsers on PCs and Macs. * Built-in native viewer for guests joining from a PC or Mac that already has the Glance client. * AJAX viewer for PCs, Macs, and any modern mobile device (smartphones and tablets). Should Glance Screen Share's best first choice fail, it automatically tries the second (or even third) choice. Glance Screen Share supports every technology needed to connect nearly any device, quickly and reliably. ## Glance was downloaded and installed, but the session won't start If you cannot start a session, check to make sure Glance (or Glance.exe) appears in your security software's list of allowed programs. Most third-party internet security programs are designed to prevent a new application on your computer from talking to the internet. A security program will usually prompt you the first time you start a Glance session. Tell it to Always Allow Glance access to the internet. You might try momentarily disabling the security software to see if the problem goes away. Contact your IT specialist or call Glance if you need assistance with configuring it. Common products that could interfere with your Glance Screen Share sessions include: * Norton™ Internet Security * Norton™ Antivirus * ZoneAlarm® Internet Security Suite * Kaspersky® Antivirus * AVG™ Anti-Virus * Google™ Web Accelerator ## On Windows, I get an error that says "Glance Is Already Running" On Windows, when launching the Glance Client, I get this error: Glance Is Already Running error message To resolve this issue: 1. Navigate to your Windows tray and find all instances of Glance:
Glance instances in Windows tray 2. Click on the **Gear** icon > **Advanced**, and select the option to **Exit Glance**.
Exit Glance from Advanced menu 3. Repeat this for each **G** icon you have. 4. Relaunch Glance from your applications menu. Whenever you want to use Glance moving forward, it will be available in your tray. Always launch Glance from your tray. ## I enter my credentials and click log in but nothing happens 1. Click on the **Gear** icon > **Advanced**, and verify "www.glance.net" is populated underneath **Glance Service**.
Glance Service URL verification ## The message "Glance is unable to connect securely" when starting a session If you try starting a session and get a message saying "Glance cannot connect securely...", there's a problem accepting our SSL certificate. To disable Glance's secure login feature, follow the steps below: ### For PC users 1. Click the **G** icon in your system tray. A menu is displayed. 2. Choose the **Settings** option. 3. Select the **Account** tab. 4. Place your pointer in the large blank space below the **Manage** button. 5. While holding down the Shift key on your keyboard, double-click your mouse. 6. A **Network information** section is displayed. Uncheck Secure login. 7. Click **OK**. ### For Mac users 1. Click the **G** icon in the Menu Bar (near your clock). A menu is displayed. 2. Choose the **Settings** option. 3. Select the **Account** tab. 4. In the **Network information** section, uncheck **Secure login**. 5. Close the Settings window. ## Desktop background vanishes when a Glance Screen Share session starts Many background designs are detailed, which creates data that Glance has to transmit. To speed up performance, Glance usually turns off your computer's background during a session. The background reappears when your Glance session ends. If you would prefer to keep your desktop background visible during sessions, follow these steps: 1. Click on the **G** icon. 2. Select **Settings**. 3. Click on the **Advanced** tab. 4. Uncheck **Hide desktop background**. ## Connecting through a corporate firewall or network security device Glance works through most network security devices. However, some may have a network policy that disrupts Glance sessions. Your guests might not be able to connect or your session might pause or drop unexpectedly - a few seconds or even a few minutes after your guests connect. You may be able to start another session (or your guest might manually reconnect), only to see the new connection fail again in the same manner. If you or your guest connect through a corporate network and experience any of these symptoms, contact your respective IT department for help resolving the issue. Since TLS is more efficient than HTTPS, a company that blocks port 5501 might consider adding a rule to their firewall policy that allows outbound connections to those ports at the http://glance.net servers. ## Issues Entering Login Information * If you are having issues entering login information or selecting text boxes in the login area, ensure your video drivers are up-to-date. * If your Cobrowse or Screen Share sessions freeze or don't display properly, check to see if you have the Intel Iris XE Display driver. You can update drivers using the instructions below. ### Update Drivers in Windows 1. In the search box on the taskbar, enter "device manager", then select **Device Manager**. 2. Select a category to see the names of devices, then right-click (or press and hold) the one you would like to update. 3. Select **Search automatically for updated driver software**. 4. Select **Update Driver**. ### Update Drivers in Windows 11 1. Download [this driver](https://downloadmirror.intel.com/751359/gfx_win_101.3790_101.2114.exe). 2. Restart your computer. 3. Restart Glance. ### Update Drivers in macOS 1. Click the Apple logo. 2. On the **Apple** menu, click **System Settings** (or **Software Update** on older versions). 3. If there is a macOS update available, you can install it. If there is a graphics driver update, it will be included in the macOS update. ================================================================= FILE: /users/glance-screen-share/user-guide/before-login ================================================================= Use the following instructions to make screen share available for both pre- and post-login scenarios. The examples on this page are macOS specific in Swift, but the concepts are similar in other platforms. ## Initialization After the application launches (most likely in `UIApplicationDelegate application:didFinishLaunchingWithOptions:` or the `UIViewController viewDidLoad` delegate method for the main view) the application should call `GlanceVisitor.initVisitor` without a visitor ID: ```swift let GLANCE_GROUP_ID : Int32 = 12345 // Replace the group ID number with your group ID. GlanceVisitor.initVisitor(GLANCE_GROUP_ID, token: "", name: "", email: "", phone: "") ``` Upon receiving `EventVisitorInitialized`, the screen share button should be made visible. ## UI If you are implementing your own custom UI, you must disable the Glance Default UI. After calling `initVisitor` the first time, the application calls: `GlanceVisitor.defaultUI(false);` ## Starting a Session The handler for the screen share button starts the session with a random key: `GlanceVisitor.startSession("GLANCE_KEYTYPE_RANDOM")` Upon receiving `EventConnectedToSession`, the key is retrieved from the event and displayed to the customer. ```swift case EventConnectedToSession: // Show any UI to indicate the session has started // event.properties includes the sessionKey which can be // displayed to the user to read to the agent myShowKeyMethod(event.properties["sessionkey"] as! String) break ``` The customer will verbally give the key to the agent. After the agent enters the key and connects, the application will receive `EventGuestCountChanged`. ## After Login After the customer logs in and is identified, the implementation uses the Glance Presence ("One-click Screen share") functionality. In addition, to support the case where the support agent is not on the correct customer record in the CRM, there is a manual verbal key fallback that works similarly to the pre-login case. ### Initialization After customer login, the application calls `GlanceVisitor.initVisitor` again with a visitor ID. The application must pass the same Glance Group ID used in the initial call above: ```swift GlanceVisitor.initVisitor(GLANCE_GROUP_ID, token: "", name: "", email: "", phone: "", visitorid: visitorid) ``` Upon receiving `EventVisitorInitialized` the application calls `GlancePresenceVisitor.connect`. If you are implementing your own custom Presence UI, disable the Glance default Presence UI. Example: ```swift switch event.code { case EventVisitorInitialized: DispatchQueue.main.async { GlancePresenceVisitor.connect() GlancePresenceVisitor.setDefaultUI(false) } break; ``` ### One-Click Session Start The agent is notified when the customer is online and may start a screen sharing session. Typically, a button will light up on the CRM record in the agent's browser. When the agent clicks the button, a signal is relayed to the SDK where an `EventPresenceShowTerms` event fires. If you have a custom Presence UI, when `EventPresenceShowTerms` is received, the application will show any terms and conditions and display buttons for the customer to Accept or Decline screen sharing. When terms and conditions are presented to the customer, the application should signal the agent by calling: ```swift GlancePresenceVisitor.signalAgent("terms", map: ["status": "displayed"]) ``` If the customer declines screen sharing, the application notifies the agent by calling: ```swift GlancePresenceVisitor.signalAgent("terms", map: ["status": "declined"]) ``` If the customer accepts screen sharing, the application notifies the agent and starts the session by calling `GlanceVisitor.startSession` with NO arguments: ```swift GlancePresenceVisitor.signalAgent("terms", map: ["status": "accepted"]) GlanceVisitor.startSession() ``` Calling `startSession` with no arguments starts a session using the visitor ID supplied in `initVisitor`. The agent will be waiting for a session with this key. The same session events as noted above are posted, specifically, `EventSessionConnected` when the application connects to the server and `EventGuestCountChanged` when the agent connects to the session. Unlike the pre-login case above, or manual case below, the application will not show the session key to the customer on `EventSessionConnected`. ### Manual Session Start Although the visitor may be logged in and connected to the Presence service, the agent may be on the wrong customer record in the CRM or have some other difficulty initiating the session automatically. As a fallback for this case, the application can also contain a screen share button that the agent may direct the customer to tap. The button handler for the screen share button starts a session with a random key by calling: ```swift GlanceVisitor.startSession("GLANCE_KEYTYPE_RANDOM") ``` This is the same call as in the pre-login case; manually tapping the screen share button should always invoke this method. Again, as in the pre-login case, on receiving `EventSessionConnected` the application must display the random key retrieved from the event. The application should keep track of whether a session was manually started or not to decide whether or not to show the key to the customer. The application should call `PresenceVisitor.disconnect()` when the user logs out or when exiting. The SDK automatically manages the presence connection when the application goes into the background and when it is reactivated; the application should not attempt to handle this with calls to disconnect and connect. ================================================================= FILE: /users/glance-screen-share/user-guide ================================================================= This section provides developers with comprehensive documentation for integrating Glance Screen Share functionality directly into your desktop applications. Browse the pages below to explore the core capabilities of the Glance Desktop SDK, learn how to configure One-Click Connect and Screen Share APIs, and find step-by-step instructions for implementing both manual and automated session workflows. ## In This Section {% children description="true" /%} ================================================================= FILE: /users/glance-screen-share/user-guide/presence-sdk ================================================================= 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 `Glance.PresenceVisitor`. 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 exits the application. You should make all `PresenceVisitor` API calls from the main thread. ## Initialization See the [Initialization](/users/glance-screen-share/user-guide/quickstart/#initialization) 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 `StartSession()`. * The application should wait for `EventVisitorInitialized` to fire before calling `Glance.PresenceVisitor.connect`. ## Connecting to Presence ### GlancePresenceVisitor connect(pushNotifications) 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 `GlancePresenceVisitor` methods. The application may also receive `EventPresenceConnectFail` or `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** | | --- | --- | --- | | `visitorerror`
e.g. no gserver configured for sdk version | "code":"conndrop"
"msg":"Connect failed","params": | `onvisitorerror` | | `visitorsessionstart` | | `onvisitorsessionstart` | | `visitorsessionend` | "reason":error_message | `onvisitorsessionend` | | `visibility` | hidden (background)
visible (foreground) | `onvisibility` | ## GlancePresenceVisitor disconnect To disconnect from the Presence service, typically on logout or application exit, the application should call `Glance.PresenceVisitor.disconnect`.
Warning
If the connection to the presence service drops, the Glance SDK automatically reconnects.
## Presence Events | **Event** | **Type** | **Description** | | --- | --- | --- | | **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 `EventPresenceConnected` once reconnected.

The event properties include:
- reason: Diagnostic text message suitable for logging. Applications can continue to call `presence()` and signal methods anyway, as those methods will retry the connection. | | **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.

**Properties:**
- 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 `presence`, `signalAgent`, or `signalVisibility` is called. | | **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(mapdata) 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. Calls to `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 `EventInvalidParameter` event. 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 `signalVisibility`. ### GlancePresenceVisitor SignalVisibility(visible) 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 `connect` pass `false` to `GlancePresenceVisitor.setDefaultUI`. Then handle the `EventPresenceShowTerms` event. In your event handing you should: 1. Display your terms and conditions and options to accept (start screen share) or decline. 2. Notify the agent terms have been displayed by calling `Glance.PresenceVisitor.signalAgent("terms", {"status":"displayed"})`. 3. Notify the agent of accept or decline by calling `Glance.PresenceVisitor.signalAgent("terms", {"status":"accepted"})`. 4. On accepting, call `Glance.Visitor.StartSession` with `StartParams` having `presenceStart` set to `true`. Example: ================================================================= FILE: /users/glance-screen-share/user-guide/quickstart ================================================================= The Glance Desktop SDK allows customers to integrate Glance functionality into desktop applications. Glance SDK features include: * [Screen share / Application share](/users/glance-screen-share/user-guide/screenshare-sdk/) * [One-Click Connect](/users/glance-screen-share/user-guide/presence-sdk/#one-click-connect) * Viewing video or applications shared by an Agent ## Quick Start Platform-specific integration instructions are available in the [glance-networks](https://gitlab.com/glance-sdk-public) GitLab repository. There is a separate repository for each platform, each with its own platform-specific quick-start README file and sample code. ## Supported Platforms The Glance Desktop SDK is implemented on Windows and macOS. One-Click Connect functionality is in alpha on Windows and not yet implemented on macOS. ## Logging The Glance SDK can optionally log information which can be useful during debugging. The Glance SDK log level can be set to a value from 1-5 for increasing detail. The SDKs will generate log messages at different levels of verbosity (levels 0 through 5), higher numbers are more verbose: * 0 = CRITICAL * 1 = SERIOUS * 2 = ABNORMAL * 3 = INTERESTING * 4 = VERBOSE * 5 = DEBUG The default is usually 2 (ABNORMAL). Control of level of logging, the log destination, and some details vary by platform. ### Windows * Registry setting (versions 5 and below): `HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\GlanceNetworks\Log\Levels\Glance` controls log level. * Registry setting (version 6+): `HKEY_LOCAL_MACHINE\SOFTWARE\GlanceNetworks\Log\Levels\Glance` controls log level. * Logs are written to `%UserProfile%\AppData\Local\Glance`. ### macOS On macOS, logs are also in daily files in `~/Library/Logs/`. It is often convenient to examine logs using the Console application. Execute the following command line to set the log level to VERBOSE for the SDK or clients: `defaults write com.glancenetworks.Log.Levels Glance -int 4` ## Calling SDK Functions and Handling Events The specific mechanics of calling SDK functions and handling events are covered in the platform-specific README files in the [glance-networks](https://gitlab.com/glance-sdk-public) repository. However, there are some general guidelines that are common to all platforms: * All methods must be called on the main (UI) thread. * All events are received on an Event Thread. If an application needs to call an SDK method in response to an event, it must delegate that functionality to the main thread. The platform-specific README files have examples showing how to do this on each platform.
Note
Syntax varies between platforms, but the SDK functions and events are the same. References to SDK functions in this document are meant to be generic.
### Events Events have the following attributes: | **Event** | **Attributes** | | --- | --- | | type | Informational, Warning, Error, Assert | | code | An event code, for example `EventConnectedToSession` | | message | An informational message (English only), suitable for logging | | properties | A collection of properties specific to each event with additional data | Although an application may need to implement specific handling for certain events, a good practice is to establish a default behavior for each event type: | **Event** | **Default Behavior** | | --- | --- | | Informational | Something of interest has occurred, such as an agent has joined a screen share session. | | Warning | A problem has occurred and the SDK is attempting to address it. For example, if connectivity is lost the SDK fires `EventConnectionWarning`. If connectivity is restored, `EventClearWarning` fires. The application may choose to reflect the warning state in the UI, but it is not recommended that user action should be required to dismiss the warning. | | Error | An operation has failed, for example, a session failed to start. | | Assert | The API has been used incorrectly. | ## Initialization You must call `GlanceVisitor.init` before using the SDK. Parameters to `init` are: | **Parameter** | **Description** | | --- | --- | | Group ID | Group ID provided by Glance. The group ID must be the same on all calls to init. | | Token | Reserved for future use | | Name | Visitor name (optional). If provided, this information will be stored as session metadata. Up to 63 characters. | | Email | Visitor email (optional). Up to 127 characters. | | Phone | Visitor phone (optional). Up to 31 characters. | | Visitor ID | Unique ID of an authenticated user (optional). A Visitor ID is a string of up to 64 characters, alphanumeric, and dash. The Visitor ID is typically an account or user id associated with an authenticated user. | `init` is typically called: * On application startup. `init` should be called without Visitor information if Visitor identity is unknown. * When a user authenticates. `init` should be called with Visitor information. The `GlancePresenceVisitor` API can only be used after Visitor information has been supplied in a call to `init`. Calling `init` multiple times with different visitor IDs is not supported. After the visitor ID is set in a call to `init`, it cannot be changed. `GlanceVisitor.init` issues a web service request to look up visitor settings which are needed in order to connect to presence. The application should wait for an `EventVisitorInitialized` event before making any other API calls. ## Gesturing During the session, the agent can: * Move and Indicate - with their cursor (shows as a colored cursor for the presenter). * Point - Click for a radiating indication, which will radiate for ~5 seconds. * Gesture - Click-drag a rectangle for indicating an area. To enable gesturing: 1. Log in to **Account Management** > **Settings** tab > **User Privileges and Settings**. 2. Under **View a guest's screen**, locate **Agent Annotation**. 3. Selecting the checkbox will turn on Agent gesturing, Point, and Move and Indicate. ================================================================= FILE: /users/glance-screen-share/user-guide/screenshare-sdk ================================================================= The Screen Share API is implemented on the GlanceVisitor class, and can be used to start and control screen Share sessions. ## Starting and Stopping a Session Call one of the `StartSession` methods to start a screen Share session. If the session successfully starts, an `EventConnectedToSession` event will fire. If the session fails to start, `EventStartSessionFailed` will fire. If using the Default UI, calling `StartSession` will display a message box with a link to terms and conditions before actually starting the session. If using One-Click Connect, `StartSession` is called automatically by the Glance SDK. See [One-Click Connect](/users/glance-screen-share/user-guide/presence-sdk/). Every screen share session has a unique session key which will be required for the Agent to view the session. A session key may be a Visitor ID, a unique key randomly generated by Glance, or a key specified by the application: | **Session Key** | **Description** | | --- | --- | | Visitor ID | When using a Visitor ID as session key, an Agent using a CRM that is integrated with Glance can view the session without having to exchange the session key over the phone. | | Random Key | Glance can optionally generate a unique random key. A random key will include digits only. The length of the random key is a configurable group setting. The application will typically display the session key in the user interface, to be read to the Agent over the phone. | | Specified Key | The application can specify a key to use for the session. A session key has the same length and character restrictions as Visitor ID. | ### void StartSession() Start a Glance screen share session to show the application. If a Visitor ID has been specified in a call to `init`, Glance will use that Visitor ID as the session key. If no Visitor ID has been specified in a call to `init`, Glance will choose a random session key. If the session successfully starts, the session key will be included on the properties of the `EventConnectedToSession` event. Calling `StartSession` while already in a session results in an `EventInvalidState` event. #### void StartSession(String sessionKey) Start a Glance screen share session with the specified session key. Pass `GLANCE_KEYTYPE_RANDOM` to start a session with a random key. #### void StartSession(StartParams sp) Start a Glance session with the specified parameters. ### StartParams Parameters which specify how a session should start. | **Parameter** | **Description** | | --- | --- | | **mainCallId** | If this session is a "child session" of another session, pass the numeric call id of the parent session in `mainCallId`. Passing a `mainCallId` associates the sessions in the Glance database. Pass 0 (default) if the session being started is the main session. | | **maxGuests** | Maximum number of guests who may join the session. Pass 0 (default) for no limit, other than the limit imposed by the group settings and subscriptions. | | **key** | The session key, or `GLANCE_KEYTYPE_RANDOM` to have Glance choose a random key. | | **displayParams** | See `DisplayParams` below | | **forceTunnel** | Force the session to use a tunneling protocol. Specify false (default) to have the Glance SDK automatically fall back to tunneling if and only if the TCP socket protocol fails to connect. | | **reportErrors** | Pass `true` if the Glance SDK should record errors to the session record. Pass `false` (default) to only log errors to a local log. | | **persist** | Pass `true` if the session should continue even if the Agent leaves the session. Pass `false` (default) if the session should automatically end when the last Agent leaves the session. | | **paused** | Session should start in a paused (hidden) state. Applies to "show" sessions. | | **presenceStart** | Session is being started via presence invoke. | #### Unused parameters The following properties of `StartParams` are not used or not applicable to the GlanceVisitor API: * `show` * `guestInfoFlags` * `encrypt` * `requestRC` * `instantJoin` * `viewerCloseable` * `DisplayParams` ### DisplayParams Parameters that specify what to show when the session starts. `DisplayParams` consists of: | **Parameter** | **Description** | | --- | --- | | `displayName` | Controls what display, device, or application is shown. By default, the Glance SDK displays the current application. To show a whole monitor or device, call `GetDisplayName` to get the names of currently connected monitors and devices, and pass the return value as `displayName`. Pass `main` as display name in order to show the user's primary monitor. To show a specific application other than the current application, pass `Applications` for `displayName` and `useapplication` to specify the application to show. | | `scale` | A floating point numeric scale factor for the screen capture. A scale factor of 1.0 (default) captures the screen at full resolution. `scale` is typically used when showing a device or webcam. | | `captureWidth` / `captureHeight` | Similar to `scale`, setting `captureWidth` and `captureHeight` scales the captured display to fit the specified capture width and height. | | `video` | True to share using `video mode`, appropriate when sharing a device or webcam at low resolution. Only set `video` to `true` if sharing a display of type `video` as returned by `GetDisplayType`. | | `application` | | ### EndSession() End the session. The application should wait for `EventSessionEnded` before attempting to start a new session or exiting the application. The Screen Share API is implemented on the `GlanceVisitor` class, and can be used to control Screen Share sessions. ## Controlling a Screen Share Session ### GetSessionInfo Returns information about the currently running session, if any. `SessionInfo` includes: | Name | **Description** | | --- | --- | | `callId` | The id of this call. Pass this value as `mainCallId` when starting a child session of this session. If there is no session running, `callid` will be 0. | | `nGuests` | Number of guests (Agents) currently in the session | | `glanceAddress` | Not used for this type of session | | `key` | Session key | | `hostName` | Not used for Visitor Sessions | | `rcRequested` | Not used for Visitor Sessions | | `isGuest` | False for Visitor Sessions | | `isReverse` | False for Visitor Sessions | | `rcEnabled` | True if remote control is currently enabled | | `sbEnabled` | True if showback is currently enabled | | `gesturesEnabled` | True if gestures are enabled | | `isPaused` | True if the session is paused | | `isConnected` | True if the participant is currently connected | | `isShowing` | True if currently showing | | `isViewing` | True if currently viewing | | `displayName` | Name of the display currently being shown | ### Pause(pause) If pause is true, pause the session so that Agents viewing the session see only a white screen with an informational message. If pause is false, resume the session. ### EnableRC(enable) If enable is true, enable remote control so that the Agent can control the Visitor's desktop. If enable is false, disables remote control. Agent must have Remote Control privileges. Desktop only. ### ShowDisplay(displayParams) Show the monitor, application, or device indicated in `displayParams`. See additional information on [DisplayParams](#displayparams). ### LeaveChildSession(sessionType) Close the child session specified by `sessionType`. ## Displays Each monitor or device connected to the Visitor's computer is a "display" which can be shared with the agent. Displays can be referenced by index, a number ranging from 0 to GetDisplayCount() - 1. ### GetDisplayCount() Returns the total number of connected monitors, devices, and webcams that are available for screen share. ### GetMainMonitor() Returns the index of the user's primary monitor. ### IdentifyMonitors() Draw a number on each connected monitor so that the user can identify which number corresponds to which monitor. ### GetDisplayType(n) Returns the type of display (Monitor, Device) at index n. ### GetDisplayName(n) Returns the name of the display at index n, suitable for passing as the `displayName` in the `DisplayParams`. Note that display index can change as devices or monitors are connected or disconnected from the Visitor's computer. ## Default UI Configuration **termsUrl** ## Child Sessions During a screen share session, the Agent may choose to show the Visitor the Agent's webcam, screen, or an application. These Agent initiated sessions are "child sessions" of the original screen share session; they are associated together in the session metadata, and ending the parent session ends all child sessions. The Glance SDK notifies the application about events related to child sessions by firing events `EventChildSessionStarted`, `EventChildSessionEnded`, `EventJoinChildSessionFailed`. The Glance SDK automatically opens a viewer to view child sessions, so the application is not required to take action to handle these events. The Agent side tags each child session with a session type. The Glance client tags agent video sessions with session type "agentVideo", browser HD video sessions have type "agentVideoHD". ## Configuring the Viewer for Child Video Sessions By default, the Glance SDK opens a child session viewer in a new floating window. Applications may use `SetVideoViewerContext()` to set a ViewerContext in order to embed a child session viewer in an existing application window. ## HD Agent Video Child Sessions Agents on Chrome browsers can start HD Agent Video sessions. The Mac SDK will display HD video using a web view. The Windows SDK does not have built-in functionality for displaying HD video, however, if the application includes an embedded browser (such as the Chromium Embedded Framework or the Edge WebView2 control) it may handle events from the SDK to display the child video session in the embedded browser. Please contact Glance for details and sample code. ## Screen Share Session Events The following events may be fired while using the GlanceVisitor API. | **Event** | **Type** | **Description** | | --- | --- | --- | | **EventInvalidParameter** | Assert | A parameter passed to an SDK method is not valid. | | **EventInvalidState** | Assert | A method was called and the application was in an invalid state. | | **EventVisitorInitialized** | Info | Visitor initialization has completed. | | **EventPrivilegeViolation** | Error | The application attempted to carry out an operation not allowed by the group settings. | | **EventUpgradeAvailable** | Info | An upgrade to the Glance SDK is available. | | **EventUpgradeRequired** | Error | The Glance SDK must be upgraded in order to connect to the Glance service. | | **EventCompositionDisabled** | Info | Windows Desktop Composition was disabled in order to improve screen capture performance on Windows. | | **EventConnectedToSession** | Info | The Glance SDK successfully connected to the session. | | **EventSwitchingToView** | Info | The Agent is switching to show and the application is switching to view the Agent's session. | | **EventStartSessionFailed** | Error | StartSession was called and the session failed to start. EventStartSessionFailed fires if the SDK is unable to connect to the internet, or if there is a service outage or group configuration error.

**Properties:** The "error" property will contain an error code if the problem was an inability to connect to the internet. | | **EventSessionEnded** | Info | The session and any child sessions have all ended.

**Properties:** The "reason" property will be one of the following codes:
• **SessionEndReasonThisSide:** The session was intentionally ended by a call to EndSession()
• **SessionEndReasonOtherSide:** The session was ended by the Agent
• **SessionEndReasonCantConnect:** The session ended because the Glance SDK was never able to connect to the Glance screen share service.
• **SessionEndReasonConnDrop:** The session ended because the connection dropped and could not be re-established.
• **SessionEndReasonKilled:** The session was killed due to too many simultaneous sessions.
• **SessionEndTimedout:** The session ended because no Agent joined.
• **SessionEndReasonError:** The session ended due to an unexpected error. | | **EventTunneling** | Info | The Glance SDK was unable to connect using a TCP socket, typically due to a firewall restriction, and is connected to the Glance Screen Share Service using a tunneling protocol. No action is needed on the part of the application to handle this event, but the session performance may be slightly degraded. | | **EventConnectionWarning** | Warning | The connection has dropped. The Glance SDK will attempt to automatically reconnect for up to one minute. If the reconnect attempt succeeds, EventClearWarning fires. Otherwise the session ends with EventSessionEnded. | | **EventClearWarning** | Info | The dropped connection has been reestablished. | | **EventGuestCountChange** | Info | An Agent has joined or left the session. | | **EventRCDisabled** | Info | There was an attempt to allow remote control, but remote control is not enabled for the account. | | **EventDeviceDisconnected** | Info | The device being shared has been disconnected from the Visitor's computer. | | **EventDeviceReconnected** | Info | The device being shared has been reconnected. | | **EventException** | Error | An unexpected error has occurred. | | **EventScreenshareInvitation** | | *Not used with GlanceVisitor API* | | **EventMessageReceived** | Info | The Agent sent a custom message through the screen share session.

**Properties:** The message properties are determined by the Agent client sending the message. | | **EventChildSessionStarted** | Info | A child session has started. The Glance SDK automatically joins child sessions.

**Properties:**
• **sessionkey:** The session key of the child session
• **sessiontype:** The session type specified by the Agent, for example "agentVideo"
• **timestamp:** *Internal use only*
• **username:** The Glance username for the Agent | | **EventJoinChildSessionFailed** | Info | The Visitor received an invitation to join a child session but was unable to join it. | ================================================================= FILE: /users =================================================================

Users & Administrators

Essential guides, configuration settings, and best practices for agents using Glance and administrators managing the platform.

================================================================= FILE: /users/mobile-camera ================================================================= Mobile Camera Share allows agents and enterprise knowledge workers to quickly see what your customers are looking at - without having to download a mobile application. This greatly speeds issue resolution, increases customer satisfaction, eliminates mobile application life cycle management, and saves your enterprise money by avoiding site visits. When a customer is having difficulty troubleshooting a physical device like a refrigerator, a network router, or complicated machinery, the agent simply sends the customer an SMS invitation to view their mobile camera. The customer taps the link in the text message, and is instantly showing a live video to the agent. Once connected, the agent sees what the customer sees and can easily guide the customer to a resolution. Mobile Camera sharing is instant and the session launches from the customer's mobile browser. The solution supports the default browsers on iOS (Safari) and Android (Chrome) devices. A list of supported mobile OS versions you can use to engage in Camera Sharing sessions is available on the [System Requirements](/users/account-management/system_requirements/#operating-systems) page. To enable this feature, [Contact Glance](/users/account-management/contact/). ## CRM Integration Options You can integrate SMS Camera Share into a Customer Relationship Management (CRM) system, like [Salesforce](#salesforce-implementation). If you don't use a CRM, this functionality is also available as a [standalone web-based offering](#using-mobile-camera-share-from-the-web). ## Customizing Mobile Camera Share You can customize the join and end pages for Mobile Camera Share. 1. Log in at [www.glance.net/login](https://www.glance.net/login). 2. From My Account, click the **Settings** tab. 3. Under Branding, click on **Manage your page customization settings**. 4. Scroll to the **Mobile SMS Camera Share** section. 5. For **Background page**, enter a URL of the page to display in the background while the mobile device is prompting the user to show their camera. 6. For **Camera end page**, enter a URL of the page to direct customers when the session ends. ## Salesforce Implementation Follow these steps to implement mobile camera share, and send SMS session invitations from Salesforce. **Before you begin, you need:** * The Glance Salesforce package: [version 3.3 or later](/developer/integrations/salesforce/install_sf/#download-the-glance-for-salesforce-application). * The permission **join sessions started by customers to show their cameras on mobile devices**. * Access to a Glance Group configured with Mobile Camera Share. [Contact Glance](/users/account-management/contact/) to enable this feature. To configure mobile camera share: 1. From Salesforce, in the app launcher (9-dot menu), search for Glance, and select **Glance Company Settings**. 2. Click **Edit**. 3. Scroll to the **Single Sign On** section and verify you have **SSO** selected. If you do not, select the **SSO** checkbox, and add your API key from the Glance Admin Portal. 4. Scroll to the **Glance Buttons** section. 5. Select the **Video** checkbox for the Salesforce records where you want to send SMS session invitations. 6. Scroll to the **Profile Settings** section. 7. For each profile you want to configure access for, select **Video (SMS)**. 8. Under **Mobile Video** choose a default camera for the visitor. 9. At the top of the page, click **Save**. 10. Go to a record type where you have enabled Mobile Camera Share, like a Contact or Case. If you are solely starting mobile camera share sessions, you need to add the [Glance Component to the record](/developer/integrations/salesforce/sf_buttons/). If you already have the Glance Component present on the record, there is nothing you need to do. 11. The **Video SMS** button is now present on the record. 12. To send an SMS invitation, enter the phone number in the phone field in Salesforce. 13. Click **Video (SMS)** to send. 14. The visitor receives a text message asking to show their camera. 15. The visitor clicks the link in the text and accepts. 16. The agent is now viewing the visitor's mobile camera. Salesforce Mobile Camera Share viewer ## Using Mobile Camera Share from the Web **Before you begin, you need:** * Access to a Glance Group configured with Mobile Camera Share. [Contact Glance](/users/account-management/contact/) to enable this feature. * The permission **Join Mobile Camera Share sessions**. SMS Agent Join Page on the Web To start a session: 1. Go to the [SMS Agent Join Page](https://www.glance.net/agentjoin/AgentJoin.aspx?mode=smsinvitation). 2. Log in with your Glance Address. 3. Enter the customer's mobile phone number and click **Video SMS**. 4. On the mobile device, click the link in the text to start the video. ## Troubleshooting **Why does my camera zoom when I click the button to flip the camera?** * Many mobile devices now have multiple back cameras and sometimes multiple front cameras. The button will cycle through the cameras, so it may take a few taps to get the camera you need. ## FAQ * **Question:** Does Glance retain the customer's phone number or just pass it to Twilio? * **Answer:** Glance does not retain any phone numbers. * **Question:** How long does Twilio retain customer's phone numbers? * **Answer:** Twilio stores phone numbers based on their retention policy outlined [here](https://support.twilio.com/hc/en-us/articles/223181008-Twilio-SMS-message-and-traffic-storage). ================================================================= FILE: /users/portal/access_log ================================================================= The **Access Log** in the Portal records all activity that occurs within the Portal and within the Glance backend settings for a group. To view the **Access Log**, log in to the Portal and click **Access Log** in the left navigation panel. Input the **Start date** and **End date** for the activities to review, then click the green **Go** button. Portal access log date search * The **Timestamp** column displays when the activity occurred. * The **IP Address** column displays the IP address from where the activity occurred. * The **Actor** column displays the user responsible for the activity. * The **Operation** column displays where the activity occurred and the type of action taken. * The **Subject** column displays the user impacted by the activity. This name will default to the user responsible for the activity if it impacts the entire group. * The **Detail** column displays additional information regarding the activity. Click the caret next to the magnifying glass icon to search for specific activities by user or operation. Portal access log specific search Click the caret next to the **Timestamp** column to view additional details about the activity. Portal access log timestamp details Click the blue **Export** button to download a CSV file containing the results. ================================================================= FILE: /users/portal/advanced ================================================================= The Advanced page, located in the Settings section, allows the user to configure additional settings for Cobrowse. Glance Portal Advanced settings page **Cobrowse Script Version (staging & production)** Select which version of the Cobrowse script is used during a Cobrowse session. **Send agent info to visitor** Enabling this setting allows the visitor to see the agent's name, title, partner user ID, and Glance Address in the agent events. **Agent CSS (staging & production)** Agent CSS allows you to quickly fix specific pages or repeated elements with similar classes. Enter any CSS changes needed to ensure the content on the visitor's screen accurately renders for the agent (usually used for fonts or masking elements). **Session Key Length** Set the length of the session key for a Cobrowse or Screen Share session. The default is four characters. **Session Time Limit** Set a maximum time limit (in minutes) for how long a Screen Share session can last. **Parent Page Origins to iFrame Visitor Viewer** Used when launching the visitor viewer from an external system (such as Salesforce). Enter the URL where the join page and visitor viewer will be embedded (iframed). **Parent Page Origins to iFrame Agent Viewer** Used when launching the agent viewer from an external system (such as Salesforce). Enter the URL where the join page and agent viewer will be embedded (iframed). **Agent Viewer Events Target Domains** This setting determines which hostnames are allowed to receive session events (e.g., session ended) posted from the Glance Viewer. You may use a wildcard (*) to allow all hostnames, but for security reasons, it is strongly recommended to restrict this to trusted domains only.
Note
The wildcard may be used in a comma-separated list of domains to support both SAML authentication and the posting of events to all hostnames.
**Locations for Shareable Documents (CSP connect-src)** Enter the URLs for shareable documents (e.g., PDFs) that are housed on external platforms. **Locations for Media Sources (CSP media-src)** Enter the URLs for media sources (e.g., iframed videos) that are housed on external platforms. ================================================================= FILE: /users/portal/agent_assist ================================================================= The Agent Assist page, located in the Settings section, allows users to configure Restricted Editing and Navigation Assist. ## Restricted Editing Restricted Editing configuration in Glance Portal Restricted Editing provides the ability for the agent to request control of the visitor's browser interface during the session. To configure which fields the agent can control during a Cobrowse session: 1. Click the **New** button. 2. In the **Selector** field, enter the CSS selectors of the UI elements you want agents to control. 3. Click **Create**. 4. Click the **Publish Restricted Editing** button in the upper-right corner. ## Navigation Assist Navigation Assist configuration in Glance Portal Navigation Assist allows the agent to navigate to a URL on the visitor's behalf by clicking on a bookmark within the agent viewer. To configure which URLs the agent can navigate to during a Cobrowse session: 1. Click the **New** button. 2. Enter a URL Title and the website URL, then select the **Active** checkbox. 3. Click **Create**. 4. Click the **Publish Navigation** button in the upper-right corner.
Warning
The destination URL must contain the Cobrowse script tag in order for the agent to follow along. If the URL is on a new domain, it may also need to be added to the Cross Domain Cobrowse section.
================================================================= FILE: /users/portal/appearance ================================================================= The **Appearance** section allows administrators to customize the look, feel, and language of the Cobrowse experience. From this section, you can modify everything from brand colors and custom fonts to widget styling and localized text. ## Brand Pages The **Brand Pages** section is found within the **Experience** section and allows administrators to customize Cobrowse join and start pages. ### Colors Brand Pages colors configuration You can customize the color of the following UI elements by selecting the hex value next to the element: * **Text** - Updates the text color found directly beneath the header. * **Header text** - Updates the text color found within the header. * **Header background** - Updates the background color of the header. * **Button text** - Updates the color of the text within the button. * **Button background** - Updates the background color of the button. * **Link** - Updates the link color. ### Branding Brand Pages branding configuration You can customize the Logo and Font used on the **Branding** tab. * **Logo URL** - Enter an image URL to update the logo displayed in the header. * **Font Family** - Select a font from the dropdown menu to update the font. * **Font Source URL** - Enter a font URL to use a custom font. ### Settings Brand Pages settings configuration You can further customize the join page and the guest join page from the **Settings** tab. * **Preface text** - Add an additional row of text directly beneath the header. * **Guest join header** - Displays the header on the guest join page if enabled. * **Guest field** - Select from the dropdown to determine what information is required when a guest joins. Options include Optional, Hidden, and Required. * **Guest name** - Require the guest to enter their name when joining. * **Guest phone** - Require the guest to enter their phone number when joining. * **Guest email** - Require the guest to enter their email address when joining. ## Resource Library Glance Portal Resource Library Upload and manage image and font files in the **Resource Library**. Once uploaded, they can be referenced throughout the **Appearance** section. ## Theme The **Theme** page is found within the **Cobrowse** section and allows administrators to customize the widgets that are displayed during a Cobrowse session. ### Colors Theme colors configuration Choose the colors for the widget bar, buttons, borders, backgrounds, and gesturing. You can customize the color of the following UI elements by selecting the hex value next to the element: * **Primary** - The primary background color used in the widget bar, action buttons, session mode, and links. * **Brand Color** - The color used on buttons, the session code, and headers. * **Secondary** - The background color for secondary buttons such as decline, cancel, or end. * **Focus** - The border color used to indicate selectable or tabbed items for buttons and links. * **Text** - The primary text color used within widgets. * **Active session border** - The border color of a browser being shared during a session. * **Agent assist border** - The border color of a browser being shared while agent assist is active. * **Agent gesture** - The border color of the boxes drawn by an agent during gesturing. * **Background color** - The background color of the widgets. ### Branding Theme branding configuration The **Branding** section allows you to customize the logo and font displayed on the modals. You can also customize the cursor display for the agent. * **Logo icon** - Enter the URL where the logo icon is stored. The image must be in SVG or PNG format. This logo will be displayed on the Showing Page widget. * **Agent Cursor** - Enter a URL where the cursor icon is stored. The image must be in SVG or PNG format. * **Font Family** - Select a font from the dropdown menu to update the font. * **Font Source URL** - Enter a font URL to use a custom font. ### Advanced Styling Theme advanced styling configuration The **Advanced Styling** section allows you to modify widget styles and positions. CSS files can be imported using the **CSS Imports** section, or CSS can be modified directly using the **CSS Editor** section. ## Localization The **Localization** page is found within the **Cobrowse** section and allows administrators to designate the languages and text used during a Cobrowse session. ### Languages The **Languages** section allows you to customize which languages are enabled within the widget. You are also able to make bulk updates to the text used within the modals by updating JSON files. The following languages are supported by Glance: * English * French * French Canadian * German * Italian * Japanese * Portuguese Brazilian * Spanish * Spanish Mexican * Spanish US **Enabled Language** Select the **Enabled** option next to each language that you wish to support. **Default Language** Click the **Default** option next to a language to set it as the default language. #### Language Hierarchy When the Cobrowse session first starts, Glance will check the `lang` attribute on the `` tag of the page. 1. If the `lang` attribute is set to one of the enabled languages, that language will be used. 2. If there is no `lang` attribute, or the `lang` attribute specifies a language not enabled for Cobrowse, Glance checks the language setting in the visitor's browser. If the browser is set to a language enabled for Cobrowse, that language will be used. 3. If neither the language specified by the `lang` attribute nor the visitor's browser is an exact match of any of the languages enabled for the group, the Cobrowse widget will display in an enabled language (if there are any) that shares the same main language code. It bases this first on the HTML language attribute, then the browser language setting. For example, if the visitor's browser is set for Spanish (`es`) but the group has only enabled Mexican Spanish (`es-mx`), the widget will display using the strings set for Mexican Spanish, and vice versa. 4. If none of the above are applicable, the customer's default language will be used. #### Download a Language File A language file can be downloaded in order to make bulk updates to the text within the modals. Complete the following steps to download, edit, and re-upload a language file: 1. Click the **ellipsis (...)** next to the desired language and choose **Download File**. 2. The file will download through your browser.
Download language file option 3. Save the file to your local drive and open it using a text editor.
JSON language file in a text editor 4. Make the desired changes to the JSON file. 5. Save the file as `VisitorText_[groupid]_language_S.json` (i.e., English Language = `VisitorText_12345_en_S.json`) when your changes are complete.
Note
The group ID must be changed to your actual ID when saving the file.
6. Click the **ellipsis (...)** next to the language and choose **Upload edited file**. 7. Drag your updated file into the modal and click the **Upload** button.
Upload edited language file modal ### Text Portal Text customization section The **Text** section allows you to modify individual segments of text within the modals. #### Editing Language The **Editing Language** dropdown allows you to select the language to modify. The languages available in the dropdown are based on the languages enabled within the **Languages** tab. #### Category The **Category** buttons allow you to select which part of the session you would like to modify. Click on a category, and the correlating text options will display below. Sessions are broken down into the following categories: * Start Session * In Session * Inquiries * Status Indicators * Camera Messaging * Document Sharing ================================================================= FILE: /users/portal/camera_share ================================================================= The **Camera Share** page, located in the **Settings** section, allows users to configure SMS Camera Share settings for their organization. Camera Share Glance Portal ## Configuration Settings | Setting | Description | | :--- | :--- | | **Message template** | Update which parameters are included in the text message and in which order. Click the tooltip in the UI for a list of available parameters. | | **Target URL template** | The specific URL included in the text message that visitors tap to join the session. | | **Message note** | The custom text note included alongside the link in the SMS message. | | **From phone number** | The designated phone number the text message is sent from. | | **Twilio alphanumeric ID** | The company name or brand used as the Sender ID (Defaults to `GLANCE`). | | **Background page** | The URL of the page to display in the background while the mobile device is prompting the user to share their camera. | | **Camera share end page** | The URL of the page where customers are redirected when the session concludes. | ================================================================= FILE: /users/portal/document_sharing ================================================================= **Requires CB 5.2 or higher** Document sharing is a feature that allows visitors and agents to share documents with each other during the session. Users can optionally save the files shared with them to their local computer. This is additive to our existing support for [PDF](/users/glance-cobrowse/features/pdf_cobrowse/) and [Excel](/users/glance-cobrowse/features/excel_cobrowse/) Cobrowsing, which provides the ability to cobrowse PDF or Excel documents hosted on the customer website. * Only PDF, XLS, and CSV files are supported. * Document sharing from the agent/visitor desktop is only supported in Cobrowse 5.1 and later. * Document sharing is not supported on unsecure pages. * Only the 'Accessible' Cobrowse widget is supported. * Agents must join the session through a web browser, not the Glance Client.
Note
Glance does not keep a copy of any document shared during a Cobrowse session.
## File Size Limits **Shared by Agent** | Type | Visitor Can Download | Visitor View Only | | --- | --- | --- | | PDF | 10MB | 10MB | | XLS/CSV | 5MB | 5MB | **Shared by Visitor** | Type | Agent Can Download | Agent View Only | | --- | --- | --- | | PDF | 5MB | No limit | | XLS/CSV | 5MB | No limit | ## Enabling Document Sharing To enable document sharing, select the following settings in **Account Management**. Enable document sharing in Account Management To share files: * Visitor local document share * Agent local document share To download files: * Agent document download * Visitor document download ## Agent-Initiated Sharing If the agent would like to share a document with the visitor during a session: 1. From the **Document Share** icon in the agent viewer, select **Choose a File**.
Agent viewer Document Share icon 2. The agent is prompted to choose a file from their local computer, then clicks **Open**. 3. The agent gets the opportunity to preview the file, then clicks **Share**.
Document share preview modal 4. The agent is now cobrowsing the document with the visitor.
Cobrowsing a shared document 5. Click the magnifying glass to search for text within the document.
Document search function 6. The visitor can download the document to their local drive if this function is enabled. 7. Click the **X** in the top-right corner to close the document. ## Visitor-Initiated Sharing If the visitor would like to share a document with the agent during a session: 1. The agent clicks the document share icon and selects **Send Request**.
Send document share request 2. The visitor accepts the request.
Note
The url used for the Terms and Conditions link is configured by a Glance admin under Settings > Cobrowse Settings > URL Configuration > Document Sharing Terms URL.
Visitor document share acceptance 3. The visitor is prompted to drag or open a file from their local computer. 4. The visitor gets the opportunity to preview the file, then clicks **Share**.
Visitor file preview 5. The agent can now cobrowse the document with the visitor.
Cobrowsing the visitor's shared document 6. Click the magnifying glass to search for text within the document.
Document search function 7. The agent can download the document to their local drive if this function is enabled. 8. Click the **X** in the top-right corner to close the document. ## Document Sharing Links Glance enables you to seamlessly add links to approved PDF, CSV, and Excel documents, which agents can easily share during sessions. Additionally, you can organize these documents into folders for better management.
Note
If you manage these settings through the Portal, please ensure all previous configurations are removed from Account Management.
Once you add documents in the Portal, the document is shown in the Document Sharing modal in the Agent Viewer.
Info
Configure the CORS headers on your resources to allow requests from Origin https://www.glance.net during the session.
### Adding Documents and Folders To add document sharing links: 1. Navigate to **Settings** > **Document Share**.
Navigate to Document Share settings 2. Click the **New** button. 3. Select **Document** or **Folder**.
Select Document or Folder option 4. For **Folder**, input the desired name of the folder and click the **Create** button.
Create a new folder 5. For **Document**, complete the following steps:
Configure document link details * **Document Title** - Enter the name you want to display for the link in the agent viewer. * **URL** - Add a link to the location of the file. * **Type** - Select the type of document: **PDF** or **Excel/XLS**. * **Folder** - (optional) Select which folder you want this document stored in. * **Can Download** - Toggle this button on or off to make the document downloadable. 6. Click the **Create** button. 7. Click the **Publish Documents** button.
Publish configured documents ### Assigning Documents Documents can be assigned to specific roles within your group, ensuring that only authorized agents have the ability to share them. 1. Click the **Assign** tab.
Assign documents tab 2. Click the checkbox underneath each role that needs to utilize the document. 3. Click **Update**.
Update document role assignments ### Moving a Document to a New Folder 1. Click on the ellipsis next to the document. 2. Click **Move to folder**.
Move document to folder menu 3. Select the new folder from the drop-down menu and click **Update**. ### Using Document Sharing Links If document sharing has been configured to **Active** in **Account Management**: 1. From the document share icon, select a file from the list of **Approved documents you can share**.
Approved documents list in agent viewer 2. The agent gets the opportunity to preview the file, then clicks **Share**.
Preview and share approved document 3. The agent and visitor can cobrowse the document together. 4. If this capability is enabled, the visitor can download the document to their local drive. 5. Click the **X** in the top-right corner to close the document. ## Events For events related to document sharing, see [Cobrowse Visitor Events](/developer/legacy_api/visitor_agent/visitor_event/#document-sharing-events) and [Browser Agent API Events](/developer/sdk/browseragent/reference/#agent-events). ================================================================= FILE: /users/portal ================================================================= ## Welcome to the New Glance Portal The Glance Portal is our new administrative interface, designed to streamline and modernize how you manage your experience. The Portal will eventually replace Account Management for the majority of our customers. As we transition between systems, we are continuously updating the Portal with new and reimagined workflows. During this interim period, any management functions you cannot find here can still be accessed through the classic Account Management interface. ### Accessing the Portal * **Log In:** If your account is ready, log in directly at [https://www.glance.net/apps/portal/](https://www.glance.net/apps/portal/). * **Request Access:** If you are an existing customer and need access, email us at [portal-request@glance.net](mailto:portal-request@glance.net). ## In This Section {% children description="true" /%} ================================================================= FILE: /users/portal/manage_group ================================================================= The Manage Groups section allows you to create and manage subgroups within your current group. Manage Groups section in the Glance Portal ## Creating a New Subgroup 1. Click **New**.
Create new subgroup form 2. Enter a **Group name**. 3. Select a **Relationship** type (**member** or **customer**). This determines how the parent group assigns permissions to this subgroup. 4. Click **Create**. ## Editing a Subgroup Click the **ellipsis (...)** on the right side of the subgroup's row. Subgroup management menu options * **Edit Details** - Update the group's name and relationship type. * **Disassociate** - Remove the subgroup from its parent group. ================================================================= FILE: /users/portal/manage_users ================================================================= Within the **Users** section, you can add, edit, and delete users and roles. ## Add Users to Your Account To add users to your account: 1. Navigate to the Portal and click on the **Users** section.
Users section in the Glance Portal 2. Click **New**. 3. Complete the applicable fields for the new user: * **Username** - The user name that they will use to login * **Partner User ID** - The user id * **First Name** - The first name of the user * **Last Name** - The last name of the user * **Role** - The role for the user (if required) * **Email** - The email for the user * **Password** - The password for the user * **Confirm Password** - The password for the user
New user creation form 4. Click **Create**. ## Edit User Information Within Your Account Follow the steps below to update user information. 1. Navigate to the **Users** section. 2. Click the ellipsis on the right side within the user's row.
User management menu options * **Edit Details** - Update the username, Partner User ID, role, first name, last name, and email. * **Edit Password** - Update the password. * **Admin Permissions** - Modify admin access and permissions. * **Affiliations** - Manage subgroup affiliations. * **Update Status** - Activate or deactivate the account. * **Clear Lockout** - Remove a login lockout. * **Delete** - Permanently remove the user. ## Create Roles Roles can be created within the Portal to: * Provide specific team members special access to Glance feature(s). * Run session activity reports on teams. Complete the following steps to create a role: 1. Navigate to the **Users** section and click the **Roles** tab. 2. Click **New**.
New role creation button 3. Fill out the following: * **Role**: Assign a name for the role. * **Description**: Give a brief description which will be helpful for your team when reviewing the role. * **Role Permissions**: Assign the capabilities and features for this role.
New role configuration form 4. Click **Create**. ## Edit Role Details Within Your Account Follow the steps below to update role names, descriptions, and permissions. 1. Navigate to the **Users** section. 2. Click the **Roles** tab. 3. Click the ellipsis on the right side within the role's row.
Role management menu options * **Edit Details** - Modify the role's name and description. * **View Settings** - Review assigned permissions and settings. * **Delete** - Permanently remove the role. ================================================================= FILE: /users/portal/masking ================================================================= Pages or elements can be masked from the agent's view by utilizing this section. ## Masking Elements The contents of specific element fields, such as credit card numbers or password fields, can be masked from view by agents. Masked elements can be identified by any CSS selector, including the html name or id attribute. When a text element is masked, agents will only see asterisks in their view. Agents will not be able to see the status of masked dropdown boxes, radio buttons, or checkboxes. You can also mask non-input page elements. Masking an element also masks any nested elements and input fields that are contained by the masked element. The dimensions of masked elements are preserved, but text content and images are removed. The values of HREF and SRC attributes are cleared and the contents of SVG audio and video tags are removed. Keep in mind the following: * If a form field is identified to be masked and to be edited, masking will take priority. * These selectors are linked to the table in Account Management, meaning any edits to this list will be reflected in both locations. However, assigning these elements to roles is exclusively managed in this section. * Glance masks page elements which match any of the CSS selectors specified, as well as elements with `class="glance_masked"` or attribute `glance_masked="true"`. Regardless of role, these elements will always be masked. ### Configuring Masked Elements You can configure masking from the Content Masking page. No customer website modifications are required to add or change masked field definitions. To configure the masked elements: 1. As an administrator, navigate to **Settings** > **Content Masking** > **Elements**. 2. Click the **New** button.
Content Masking Elements page in Portal 3. Input the element that needs to be masked in the **Selector Identifier** field and click **Create**. 4. After you test your changes in staging, click **Publish Selectors**.
Publish Selectors button for Content Masking
Note
In the above screenshot, all elements with an id of "confidential" and/or a class of "sensitive-data" will be masked.
Warning
Be aware that if your website is modified, the CSS selectors for masked elements may need to be updated.
### Verifying Masked Elements You should run a Cobrowse session on the new version of your website on a staging server to verify that all content is correctly masked. A good practice is to add the attribute `glance_masked="true"` to all elements that should be masked. You may also add the `glance_masked` class to those elements. This way, even if the elements' ids or other attributes change when you update your website, the elements will continue to be masked. If you want to download a CSV file of your masked elements for reporting purposes, click the **Export** button. Glance auto-masks element fields with the attribute `type="password"`. Visitor and Agent view comparison of masked elements
Note
During Remote Assist, agents cannot control masked elements.
### Styling Masked Elements You can apply special styling to masked elements during a Cobrowse session, to indicate to both visitors and agents that an area is masked. This can be accomplished by adding custom CSS to the Cobrowse button customization tool. Use the selector `[data-gid][glance_masked=true]` to select only masked elements during a session. ### Agent-Side Masking By default, no CSS is applied to a masked element, so the agent will see blank white space. [Contact Glance](/users/account-management/contact/) to apply the agent-side CSS. ### Visitor-Side Masking To display a masking indicator, such as an orange border around masked elements, use the following CSS. This example will work if you have added `glance_masked="true"` to the masked elements on the page. ```css [data-gid][glance_masked=true] { border: 2px solid orange; } ================================================================= FILE: /users/portal/mobile ================================================================= The Mobile tab lets you configure feature integrations for the Glance Mobile SDK, with dedicated sections for Android and iOS. Presence and Two-Way Video must also be enabled in the SDK for these features to function. Glance Mobile SDK configuration settings in the Portal * **Enable Presence Integration** - Enable or disable the SDK's ability to support Presence. * **Render Mode (Only available on iOS)** - Change the method that the SDK uses to capture the screen during sessions. * **Render in context** - The SDK's features and UI elements appear directly within your app's existing screens, instead of opening a separate window or taking users out of the app experience. * **Draw View in Hierarchy** - The SDK's interface is displayed as part of your app's existing view structure, alongside your own UI elements. * **None Selected** - No preference is chosen; the SDK will use the default behavior. * **User Event Capturing** - To be released at a later date. * **Two Way Video Integration** - Enable or disable the SDK's ability to support two-way video sessions between the user and the agent. * **Beta Features** - Allows the SDK access to beta features with the option to disable if preferred. ================================================================= FILE: /users/portal/permissions ================================================================= # Permissions The **Permissions** tab allows you to manage user privileges and configuration. To access it, navigate to the Portal, select Settings from the left pane, and click **Permissions** under the **Setup** menu. To enable permissions for an entire group, select the checkbox in the **Group** column. To enable it for a specific role, select the checkbox under the corresponding **Role** column. Portal Permissions configuration page | Permission Name | Description | | :--- | :--- | | **Edit own username** | Allows the user to update their Glance username. | | **Join Cobrowse sessions** | Allows the user to conduct Cobrowse sessions. | | **Invite guests** | Allows the user to invite guests to a Cobrowse session. | | **Report a Problem** | Enables the [Report a Problem](/users/glance-cobrowse/rap/) button within the Agent Console. | | **Agent Screen Share** | Allows the user to share their screen during a Cobrowse session. | | **Show Entire Screen** | Allows the user to share their entire screen during a Cobrowse session. | | **Show Application Window** | Allows the user to share a specific application window during a Cobrowse session. | | **Show Browser Tab** | Allows the user to share a browser tab during a Cobrowse session. | | **Visitor Screen Share** | Allows the visitor to share their screen during a Cobrowse session. | | **Agent Local Document Share** | Allows the user to share a local document during a Cobrowse session. | | **Agent Document Download** | Allows the agent to download a document that was shared with them during a Cobrowse session. | | **Visitor Local Document Share** | Allows the visitor to share a local document during a Cobrowse session. | | **Visitor Document Download** | Allows the visitor to download a document that was shared with them during a Cobrowse session. | | **Remote Assist** | Enables the [Remote Assist](/users/glance-cobrowse/features/remote_assist/) button within the Agent Console. | | **Restricted Editing** | Enables [Restricted Editing](/users/glance-cobrowse/features/remote_assist/#remote-assist-with-restricted-editing) during a Cobrowse session. | | **Navigation Assist** | Enables the [Navigation Assist](/users/glance-cobrowse/features/navigation_assist/) button within the Agent Console. | | **Screen Reader Gesturing** | Enables [Screen Reading](/users/glance-cobrowse/getting-started/accessibility/#using-screen-reader-gesturing) for a visitor during a Cobrowse session. | | **Agent Accessibility** | Enables [Agent-Side Accessibility](/users/glance-cobrowse/getting-started/accessibility/#agent-side-accessibility) during a Cobrowse session. | | **Start Screen Share Session** | Allows the user to start Screen Share sessions. | | **Join Screen Share Sessions** | Allows the user to join Screen Share sessions. | | **Keyless Sessions** | Enables Screen Share sessions to be started without a Join Key. | | **Show Screen** | Allows the user to show their screen during a Screen Share session. | | **Guest Remote Control** | Allows the guest to control the user's mouse during a Screen Share session. | | **Guest Share Screen** | Allows the guest to share their screen during an agent-initiated Screen Share session. | | **View a guest's Screen** | Allows the user to view a guest's screen during a Screen Share session. | | **Agent Remote Control** | Allows the user to control the guest's mouse during a Screen Share session. | | **Guest Annotation** | Allows the guest to gesture on the agent's screen. | | **Agent Annotation** | Allows the user to gesture on the guest's screen. | | **Data Capture For Name, Phone, Email** | Enables Glance to capture a guest's name, phone, or email when they join a session. | | **Guest Video (Mobile SDK)** | Enables guest video during a Mobile SDK session. | | **Agent Video** | Enables agent video for Cobrowse and Mobile SDK sessions. | | **Agent Video Background Effects** | Enables agent background effects for Cobrowse and Mobile SDK sessions. | | **Visitor and Guest Video** | Enables guest and visitor video during Cobrowse. | | **Mobile Camera Share** | Enables the visitor to share their mobile camera. | ================================================================= FILE: /users/portal/profile ================================================================= The Profile section allows you to view and manage your personal information and portal preferences. To access these settings, click **Profile** in the lower-left corner of the navigation pane. Camera Share Glance Portal ## Profile Settings | Field | Description | | :--- | :--- | | **Username** | Displays your login name (this field is read-only). | | **Company email address** | Updates your contact email address. | | **First name** | Updates your first name. | | **Last name** | Updates your last name. | | **Partner User ID** | Updates your unique Partner User ID. | | **Role** | Changes your assigned role within the group. | | **Portal start page** | Sets the default landing page that displays when you open the portal. | | **Change password** | Updates the password for your account. | ================================================================= FILE: /users/portal/script ================================================================= The **Script Tag** page allows Glance administrators to modify attributes to create a custom script tag that enables Cobrowse on websites. This interface lets users fill out each individual attribute for the script tag and then generate a script that can be copied and pasted into their website. Script Tag generator in the Glance Portal The following attributes can be found within the script tag. ## Read Only Tag Read-only attributes are generated based on previous selections made by the user. The following attributes are generated within the script as read only: * **script id** - The identifier used for this script, defaults to `glance-cobrowse`. * **src** - The source of the cobrowse loader script. * **data-groupid** - Your assigned Group ID number provided by Glance. * **data-site** - The environment (staging or production) that this tag will be deployed to. Select **Staging** or **Production** from the drop-down menu to identify what needs to be generated for this script. * **data-ws** - The webserver being used (e.g., `www.glance.net`). When implementing the script tag on your website, this can be changed for use in beta or a customer-specific environment.
Note
The Cobrowse script tag includes your company's unique Group ID. If you have multiple Glance groups, make sure the correct Group ID is in the tag, and that you are joining sessions as a Glance user in that group.
### Script Tag Versions: Staging and Production There are two versions of the script tag: one for your staging website, and one for your production website. Which profile of Cobrowse is used on your site is specified by the site attribute in the script tag. You should use Staging for your own internal staging environment and Production for your live site.
Warning
Cobrowse will not work on a website accessed at localhost with the file:// protocol. If you are trying out Cobrowse on a local website, please access it via a host name added to your local hosts file or equivalent.
## Basic ### data-presence * **Definition:** Determines if the presence scripts are loaded and when the connection is made to the presence server. Omit this attribute if you are not using presence. * **Default:** `on` * **Options:** `on`, `off`, `api` * `on` will load the presence scripts and automatically connect to the presence server if a visitor id is defined in the `data-visitorid` script tag attribute. * `off` will not load presence scripts. * `api` will load the presence scripts, but it is the customer's responsibility to manage the connection and other aspects of the interaction. See the [Presence Visitor API](/developer/presence/presence_visitor_api/). ### data-cookiedomain * **Definition:** The domain to use for the Cobrowse session cookie. This setting is typically required only for staging sites hosted on a [public suffix domain](https://publicsuffix.org/) such as `azurewebsites.net` or `herokuapp.com`. Specify the full host name as the cookie domain. For example, if your staging site is `abcco.azurewebsites.com`, specify `data-cookiedomain="abcco.azurewebsites.com"` * **Default:** N/A * **Options:** Hostname of page to be Cobrowsed ### data-cookietype * **Definition:** The type of cookie to use for the Cobrowse session. * **Default:** `normal` * **Options:** `normal`, `secure`, `ls`, `dual` * `normal` (default): A non-secure cookie on your website domain. Use this value if visitors need to be able to navigate to insecure pages during a Cobrowse session. * `secure`: A secure cookie on your website domain. You may use this value if visitors will only need to be able to navigate to secure pages during a Cobrowse session. * `ls`: Local storage on your website domain. You may use this value if you would like to avoid adding a cookie to your domain, and if your visitors only navigate to pages on the same local domain. * `dual`: Both local storage and a cookie are used. Use this value if you have existing code which may delete cookies on your website domain, including the Cobrowse session cookie. ## Advanced ### data-additionalgroupids * **Definition:** Specify additional Group IDs in the script tag, for example: `data-additionalgroupids="59923,50920"`. It is possible for you to tag different pages with different sets of group ids, but a primary Group ID (`data-groupid`) must be specified and it is used as a default. * **Default:** N/A * **Options:** Comma separated list of Group IDs ### data-inputevents * **Definition:** Maps input events to Glance Cobrowse actions. The `data-inputevents` format is `{ "[modifier]-[keycode]" : "[Glance action]", ...}`. Example: ```html data-inputevents='{"ctrl-13":"startSession", "shift-13":"showTerms"}' ``` * **Default:** N/A * **Options:** The key code can be any standard JavaScript key code mapped to Cobrowse actions.
Note
Use single and double quotes exactly as shown in the above example. The outer quotes around the attribute value should be single quotes, and the quotes within the attribute value must be double quotes. Customers should still provide a link or button in addition to the key combinations to allow for starting sessions on mobile devices.
### data-scriptserver * **Definition:** If you are hosting the script on your own server, add this attribute to tell Glance where to find the additional script and CSS resources that you host. * **Default:** N/A * **Options:** `[servername]` ### data-startpaused * **Definition:** Allows you to start the session in a paused state. Enabling sets `data-startpaused="1"`. * **Default:** `off` * **Options:** `on`, `off` * `on` starts the session in a paused state. * `off` starts the session in an unpaused state. ### data-video * **Definition:** Starting video size. * **Default:** N/A * **Options:** `small`, `large`, `off` ================================================================= FILE: /users/portal/security ================================================================= The **Security** page can be accessed through the **Settings** section and allows the user to create and manage API Keys and password requirements. Glance Portal Security settings page ## API Keys API Keys configuration section Each Glance customer account has an API Key. It is used to generate Login Keys to grant access to Glance. * Select the clipboard icon next to the **API Key** field to copy your key. * Input a new API Key and click the **Update** button to change your current API Key.
Note
Once an API Key is changed, Glance rejects future Login Keys generated with the old API Key.
## Password Requirements Password Requirements configuration section Password requirement settings apply to the passwords used to log into Glance. They are only enforced when users create new passwords or change existing passwords. They do not apply to: * Session Keys * Login Keys * API Keys **Minimum password complexity** Choose one of the following for password complexity: * 6-character minimum length (not secure). * 7-character minimum, with uppercase, lowercase, and digit characters. * 8-character minimum. * 8-character minimum, with uppercase, lowercase, and digit characters. * 8-character minimum, with one or more non-alphanumeric characters. * 9-character minimum. * 9-character minimum, with uppercase, lowercase, and digit characters. * 9-character minimum, with one or more non-alphanumeric characters. **Password reset prompt message** The message shown when resetting a password. **Password reset** Select the requirements for when a user changes their password: * Allow reusing the same password. * Require a new password. **Users with no password** Select the action for users without a password: * Cannot create a password. * Can create a password via Password Reset. ================================================================= FILE: /users/portal/sso_autoprovisioning ================================================================= Customers who subscribe to Glance products offering autoprovisioning can skip the step of pre-provisioning each of their users who must use Glance. Instead, a Glance subscriber account is created on the fly the first time each user accesses the Glance product via SAML single sign-on. ## Requirements You must contact your Glance representative in order to activate autoprovisioning on your account. Autoprovisioning only works for SAML-integrated customer accounts. Set up SAML access to Glance, and verify it is working correctly for Glance subscribers. When valid SAML Assertion documents are being presented to the Glance service, the autoprovisioning user interface uses them to help choose the appropriate attributes to use for new Glance subscribers. Autoprovisioning requires certain identifying attributes to be provided by the customer's SAML single sign-on identity provider. To autoprovision an account, Glance needs: * An agreed-upon unique identifier for each new subscriber. * A way to create a Glance Address from the user's profile information. * Name, email, and telephone number attributes are helpful but not required. ## Configuring Autoprovisioning When Glance is integrated with your SAML enterprise single sign-on solution, you can automatically create and provision a new Glance account for each new subscriber from your organization. This panel provides the information required to provision these accounts correctly. Glance identifies your subscribers with these attributes (items of data): * GlanceAddress (required) * PartnerUID * FirstName * LastName * Email * Phone * Role Most subscribers need a valid and unique PartnerUID. This can be an employee number or any other unique alphanumeric code assigned by your organization and can be the same value as the GlanceAddress. The other information (name, email, and phone number) is not required. It helps support and keep track of subscribers. Your SAML enterprise single sign-on solution is configured to present particular attributes of each user to Glance. Follow these steps to map them: 1. Select **Yes** on the **Autoprovision new users** dropdown. 2. Choose which SAML attributes to use for new Glance subscribers on the **Transformation Table**. 3. Select the SAML Attribute to use to create the Glance Address. The example values shown next to each attribute name should help you make the choice. In this case, the **GroupID** attribute is used.
Portal SSO Attribute Selection 4. Select a Transformation Rule from the **Transformation Guide** and enter it in the **Transformation Rule** cell. In this example, `{RandomDigits(d+)}` is used, which adds a specified number of random digits to the end of the group ID.
Portal SSO Transformation Rule
Info
Specifying no transformation rule leaves the attribute unchanged.

You may specify SAML Attributes and Transformation Rules for all six items in this panel. You must specify them for the Glance Address, and it is helpful to specify them for partnerUID.
5. Configure either **Glance Address**, **PartnerUID**, or **Email** to use an attribute that appears unchanged as one of the attributes in the SAML assertions. The attribute must uniquely identify the subscriber. 6. Navigate back to the main **Configure** tab, and set the **User Identity Attribute Name** to that same attribute. 7. Select a role in the **Role Assignment** section if you would like to assign the new users a default role. ## Finishing Provisioning Once the SAML provisioning is complete for the account, wait a few days for the changes to process. 1. When production is known to be stable, navigate back to the **Configure** tab. 2. Set the **Operational Status** to **Production**.
Info
Sign-on and autoprovisioning events take slightly less time when the status is Production.
3. Click the **OK** button when changes are complete. ================================================================= FILE: /users/portal/sso_configure ================================================================= Provision users with Glance single sign-on through the configuration screen. The best way to obtain values for most fields in this screen is to upload a Metadata XML file, which most identity provider operators can provide. Portal SSO General Configuration | Field | Description | | :--- | :--- | | **SSO Method** | Sets the SSO protocol. Options include *Off*, *SAML 2.0*, or *Encrypted SAML 2.0*. Most SAML customers use standard *SAML 2.0* (without encryption). | | **Description** | Provides a custom text description of your SAML setup. | | **Operational Status** | Sets the deployment state. When first provisioning an account, set this to *Provisioning* to log SAML authentication attempts in the Access Log. Once stable, change this to *Production*. | ## Identity Provider Configuration Portal SSO Identity Provider Configuration | Field | Description | | :--- | :--- | | **Metadata File Upload** | Uploads an XML document furnished by the identity provider. Metadata Discovery Endpoints automatically populate most of the required fields on this provisioning page. | | **X.509 Public Key** | Validates Assertions (tokens sent to Glance) using the public key furnished by your identity provider. The identity provider cryptographically signs Assertions with a matching private key to prevent forgery. | | **Additional X.509 Public Key** | Stores an additional public key certificate if your identity provider has supplied one (useful during key rotation). | | **Identity Provider Endpoint URL** | Determines the URL where Glance presents authentication requests. A Metadata Discovery Endpoint document contains this value. | | **Identity Provider Endpoint Type** | Defines how Glance presents authentication requests to your identity provider (using either an HTTPS redirect or an HTTPS POST operation). | | **Entity ID** | Sets the federation entity ID (or relying party trust identifier) for the Glance service provider. In most cases, this should be set to `glance.net/sp/1`. | | **User Identity Attribute Name** | Specifies the name of the attribute uniquely identifying the user within the Assertion token. The attribute value must uniquely match the user's Glance Address, Partner User ID, or Email Address. | | **Encryption Certificate** | Displays when *Encrypted SAML 2.0* is selected. This is the key certificate Glance uses to decrypt Assertion documents. A Glance staff member will upload the key certificate file and update the portal, providing you with the corresponding public key to share with your identity provider operator.

*Note: Encrypted SAML provides an extra measure of security beyond HTTPS. However, most SAML users rely on HTTPS alone rather than using encryption.* | ## Optional Configuration Portal SSO Optional Configuration | Field | Description | | :--- | :--- | | **Unique Account ID** | Requires a specific value for certain identity providers. For Salesforce accounts, use the `Organization ID`. For Entra accounts, use the `Tenant Unique Name`. If set, you can use its value in the `idptoken` parameter in Service Target URLs. Leave blank if not required. | | **Redirect for IdP-initiated sessions** | Redirects users who initiate single sign-on directly from the identity provider's UI to an appropriate page on the Glance service (e.g., `/agentjoin/agentjoin.aspx` presents the Cobrowse join page). This must be a relative URL, not an absolute URL starting with `https://`. | | **Authentication Context** | Defines specific authentication contexts required (or disallowed) by your identity provider when Glance sends single sign-on requests. | | **ACS Parameter Style** | Configures how your identity provider responds to single sign-on requests using a Glance URL called an Assertion Consumer Service (ACS). Parameters are usually appended to the ACS, but some providers pass them in a separate Relay State element. | | **Name ID Policy** | Sets the NameID Policy required by your identity provider when Glance sends an SSO request. In most cases, this should specify `Email`, though some providers require `Unspecified`. | ## Changing Public Keys Glance supports multiple public keys. Each one is used in turn to attempt to validate each SAML Assertion. From time to time, identity provider operators may replace (rotate) the cryptographic key they use to sign SAML assertions. These steps allow for seamless key-pair changes without the need to actively synchronize downtime between your identity provider and Glance: 1. The identity provider operator generates a new public/private key pair. 2. Glance puts the new public key into the provisioning screen as an **Additional X.509 Public Key**. 3. The identity provider operator starts using the new key pair. ================================================================= FILE: /users/portal/video_setup ================================================================= As an administrator, you can configure background effects for agents and visitors during Cobrowse and Mobile SDK video sessions. ## Effects Portal Video Effects Administrators can configure which background options are available for the agent and guest within the Effects section: * **Agent video background effects:** Allows the agent to add background effects. * **Show toggle for agent background effects:** Displays a button for the agent to toggle background effects on or off. * **Visitor and guest video background blur:** Allows visitors and guests to add background blur. * **Show toggle for visitor background blur:** Displays a button for the visitor to toggle background blur on or off. ### Agent Background Effects Under **Agent Background Effect,** choose the default agent video background experience. Note that **Role** indicates which role you are updating the background for. | Effect | Description | Options | | --- | --- | --- | | **Blur** | Blurs the agent's background. | None | | **Fill** | Choose a color to display behind the agent. | Select the color you want to use. | | **Image** | Choose an image to display behind the agent. | Select a background that has been uploaded to the **Images** tab. | During the session, if the toggle button is enabled, agents can turn their background effects on or off from the **Gear icon** > **Video Background Effects**. Toggle Video Background Effects Visitors and guests can toggle their blur off from the blur icon while Cobrowsing on a mobile device or computer. Mobile Background Blur ### Best Practices for Agent Background Selection * In general, light replacement backgrounds work better because the algorithm attempts to 'feather' the edging, which will always look more distinct if there is a big disparity between the colors. * A detailed background (like a picture of an office or branch) may work better than a solid color. * Make sure the agent has proper lighting and is centered in view, as the background detection algorithm is trained for the human to be in the center. * Whenever possible, minimize wide variations in color in the agent's physical background (e.g., columns that are white versus black). --- ## Images Portal Images Click the **Upload** button to upload a file to use for the background replacement. * Glance recommends using an image that is 1280 x 720 pixels. * **Minimum Supported File Size:** 640 x 360 * **Maximum Supported File Size:** 1280 x 720 * **Supported File Types:** JPEG, PNG * There is a total file size limit of 1 MB.
Note
If your background features a logo or text, ensure the image is 1280 x 720 pixels, with the logo/text positioned 160 pixels from the side borders and 50 pixels from the top border.
--- ## Behavior Portal Behavior **Video State at Session Start:** Choose between *Off*, *Small*, or *Large* for the video size to begin your session within the Staging and Production environment. **Insufficient Hardware:** Choose the fallback experience you want if there is insufficient hardware for agents or visitors/guests to use background effects: * Show no video * Show video with no background effect ================================================================= FILE: /users/portal/webscreenshare ================================================================= Glance provides the ability for agents to escalate from a Cobrowse session to a Screen Sharing session, without downloading any software. During a Cobrowse session, the agent can click the **Screen Share** button to have the option of sharing their screen or granting the visitor permission to share. The agent or the visitor can share their entire screen, a window, or a browser tab. ## Prerequisites * The Glance Group account must be set to use Cobrowse version 5.3 or above. * The setting **Agent Screen Share** must be enabled in the **Permissions** tab within **Web Screen Share**. As an administrator, you can choose if agents can share tabs, windows, or their entire desktop.
Web Screen Share permissions tab in the Portal * **Agent Screen Share** - Allows the agent to share their screen. * **Show entire screen** - Allows the agent to share their whole screen. * **Show application window** - Allows the agent to share an application window. * **Show browser tab** - Allows the agent to share a browser tab. * **Visitor Screen Share** - Allows the visitor to share their screen.
Note
For MacOS users, verify Screen Recording is selected in your system's Security & Privacy Settings for the browser you are using to join sessions.
## Using Screen Share from Cobrowse 1. After the agent and visitor have joined the Cobrowse session, the agent clicks the **Share Screen** icon in the agent viewer.
Share Screen icon in the agent viewer 2. The agent can choose to share their entire screen, a window, or a browser tab. 3. The agent clicks **Share** to share the content. 4. The visitor can view the agent's content. ## Multiple Participants Sharing Their Screen If a session involves multiple agents, and a second agent shows their screen, the initial agent will get a message stating **Another agent is sharing their screen. You are no longer sharing your screen.** Multiple agents screen sharing notification ## Screen Share Bookmarks **Requires CB 5.3 or higher** Glance also provides the ability to configure bookmark links of easy-to-share websites agents can share. Once enabled, these websites display in the **Screen Share** menu of the Agent Viewer for the agent to easily select.
Note
If you manage these settings through the Portal, please ensure all previous configurations are removed from Account Management.
### Configuring Screen Share Bookmarks and Folders **Bookmark Folders Require CB 6.29 or higher** As an administrator, navigate to **Settings** > **Web Screen Share**. Web Screen Share settings in the Portal To add a bookmark: 1. Click the **New** button and select **Bookmark**. * **Title** - Enter the title for the bookmark link in the Agent Viewer. * **URL** - Enter the URL of the bookmark site. * **Folder** - Select which folder you want this bookmark stored in (Optional). 2. To add an additional bookmark, click the **Add another** button. 3. Click **Create**. 4. After you test your changes in staging, click **Publish Bookmarks**. To add a folder: 1. Click the **New** button and select **Folder**. 2. Input the **Folder title** and click **Create**. 3. After you test your changes in staging, click **Publish Folder**.
Info
The Web Screen Share section can store up to 500 items (e.g., 300 bookmarks and 200 folders, 400 bookmarks and 100 folders, etc.)
#### Moving a Bookmark to a New Folder 1. Click on the ellipsis next to the bookmark. 2. Click **Move to folder**.
Move to folder option in the bookmark menu 3. Select the new folder from the drop-down menu and click **Update**. #### Assigning Bookmarks Bookmarks can be assigned to specific roles within your group, ensuring that only authorized agents have the ability to utilize them. 1. Click the **Assign** tab.
Assign tab for role-based bookmark access 2. Click the checkbox underneath each role that needs to utilize the bookmark. 3. Click **Update**. ### Using Screen Share Bookmarks 1. Once the agent and visitor are in a Cobrowse session, the agent can click the **Share Screen** icon to view the bookmark links.
Screen Share bookmark links menu 2. After clicking the link, the bookmark site will open in a new window, and the agent has the opportunity to preview the content. 3. Click **Share...** > **Window** > select the bookmark window from the available windows. 4. The visitor can view the agent's window. 5. Click **Stop Sharing** to end the screen share session. The cobrowse session will continue. ## Screen Share for Visitors **Requires CB 5.7 or higher** The agent is able to grant the visitor permission to share their desktop, application window, or browser tab with the agent to quickly resolve any issues. Visitors must be on a PC or Mac to share their screen. Mobile devices do not support screen sharing from their browsers.
Note
Escalate to View must be enabled within the Account Management page for this feature to function.
1. From a Cobrowse session, click the **Share Screen** icon. 2. Click **Send** within the **View** section.
Send view request to visitor 3. The visitor will receive a **Share Your Screen** modal in which they must click **Accept**.
Share Your Screen modal for the visitor 4. The visitor can then choose if they want to share their entire screen, a window, or a tab.
Info
If the visitor is using the Safari web browser, they will only be able to share their entire screen.
5. After the visitor has made their selection, they click the **Share** button to share with the agent.
Info
When the agent is sharing their screen and the visitor shares their screen back and layers the new share on top of the existing Agent Share, the Stop Sharing button is grayed out and non-functional.
## Troubleshooting If you attempt to share the entire screen or tab, but you are only configured to share a window, you will receive the following error: Screen Share permission error message **Remediation:** You can click the Screen Share button and try to share the Window instead. ================================================================= FILE: /users/security/compliance ================================================================= Engineered to comply with the strictest enterprise information security and privacy requirements, Glance is the compliance-friendly enterprise visual engagement choice. | Icon | Standard | Description | |---|---|---| | ISO 27001 Logo | **ISO 27001** | ISO 27001 is a globally recognized standard for the establishment and certification of an information security management system (ISMS). Our entire information security program is built on the ISO 27001 framework and we are annually audited. | | GDPR Logo | **General Data Protection Regulation** | The GDPR is Europe's regulation for data protection and privacy, but it also covers any data transferred outside the EU and EEA areas. As a result of Schrems 2, Glance utilizes Standard Contractual Clauses (SCC) for the legal and contractual movement of data.

Our Privacy Policy aligns to GDPR requirements. | | AICPA Logo | **SOC 2 Type 2** | Glance undergoes a SOC 2 Type 2 examination of our security controls against the AICPA defined standards on an annual basis with a third party audit firm to ensure the security of our platform. | | Cloud Security Alliance Logo | **Cloud Security Alliance** | Glance is STAR Registry Level 1 with Cloud Security Alliance (CSA). The CSA Cloud Controls Matrix is a cybersecurity control framework for cloud computing. It is composed of 197 control objectives that are structured in 17 domains covering all key aspects of cloud technology. | | ISO 27701 Logo | **ISO 27701** | ISO 27701 is a globally recognized standard for the establishment and certification of a privacy information management system (PIMS) that builds on ISO 27001. Our privacy program is built on the ISO 27701 framework. | ================================================================= FILE: /users/security/encoding_streaming ================================================================= Glance Screen Share's client software captures and transmits screen content using pixel-based methods. Screen changes are digitally compressed using a proprietary patent-pending codec that minimizes bandwidth and latency, while preserving sharpness. The compressed data is encapsulated in a proprietary messaging format and forwarded to each session participant. Glance ensures each participant enjoys the best possible viewing experience, regardless of session size and network condition. Glance continuously optimizes each participant's data stream to the instantaneous speed of his or her network connection. Guests with fast connections receive as many screen updates as their networks allow. Those on slower links may need more time to receive updates, but they never fall behind. To minimize path latency, Glance provisions each session on a server that is geographically close to the host. All session data flows through that server. With a very few exceptions, Glance sessions are encrypted. Glance uses modern Transport Layer Security (TLS) to secure all connections between participants and server.
Info
The only sessions Glance does not encrypt are cobrowsing sessions on unsecured (http:, not https:) web sites.
## All Glance Screen Content is Live All content is live. Presenters do not upload documents or presentations beforehand. No document or file transfer is allowed. No executable code from participant computers is sent. No session content is recorded. During [remote control](/users/security/security_screenshare/#remote-support) in a screen sharing session, the remote (controlling) computer sends its pointer's relative position, mouse actions and keystrokes to the current presenter's computer, which interprets that data locally. Clipboard commands only use each local computer's clipboard content. Clipboard content cannot be shared. When a session ends, any transient data cached in the Glance service's virtual memory is deallocated. Only [call detail records](/users/security/glance/#call-records) (CDRs) and log files (for debugging) persist. Neither contain session screen data. All audio is communicated live by phone. Participants must use either their own service provider. ================================================================= FILE: /users/security/glance ================================================================= The most effective way to keep your data private and secure is to focus on the fundamentals. Glance has adopted the following security practices. ## Do Not Store Data Unless It's Needed The surest way to keep data private is to *not gather or store it in the first place*. Glance only gathers and stores data if there's a clear operational need for it. ## Password Security We do not store user passwords. Instead, we store password hashes. We use the industry-standard Bcrypt hashing algorithm with 16-character random salts. This password security scheme makes it extremely difficult for bad actors to guess passwords from stored hashes. Additionally, Glance enforces password-complexity rules. Nevertheless, Glance strongly encourages you to use industry-standard Single Sign-On (SSO) mechanisms, such as SAML 2.0, to eliminate the need for Glance to store your passwords. ## Cross-Site Scripting Security The Glance web application is built to resist attack. We use locked-down dedicated web servers and database servers, with all unnecessary features removed to reduce the attack surface. Glance has development policies and tools in place to create code that resists injection, cross-site scripting, and request-forgery attacks. Glance uses cryptographically random session keys with automatic expiration to resist credential-replay attacks. We store only hashed passwords, hashed according to current security best practices (Bcrypt with 16-character random salts). Each customer may select their own password-complexity standards. Glance's architectural design prohibits the downloading or uploading of any data to the session servers. Glance uses a host-based intrusion detection system to identify suspicious behavior. Server updates and patches are applied in accordance with the severity of the issues they address, both weekly and monthly. Because attack vectors are always evolving, Glance tests its application for vulnerabilities at least twice a year with the latest version of tools such as BurpSuite and ZAPScan. All vulnerabilities are repaired as they are uncovered. Security policies are endorsed by the CTO. ## Information Storage Glance Networks stores the session details from any given session. Glance only stores session metadata and does not store any data from the session itself. Glance stores the following session metadata: * Start time * Stop time * Number of guests that join the session * Participants' Internet Protocol (IP) addresses, from which it is possible to infer geographic location. * The Glance URL (Agent Glance Address) * The Session Type (whether a Cobrowse or a Screen Share session) ## Internal Glance Monitoring If requested by a customer via written correspondence, an authorized Glance Super-user can join an active session for the purpose of testing or monitoring activities. Glance requires the unique session ID and the Glance user address to locate and join that session. We do not actively monitor any sessions and make it a practice to not join any session unless otherwise required by our customers. Glance cobrowsing has the capability to escalate sessions from one-to-one to many-to-one. This enables an agent to invite another authorized agent to join the in-process Cobrowse session. Doing this means the agent may escalate the conversation from one agent to two agents and have a soft handoff with the end-customer. ## Firewalls and Proxies Glance Screen Share automatically senses and works with most proxy server and firewall configurations, without needing adjustments by technical staff, and by identifying the best protocol for each participant's network environment. Each participant reaches the Glance Screen Share service with an outward-bound connection, using TLS to port 5501. If that attempt is denied or times out, Glance Screen Share tunnels HTTPS to the standard port 443. Since TLS is more efficient than HTTPS, a company that blocks port 5501 might consider adding a rule to their firewall policy that allows outbound connections to those ports at the glance.net servers. Glance Cobrowse and Glance Video session servers use secure HTTPS and [WebSocket](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket) connections to communicate with browsers. ## Auto Reconnects Some Glance participants may have slow or unreliable Internet connections, due to a weak wireless signal, spotty mobile service, an unresponsive proxy server, or an interfering network security device. If the connection drops or times out, Glance automatically attempts to reconnect for up to two minutes. Should the problem persist, Glance tunnels over HTTP/HTTPS. ## Encryption Glance encrypts almost all sessions. Session traffic between each participant and the Glance service uses modern Transport Layer Security (TLS) technology. Each participant's computer or mobile device uses TLS to negotiate the connection's cipher suite and key length. Glance also sends each participant a digital certificate, signed by DigiCert or Thawte. The participant's browser can pass it to a certificate authority to validate Glance's identity before proceeding. Each connection is then encrypted using the strongest method the corresponding participant supports. SSL, TLS versions earlier than TLSv1.2, and earlier transport security standards are obsolete and disallowed by all Glance servers. Any participant that cannot establish a secure connection to an encrypted session is denied entry. ## Call Records Glance archives various metrics about each session: * Each participant's Internet Protocol (IP) address, from which it is possible to infer geographic location. * Each participant's entry and departure times, and total duration. * Guest's contact info (name, email address, phone), when gathered by request of the session host and supplied by the guest. The session host or their group's administrator can view or download these records in CSV format by logging into the My Account area. These metrics cannot be edited or altered. All My Account browser sessions are secured by HTTPS. Glance expunges IP addresses from Call Detail Records when they are three months old. Glance expunges guest contact info when it is six months old. Additionally, Call Detail Records are deleted entirely when they are two years old. Glance never stores or records the content of sessions. ## Glance TLS Support Encryption uses a protocol standard known as Transport Layer Security (TLS), which is a technical detail about how Glance (and other web applications and web properties) keep your information�and your customers' information�private and intact on the internet. When you access Glance with a web browser, you use the `https:` prefix on web addresses; for example, you can log in to Glance by visiting `https://www.glance.net/login`. The `https:` prefix causes your web browser and our servers to exchange encrypted information over the internet connection between them. The same happens when you use your integration software and our servers to exchange information. Glance accepts TLSv1.2+. If you use the Glance Client and experience any issues, verify you are using a modern browser. ## Vulnerability Reporting and Responsible Disclosure Glance values work done by security researchers in improving the security of our products and service offerings. We are committed to working with this community to verify, reproduce, and respond to legitimate reported vulnerabilities. We encourage the community to participate in our responsible reporting process. If you are a security researcher and would like to report a security vulnerability, please send an email to [security@glance.net](mailto:security@glance.net). Please provide your name, contact information, and company name (if applicable) with each report. Priority will be granted to encrypted reports�please include your PGP public key with such reports. ### Responsible Disclosure Guidelines We will investigate legitimate reports and make every effort to quickly correct any vulnerability. To encourage responsible reporting, we commit that we will not take legal action against you or ask law enforcement to investigate you if you comply with the following Responsible Disclosure Guidelines: * Provide details of the vulnerability, including information needed to reproduce and validate the vulnerability and a Proof of Concept (POC). * Make a good faith effort to avoid privacy violations, destruction of data, and interruption or degradation of our services. * Do not modify or access data that does not belong to you. * Give us a reasonable time to correct the issue before making any information public. * Glance will attempt to respond to your report within 48 hours. ================================================================= FILE: /users/security/glance_privacy ================================================================= See Glance's [Privacy Notice](https://www.glance.cx/privacy-notice) for more information. ## Prepared for GDPR The European Union has implemented the General Data Protection Regulation (GDPR), invoking tough new rules on how enterprises gather and use EU citizen information so consumers can have better control of their personal data. Glance has taken every effort to ensure that it complies with these stringent requirements to ensure the protection of your data. ## Personally Identifiable Information (PII) Glance's systems are built so that, in most cases, PII never touches Glance servers and is never stored. Contents of Glance Sessions (Screen Sharing, Cobrowsing, and Video) are never recorded or stored on Glance's servers. The session data itself is encrypted while in motion across networks. You can mask sensitive user information that may appear during a session, such as credit card numbers or taxpayer identification numbers. The contents of masked elements never touch the Glance service, ensuring complete privacy. While some companies may ask for your name, telephone number, email address, or other sensitive personal information, Glance does not. In general, an IP address is the only information Glance needs to make the service operate. Glance automatically purges these IP addresses after three months using secure deletion methods. Names, telephone numbers, and email addresses gathered on behalf of Glance customers are automatically purged after six months. ## Data Privacy Rule Glance follows a simple data-privacy rule: the personal data of the users of the businesses they serve (Glance customers) belongs to them. Glance fully supports your rights to privacy, and is a strong advocate of an individual's ability to control their information. ## Your Privacy At any time, you can ask Glance about your information that is held in our system, or you can ask to have it erased. Simply send an email to [privacy@glance.net](mailto:privacy@glance.net). ================================================================= FILE: /users/security/hosted_infrastructure ================================================================= Glance's session load is spread across data centers around the globe. Each session is assigned to a server in a data center geographically close to the session's host, in order to minimize path latency. Sessions at each location are balanced across a pool of available servers. ## Distributed Architecture Glance's distributed architecture ensures there is no single point of failure. Should one server or even an entire data center drop offline, the remaining data centers assume the load and new sessions are rerouted. Sessions that were running on a failed server will drop, but hosts typically are able to restart them within a minute. ## Data Centers Glance's servers are hosted by Amazon Web Services (AWS). AWS data centers offer excellent security against physical intrusion, power and network outages, and other adverse events. Glance operates backup servers for business continuity in a different geographical region from primary servers. ## Production Servers All production servers are hardened. Non-essential services are disabled and security patches applied as appropriate. Remote management is by secure SSH only, from pre-authorized IP addresses. ================================================================= FILE: /users/security ================================================================= We engineer our platform to comply with the strictest enterprise information security and privacy requirements, making Glance the compliance-friendly enterprise visual engagement choice. ## Glance's First Security Principle **We never gather or store the contents of Glance sessions you conduct with your users.** ## In This Section Explore the resources below to learn more about our privacy policies, data encoding, hosted infrastructure, and how we keep both Cobrowse and Screen Share sessions secure from start to finish. {% children description="true" /%} ================================================================= FILE: /users/security/security_QA ================================================================= Here are some answers to common security questions. ## When does Glance Screen Share create connections to the Glance service? Glance is only connected during a session. ## How much bandwidth do Glance solutions use? Glance solutions use bandwidth only during a session. Traffic tends to burst up to hundreds of kilobits-per-second for several seconds whenever the screen being shown changes. As soon as the updates are sent, traffic returns back to near zero. Most Glance sessions average about 50 to 80 kbit/s, comparable to active web surfing. All traffic flows through the Glance servers. ## How can I get Glance Screen Share's new version with modern encryption? Download the latest, most-secure version: 1. Download the client for your operating system: * For Windows PCs, click [here](https://glance.net/download). * For Macs, click [here](https://glance.net/download). 2. Once installed, click on the **G** icon. 3. Select **Settings**. 4. Under the **Options** tab, scroll down to **During my sessions**. 5. Check the box **Encrypt my sessions**. ## Does Glance Screen Share allow inbound connections from the Internet? No. Glance software only makes outbound connections that you initiate by starting a session. ## Can someone see my screen when I'm not using Glance Screen Share? No. For someone to see your screen using Glance, the following must happen: * You must manually start a Glance session by clicking the **G** icon and selecting the start session prompt. * Once you start the session, a guest has to visit your Glance web page and know the session key. * When your screen is visible to others, Glance surrounds it with a yellow cross-hatched border. When others can control your screen, the border is red. ## Can I use Glance solutions over a dial-up or satellite connection? Yes. But because dial-up and satellite data speeds are much slower than broadband, it will affect how fast your guest(s) receive updates. Glance will send your screen changes as fast as your network connection allows and your guests will receive the changes as fast as their network allows. ## Can I use Glance solutions behind a Network Address Translation (NAT) router or firewall? Yes. Glance works reliably through most routers and firewalls. ## Can I use Glance solutions behind a firewall or HTTP proxy server? Yes, in most cases. Glance is designed to work within standard network security environments. Connection Logic: * **Desktop & Mobile Apps (Agents & SDKs):** The client first attempts a direct TLS connection to Port 5501 for optimal performance. If this port is blocked, the client automatically "falls back" and tunnels through the firewall via HTTPS on Port 443. * **Web Browser Users (Guests):** Guests joining via a browser connect using standard HTTPS and Secure WebSockets (WSS) on Port 443. If you encounter connectivity issues despite these settings, [contact our support team](/users/account-management/contact/). ## Can I disable remote control or other features in Glance Screen Share? Yes. In the My Account area, a Glance administrator can control which features users can access. Controllable features include: * Show the user's screen to the guest * Permit the guest to remote-control the screen * Permit the guest to annotate (highlight) the screen * Permit the guest to show their own screen * View the guest's screen * Permit the user to remote-control the guest's screen * Permit the user to annotate (highlight) the guest's screen * Start sessions without a session key * Specify whether to gather user names, email addresses, and/or telephone numbers when they join sessions You can change these settings on the **Settings** tab of the **Account Management** page. To log in: 1. Click the [LOG IN](https://glance.net/login/default.aspx?username=) link. 2. Log in using the Glance Administrator's Glance Address and Password. 3. Click the **Settings** tab. 4. In the Privileges and Settings panel, choose the features you want to make available to your users. 5. Click **Save Changes**. These settings apply to all users in your group. ================================================================= FILE: /users/security/security_cobrowse ================================================================= Glance Cobrowse sessions allow one or more customer service agents to view the web browsing activity of visitors to a website. Agents see exactly what a visitor sees in their browser, with the exception of the contents of designated [masked](/users/glance-cobrowse/features/masking/) fields. ## Security Architecture Cobrowse security architecture diagram The Glance Cobrowse service relies on a script loader tag embedded into each page of a customer website. This tag references a JavaScript file hosted by Glance on their own secure content distribution network. This section refers to the visitor side JavaScript file as Cobrowse.js. When a customer clicks a button to start a cobrowse session, the Glance cobrowse loader script handles the click by: * Reading the glance-cobrowse script or meta tag to determine parameters such as "group" and "staging vs. production" * Adding, based on those parameters, a `