<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://all.docs.genesys.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Llannoye</id>
	<title>Genesys Documentation - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://all.docs.genesys.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Llannoye"/>
	<link rel="alternate" type="text/html" href="https://all.docs.genesys.com/Special:Contributions/Llannoye"/>
	<updated>2026-05-02T23:29:27Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>https://all.docs.genesys.com/index.php?title=PEC-COB/Current/Developer/GCBCobrowseSessions&amp;diff=65162</id>
		<title>PEC-COB/Current/Developer/GCBCobrowseSessions</title>
		<link rel="alternate" type="text/html" href="https://all.docs.genesys.com/index.php?title=PEC-COB/Current/Developer/GCBCobrowseSessions&amp;diff=65162"/>
		<updated>2020-08-31T21:02:18Z</updated>

		<summary type="html">&lt;p&gt;Llannoye: Published&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article&lt;br /&gt;
|Standalone=No&lt;br /&gt;
|DisplayName=Genesys Co-browse sessions&lt;br /&gt;
|TocName=Genesys Co-browse sessions&lt;br /&gt;
|Context=Co-browse sessions are the interactions between customers and agents, where privacy and security are priorities.&lt;br /&gt;
|ComingSoon=No&lt;br /&gt;
|Platform=GenesysEngage-cloud&lt;br /&gt;
|Role=Administrator, Developer&lt;br /&gt;
|Section={{Section&lt;br /&gt;
|alignment=Vertical&lt;br /&gt;
|structuredtext=A session is initiated when a customer requests to co-browse. The session stays idle until the agent joins, then the session is considered to be active. The session ends when one of the parties (the customer or the agent) exits. It is not possible to re-join a co-browse session. If one party exits accidentally, a new session must be initiated. An agent is limited to handling one co-browse session at a time.&lt;br /&gt;
|Status=No&lt;br /&gt;
}}{{Section&lt;br /&gt;
|sectionHeading=Session identifiers&lt;br /&gt;
|anchor=Sessionidentifiers&lt;br /&gt;
|alignment=Vertical&lt;br /&gt;
|structuredtext=Each live session has an identifier that can be used to track the session. This session ID is a sequence of nine digits that is applicable only to live sessions.&lt;br /&gt;
|Status=No&lt;br /&gt;
}}{{Section&lt;br /&gt;
|sectionHeading=Starting a session&lt;br /&gt;
|anchor=Startingasession&lt;br /&gt;
|alignment=Vertical&lt;br /&gt;
|structuredtext=A co-browse session can only be initiated by a customer. An agent does not have the option or ability to send a co-browse request to a customer. This provides greater security to the customer. In order to initiate a co-browse session, the customer must already be engaged in an interaction with an agent, be it a voice call or a chat.&lt;br /&gt;
&lt;br /&gt;
When the session is established, the agent's browser displays a view of the customer's browser. This view that the agent sees is loaded from Genesys Co-browse. The agent is not a client of the website. All actions taken by the agent are passed onto and &amp;quot;replayed&amp;quot; on the customer's side.&lt;br /&gt;
&lt;br /&gt;
{{Section&lt;br /&gt;
|sectionHeading=Starting a co-browse session from Genesys Widgets&lt;br /&gt;
|Type=Structured|gif=No|Media=Image|anchor=GWidge|alignment=Horizontal|structuredtext=A customer initiates a co-browse session through a {{Link-AnywhereElse|product=WID|version=Current|manual=Developer|topic=GWCDeployment|display text=Genesys Widget}} integrated into the website. You can enable Genesys Co-browse in several Genesys Widgets. &lt;br /&gt;
&lt;br /&gt;
Here is an example of starting a co-browse session from the {{Link-AnywhereElse|product=WID|version=Current|manual=SDK|topic=WebChat-combined|display text=WebChat Widget.}}&lt;br /&gt;
|image=GCB StartCobrowse5.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Section&lt;br /&gt;
|sectionHeading=&lt;br /&gt;
|Type=Structured|gif=No|Media=Image|anchor=|alignment=Horizontal|structuredtext=This example shows a customer and agent view of a co-browse session started from the {{Link-AnywhereElse|product=WID|version=Current|manual=SDK|topic=WebChat-combined|display text=WebChat Widget.}}&lt;br /&gt;
|image=GCB Cust Agent View WebChatWidget.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Section&lt;br /&gt;
|sectionHeading=&lt;br /&gt;
|Type=Structured|gif=No|Media=Image|anchor=|alignment=Horizontal|structuredtext=And here is an example of starting a co-browse session from the {{Link-AnywhereElse|product=WID|version=Current|manual=SDK|topic=ChannelSelector-combined|display text=ChannelSelector Widget.}}&lt;br /&gt;
|image=GCB New Start ChannelSelectorWidget.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Section&lt;br /&gt;
|sectionHeading=&lt;br /&gt;
|Type=Structured|gif=No|Media=Image|anchor=|alignment=Horizontal|structuredtext=This example shows starting a co-browse session from the {{Link-AnywhereElse|product=WID|version=Current|manual=SDK|topic=CallUs-combined|display text=CallUs Widget}} with the '''browse with you''' link as the co-browse option.&lt;br /&gt;
|image=GCB CallUsWidget CB Option.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section&lt;br /&gt;
|sectionHeading=&lt;br /&gt;
|Type=Structured|gif=No|Media=Image|anchor=|alignment=Horizontal|structuredtext=After clicking '''browse with you''' in the {{Link-AnywhereElse|product=WID|version=Current|manual=SDK|topic=CallUs-combined|display text=CallUs Widget}} the customer will see this dialog.&lt;br /&gt;
|image=GCB CallUsWidget Dialog.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section&lt;br /&gt;
|sectionHeading=Stopping a co-browse session from Genesys Widgets&lt;br /&gt;
|Type=Structured|gif=No|Media=Image|anchor=|alignment=Horizontal|structuredtext=Once a co-browse session has been established, both parties have the ability to terminate the session. At any time, either party may click the '''Exit Co-browse session''' icon next to the session ID.  The agent can also exit by clicking {{Link-AnywhereElse|product=PEC-AD|version=Current|manual=Agent|topic=ADcobrow|anchor=Scbs|display text='''Exit Session'''}} in Agent Desktop. &lt;br /&gt;
&lt;br /&gt;
The other party will be notified that the session has ended, and the agent's browser will no longer display a view of the customer's browser. Also, if the primary interaction (chat or voice call) is terminated, the co-browse session terminates automatically. Sessions can also terminate due to inactivity, after a pre-configured timeout expires. Likewise, if the agent closes their browser, or navigates to a third-party website, the session will terminate if the agent does not return to the session page within the pre-configured timeout.&lt;br /&gt;
&lt;br /&gt;
Once a session has been terminated, it cannot be reactivated. If the session was deactivated accidentally, a new session has to be initiated, with a new session identifier.&lt;br /&gt;
|image=GCB Stop Cobrowse1.png&lt;br /&gt;
}}&lt;br /&gt;
|Status=No&lt;br /&gt;
}}{{Section&lt;br /&gt;
|sectionHeading=Participating in a co-browse session&lt;br /&gt;
|anchor=Participatinginaco-browsesession&lt;br /&gt;
|alignment=Vertical&lt;br /&gt;
|structuredtext=Once a co-browse session begins, the agent can use his or her mouse pointer to guide the customer through the web site. Agents start co-browse sessions in {{Link-AnywhereElse|product=PEC-AD|version=Current|manual=Agent|topic=ADcobrow|anchor=PointerMode|display text=Pointer Mode}}. In Pointer Mode, the customer and the agent can see each other's mouse pointer but the agent can not enter any information into the web page, click buttons, or navigate the customer's browser. If the agent needs to enter information into the web page or to navigate the browser, he or she can send the customer a request to switch the co-browse session to {{Link-AnywhereElse|product=PEC-AD|version=Current|manual=Agent|topic=ADcobrow|anchor=WriteMode|display text=Write Mode}}. &lt;br /&gt;
&lt;br /&gt;
All actions (mouse clicks, key presses, and so on) are actually performed on the customer side. Any actions taken by the agent are sent to the customer's browser. This ensures a secure approach, as all browsing is done on one side&amp;amp;mdash;the customer's side. This approach also provides for greater performance and a more seamless customer experience. Each participant can see the other participant's mouse movements as well. This enables an agent to point to specific sections on the web page to help direct the customer through their task.&lt;br /&gt;
|Status=No&lt;br /&gt;
}}{{Section&lt;br /&gt;
|sectionHeading=Restricting visibility of sensitive data&lt;br /&gt;
|alignment=Horizontal&lt;br /&gt;
|Media=Image&lt;br /&gt;
|image=GCB90Data_masking_agent_customer.png&lt;br /&gt;
|structuredtext=You can limit which fields are visible to and editable by the agent and which elements are controlled by agents. This configuration task is made much easier for you by using the {{Link-SomewhereInThisManual|topic=GCBCobrowseRestrictionsMgr|anchor=top|display text=Co-browse DOM Restrictions Editor}}. &lt;br /&gt;
&lt;br /&gt;
Some fields can have the data masked. For example, you might choose to hide the customer's user name, email address, password, Social Security information, and so on, from the agent. The end user can easily identify which information is hidden (data masked) from the agent. By default, all passwords are masked.&lt;br /&gt;
&lt;br /&gt;
At the same time, control for some elements can be disabled. By default, all '''Submit''' buttons are deactivated for the agent. If he or she clicks on a '''Submit''' button, nothing happens. The customer always has permission to submit any web forms, just as they would while browsing normally.&lt;br /&gt;
|Status=No&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Llannoye</name></author>
		
	</entry>
	<entry>
		<id>https://all.docs.genesys.com/index.php?title=PEC-COB/Current/Developer/GCBCobrowseJavaScriptAPI&amp;diff=65161</id>
		<title>PEC-COB/Current/Developer/GCBCobrowseJavaScriptAPI</title>
		<link rel="alternate" type="text/html" href="https://all.docs.genesys.com/index.php?title=PEC-COB/Current/Developer/GCBCobrowseJavaScriptAPI&amp;diff=65161"/>
		<updated>2020-08-31T21:01:18Z</updated>

		<summary type="html">&lt;p&gt;Llannoye: Published&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article&lt;br /&gt;
|Standalone=No&lt;br /&gt;
|DisplayName=Genesys Co-browse JavaScript API&lt;br /&gt;
|TocName=Genesys Co-browse JavaScript API&lt;br /&gt;
|Context=For advanced users, deploying Co-browse to your website without using Genesys Widgets can give you the control you want for your environment.&lt;br /&gt;
|ComingSoon=No&lt;br /&gt;
|Platform=GenesysEngage-cloud&lt;br /&gt;
|Role=Developer&lt;br /&gt;
|Section={{Section&lt;br /&gt;
|alignment=Vertical&lt;br /&gt;
|structuredtext={{NoteFormat|This article contains advanced functionality and assumes that you are '''not''' using {{Link-AnywhereElse|product=WID|version=Current|manual=Developer|topic=GWCDeployment|display text=Genesys Widgets}} to add Co-browse to your website. {{Link-AnywhereElse|product=WID|version=Current|manual=Developer|topic=GWCDeployment|display text=Genesys Widgets}} is recommended in most cases.|1}}&lt;br /&gt;
|Status=No&lt;br /&gt;
}}{{Section&lt;br /&gt;
|sectionHeading=Deploying Co-browse to your website&lt;br /&gt;
|anchor=DeployingCo-browsetoyourwebsite&lt;br /&gt;
|alignment=Vertical&lt;br /&gt;
|structuredtext=Prerequisite: you must have Co-browse provisioned and an API Key provided to you.&lt;br /&gt;
&lt;br /&gt;
A good starting point is this script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
if(!window._genesys)window._genesys = {};&lt;br /&gt;
window._genesys.cobrowse = {&lt;br /&gt;
  apikey: &amp;lt;APIKEY&amp;gt;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;(function(d, s, id, o) {&lt;br /&gt;
  var fs = d.getElementsByTagName(s)[0], e;&lt;br /&gt;
  if (d.getElementById(id)) return;&lt;br /&gt;
  e = d.createElement(s); e.id = id; e.src = o.src;&lt;br /&gt;
  e.setAttribute('data-gcb-url', o.cbUrl);&lt;br /&gt;
  fs.parentNode.insertBefore(e, fs);&lt;br /&gt;
})(document, 'script', 'genesys-js', {&lt;br /&gt;
  src: &amp;quot;https://api.genesyscloud.com/gcb/cobrowse/js/gcb.min.js?apikey=&amp;lt;APIKEY&amp;gt;&amp;quot;,&lt;br /&gt;
  cbUrl: &amp;quot;https://api.genesyscloud.com/gcb/cobrowse&amp;quot;&lt;br /&gt;
});&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|Status=No&lt;br /&gt;
}}{{Section&lt;br /&gt;
|sectionHeading=Configuring Co-browse&lt;br /&gt;
|anchor=ConfiguringCo-browse&lt;br /&gt;
|alignment=Vertical&lt;br /&gt;
|structuredtext=Co-browse is configured via a &amp;lt;tt&amp;gt;global _genesys.cobrowse&amp;lt;/tt&amp;gt; variable.&lt;br /&gt;
&lt;br /&gt;
The following options are configurable as properties of an object passed to &amp;lt;tt&amp;gt;_genesys.cobrowse&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
===debug===&lt;br /&gt;
Default: false&lt;br /&gt;
&lt;br /&gt;
Set to &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt; to enable debugging console logs. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
window._genesys.cobrowse = {&lt;br /&gt;
  debug: true;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===disableBuiltInUI===&lt;br /&gt;
Default: false&lt;br /&gt;
&lt;br /&gt;
Set to &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt; to use a custom Co-browse UI. Use the Co-browse JavaScript API to implement a custom UI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
window._genesys.cobrowse = {&lt;br /&gt;
  disableBuiltInUI: true&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can still start the Co-browse session with just the configuration above, but the main components of the UI, such as the toolbar and notifications, will be missing.&lt;br /&gt;
&lt;br /&gt;
===primaryMedia===&lt;br /&gt;
Default: null&lt;br /&gt;
&lt;br /&gt;
Used to pass an object implementing an external media adapter interface.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var myPrimaryMedia = {&lt;br /&gt;
  initializeAsync: function(done) { /* initialize your media here and then call done() */ },&lt;br /&gt;
  isAgentConnected: function() { /* return true or false depending on whether an agent is connected */ },&lt;br /&gt;
  sendCbSessionToken: function(token) { /* send the Co-browse session token to agent */ }&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
window._genesys.cobrowse = {&lt;br /&gt;
  primaryMedia: myPrimaryMedia&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See {{Link-SomewhereInThisVersion|manual=Developer|topic=GCBCobrowseJavaScriptAPI|anchor=icbwc|display text=Integrating Co-browse with Chat}} for more details.&lt;br /&gt;
&lt;br /&gt;
If Co-browse does not detect any primary media or detects that the agent is not connected with the primary media, Co-browse will still ask the user, &amp;quot;Are you on the phone with representative?&amp;quot; before starting the Co-browse session.&lt;br /&gt;
&lt;br /&gt;
===setDocumentDomain===&lt;br /&gt;
Default: false&lt;br /&gt;
&lt;br /&gt;
Determines if Co-browse sets the &amp;lt;tt&amp;gt;document.domain&amp;lt;/tt&amp;gt; property. If set to &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, Co-browse modifies the &amp;lt;tt&amp;gt;document.domain&amp;lt;/tt&amp;gt; property. If set to &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;, Co-browse does not modify &amp;lt;tt&amp;gt;document.domain&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Co-browse modifies &amp;lt;tt&amp;gt;document.domain&amp;lt;/tt&amp;gt; to support cross-subdomain communication between iframes and the topmost context. Setting &amp;lt;tt&amp;gt;setDocumentDomain&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt; stops synchronization of subdomain iframes from working.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
window._genesys.cobrowse = {&lt;br /&gt;
  setDocumentDomain: true&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===disableBackForwardCache===&lt;br /&gt;
Default: true&lt;br /&gt;
&lt;br /&gt;
By default, Co-browse disables Safari's Back/Forward cache, which can stop Co-browse sessions from functioning.&lt;br /&gt;
&lt;br /&gt;
Setting &amp;lt;tt&amp;gt;disableBackForwardCache&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt; can make Co-browse unusable in Safari when users click the back or forward browser buttons.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
window._genesys.cobrowse = {&lt;br /&gt;
  disableBackForwardCache: false&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{AnchorDiv|ata}}&lt;br /&gt;
|Status=No&lt;br /&gt;
}}{{Section&lt;br /&gt;
|sectionHeading=Accessing the API&lt;br /&gt;
|anchor=AccessingtheAPI&lt;br /&gt;
|alignment=Vertical&lt;br /&gt;
|structuredtext=Since the main Co-browse JavaScript file is added to the page asynchronously, you cannot instantly access the Co-browse APIs. Instead, you must use a function that will accept the APIs as an argument.&lt;br /&gt;
&lt;br /&gt;
For that, add a special &amp;lt;tt&amp;gt;.onReady&amp;lt;/tt&amp;gt; property in &amp;lt;tt&amp;gt;_genesys.cobrowse&amp;lt;/tt&amp;gt; configuration and set it to empty array.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if(!window._genesys)window._genesys = {};&lt;br /&gt;
window._genesys.cobrowse = {&lt;br /&gt;
  apikey: &amp;lt;APIKEY&amp;gt;,&lt;br /&gt;
  onReady: []&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, you can use &amp;lt;tt&amp;gt;_genesys.cobrowse.onReady.push(callbackFn)&amp;lt;/tt&amp;gt; anywhere in your code. When the Co-browse JavaScript is loaded and the API is available, Co-browse will call back the &amp;lt;tt&amp;gt;callbackFn&amp;lt;/tt&amp;gt; with the reference to the API object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
_genesys.cobrowse.onReady.push(function(cobrowseApi) {&lt;br /&gt;
  // use the API here&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|Status=No&lt;br /&gt;
}}{{Section&lt;br /&gt;
|sectionHeading=Using the API&lt;br /&gt;
|anchor=UsingtheAPI&lt;br /&gt;
|alignment=Vertical&lt;br /&gt;
|structuredtext=This API provides methods and callbacks to work with Co-browse and can be used to implement a custom UI for co-browsing.&lt;br /&gt;
&lt;br /&gt;
===Co-browse in iframes===&lt;br /&gt;
Co-browse synchronizes the content of any iframes that exist on the page, given:&lt;br /&gt;
&lt;br /&gt;
*the iframe is on the same domain as the page&lt;br /&gt;
*the page in the iframe has Co-browse JavaScript&lt;br /&gt;
&lt;br /&gt;
Some Co-browse UI elements, such as the toolbar, should not appear in an iframe. Common Co-browse UI elements (such as notification that an element is masked) should appear whether or not Co-browse is in an iframe. As such, there are two contexts for the Co-browse JavaScript API: &lt;br /&gt;
&lt;br /&gt;
*Top context, available when Co-browse is not in an iframe but in &amp;quot;top&amp;quot; context.&lt;br /&gt;
*Child context, used when a page is rendered in an iframe. For the child context, a subset of the top context API is available.&lt;br /&gt;
&lt;br /&gt;
====isTopContext====&lt;br /&gt;
You can use the &amp;lt;tt&amp;gt;isTopContext&amp;lt;/tt&amp;gt; variable to determine which context Co-browse is rendered in. &amp;lt;tt&amp;gt;isTopContext&amp;lt;/tt&amp;gt; is passed to the &amp;lt;tt&amp;gt;onReady&amp;lt;/tt&amp;gt; callback and equals &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt; if Co-browse is rendered in the top context and &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt; in iframe.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
_genesys.cobrowse.onReady.push(function(cobrowseApi, isTopContext) {&lt;br /&gt;
  // common functionality&lt;br /&gt;
  cobrowseApi.onMaskedElement.add(function() {/* deal with masked elements here*/});&lt;br /&gt;
  if (!isTopContext) {&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  // top context functionality goes below&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See {{Link-SomewhereInThisVersion|manual=Developer|topic=GCBCobrowseJavaScriptAPI|anchor=ata|display text=Accessing the API}} if you are unfamiliar with the &amp;lt;tt&amp;gt;onReady&amp;lt;/tt&amp;gt; syntax above.&lt;br /&gt;
&lt;br /&gt;
===Signals and Callbacks===&lt;br /&gt;
The Co-browse API exposes a number of '''signals''' in both the top and child contexts. Each signal is an object with the following three methods:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;add(function)&amp;lt;/tt&amp;gt;—adds a callback&lt;br /&gt;
*&amp;lt;tt&amp;gt;addOnce(function)&amp;lt;/tt&amp;gt;—adds a callback that will be executed only once&lt;br /&gt;
*&amp;lt;tt&amp;gt;remove(function)&amp;lt;/tt&amp;gt;—removes a callback&lt;br /&gt;
&lt;br /&gt;
The naming convention for signal names begins with &amp;quot;on&amp;quot; and follows the format '''onSomethingHappened'''.&lt;br /&gt;
&lt;br /&gt;
{{NoteFormat|'''Signals''' act similar to '''deferred''' objects. If you add a callback to an event that has already happened, the callback will be called immediately. For example, if you add a callback to the &amp;lt;tt&amp;gt;onAgentJoined&amp;lt;/tt&amp;gt;&amp;lt;nowiki&amp;gt; signal when the event has already happened, the callback will be called immediately.}}&lt;br /&gt;
&lt;br /&gt;
{{AnchorDiv|sessobj}}&lt;br /&gt;
====Session Object====&lt;br /&gt;
Many callbacks receive a &amp;lt;tt&amp;gt;session&amp;lt;/tt&amp;gt; object as an argument. This object has the following properties:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;token&amp;lt;/tt&amp;gt;—String containing the session token shared with the agent and possibly shown in the UI. The token is a 9 digit string such as  &amp;quot;535176834&amp;quot;.&lt;br /&gt;
*&amp;lt;tt&amp;gt;agents&amp;lt;/tt&amp;gt;—Array of connected agents. Each element in the array is an object with no properties.&lt;br /&gt;
&lt;br /&gt;
===Common API===&lt;br /&gt;
The following elements and properties are available from both the top and child Co-browse contexts:&lt;br /&gt;
&lt;br /&gt;
====VERSION====&lt;br /&gt;
String containing current JS version. For example, &amp;lt;tt&amp;gt;9.0.002.02&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
console.log(_genesys.cobrowse.VERSION);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====onSessionStarted====&lt;br /&gt;
This signal is dispatched when a Co-browse session is successfully started such as when the &amp;lt;tt&amp;gt;Co-browse&amp;lt;/tt&amp;gt; button is pressed or when &amp;lt;tt&amp;gt;startSession()&amp;lt;/tt&amp;gt; is called.&lt;br /&gt;
&lt;br /&gt;
Arguments:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;session&amp;lt;/tt&amp;gt;—{{Link-SomewhereInThisVersion|manual=Developer|topic=GCBCobrowseJavaScriptAPI|anchor=sessobj|display text=Session &amp;lt;tt&amp;gt;object&amp;lt;/tt&amp;gt;}} representing the ongoing session.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function notifyCobrowseStarted(session) {&lt;br /&gt;
    alert('Co-browse has started. Spell this session token to our representative: ' + session.token);&lt;br /&gt;
}&lt;br /&gt;
cobrowseApi.onSessionStarted.add(notifyCobrowseStarted);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====onSessionEnded====&lt;br /&gt;
This signal is dispatched when a Co-browse session ends.&lt;br /&gt;
&lt;br /&gt;
Arguments:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;details&amp;lt;/tt&amp;gt;—Object with the follwing field:&lt;br /&gt;
**&amp;lt;tt&amp;gt;reason&amp;lt;/tt&amp;gt;—Field with value of a string or undefined. Possible string values:&lt;br /&gt;
***&amp;lt;tt&amp;gt;self&amp;lt;/tt&amp;gt;—The user has exited the session by clicking the &amp;lt;tt&amp;gt;Exit&amp;lt;/tt&amp;gt; button or calling the &amp;lt;tt&amp;gt;exitSession()&amp;lt;/tt&amp;gt; API method.&lt;br /&gt;
***&amp;lt;tt&amp;gt;external&amp;lt;/tt&amp;gt;—The agent has closed the session. Some server errors may also result in this value.&lt;br /&gt;
***&amp;lt;tt&amp;gt;timeout&amp;lt;/tt&amp;gt;—The session has timed out such as when a user reopens a page with an expired Co-browse cookie.&lt;br /&gt;
***&amp;lt;tt&amp;gt;intactivityTimeout&amp;lt;/tt&amp;gt;—The agent did not join a session in the configured amount of time.&lt;br /&gt;
***&amp;lt;tt&amp;gt;serverUnavailable&amp;lt;/tt&amp;gt;—The Co-browse server was unreachable.&lt;br /&gt;
***&amp;lt;tt&amp;gt;sessionsOverLimit&amp;lt;/tt&amp;gt;—Agent is busy with another co-browse session and is prohibited from starting another session at the same time.&lt;br /&gt;
***&amp;lt;tt&amp;gt;error&amp;lt;/tt&amp;gt;—There is an error such as a critical misconfiguration.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var cbEndedMessages = {&lt;br /&gt;
    self: 'You exited Co-browse session. Co-browse terminated',&lt;br /&gt;
    external: 'Co-browse session ended',&lt;br /&gt;
    timeout: 'Co-browse session timed out',&lt;br /&gt;
    inactivityTimeout: 'Agent did not join. Closing Co-browse session.',&lt;br /&gt;
    serverUnavailable: 'Could not reach Co-browse server',&lt;br /&gt;
    sessionsOverLimit: 'Agent is busy in another Co-browse session'&lt;br /&gt;
}&lt;br /&gt;
cobrowseApi.onSessionEnded.add(function(details) {&lt;br /&gt;
    alert(cbEndedMessages[details.reason] {{!}} {{!}} 'Something went wrong. Co-browse terminated.');&lt;br /&gt;
    showCobrowseButton();&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====markServiceElement(element)====&lt;br /&gt;
'''Service''' elements do not show up in the agent's view. This function is used to mark service elements in a custom Co-browse UI.&lt;br /&gt;
&lt;br /&gt;
Arguments:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;element&amp;lt;/tt&amp;gt;—HTML element that will be masked.&lt;br /&gt;
&lt;br /&gt;
{{NoteFormat|Elements must be marked as '''service''' elements '''before''' the Co-browse session begins. If the Co-browse session has already started, '''service''' elements should be marked before they are added to the DOM.&lt;br /&gt;
&lt;br /&gt;
It is also possible to mark elements as '''service''' without using this function. Doing so is useful for static HTML content. To do so, add an attribute &amp;lt;tt&amp;gt;data-gcb-service-node&amp;lt;/tt&amp;gt; with value &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;. }}&lt;br /&gt;
&lt;br /&gt;
{{NoteFormat|The &amp;lt;tt&amp;gt;markServiceElement()&amp;lt;/tt&amp;gt; method should not be used to hide sensitive information. Business functions like DOM Control and Data Masking should be used for sensitive content such as private user data.}}&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function createCustomCobrowseUI(cobrowseApi) {&lt;br /&gt;
    var toolbar = document.createElement('div');&lt;br /&gt;
    toolbar.className = 'cobrowseToolbar';&lt;br /&gt;
    toolbar.textContent = 'Co-browse is going on';&lt;br /&gt;
    cobrowseApi.markServiceElement(toolbar); // don't show the toolbar to agents&lt;br /&gt;
    cobrowseApi.onConnected.add(function() {&lt;br /&gt;
        document.body.appendChild(toolbar);&lt;br /&gt;
    })&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Static content example, without JS API usage:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;myChatWidget&amp;quot; data-origID=&amp;quot;myChatWidget&amp;quot;  data-origID=&amp;quot;myChatWidget&amp;quot;  data-origID=&amp;quot;myChatWidget&amp;quot;  data-origID=&amp;quot;myChatWidget&amp;quot;  data-origID=&amp;quot;myChatWidget&amp;quot;  data-origID=&amp;quot;myChatWidget&amp;quot;  data-origID=&amp;quot;myChatWidget&amp;quot;  data-gcb-service-node=&amp;quot;true&amp;quot;&amp;gt;...&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====onMaskedElement====&lt;br /&gt;
This signal is dispatched when Co-browse encounters an element that is subject to data masking.&lt;br /&gt;
&lt;br /&gt;
Arguments:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;element&amp;lt;/tt&amp;gt;—HTML Element&lt;br /&gt;
&lt;br /&gt;
This signal is dispatched multiple times when Co-browse initiates and can be dispatched again if a masked element is added to the page dynamically.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
cobrowseApi.onMaskedElement.add(function(element) {&lt;br /&gt;
    element.title = 'Content of this elements is masked for representatives.';&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Top Context API===&lt;br /&gt;
The following methods and properties are available only when Co-browse is rendered in the '''top''' context.&lt;br /&gt;
&lt;br /&gt;
====isBrowserSupported()====&lt;br /&gt;
&lt;br /&gt;
This method checks for the presence of MutationObserver and a few other required APIs, not for browser type and version. It returns &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt; when the browser supports required APIs and &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt; otherwise.&lt;br /&gt;
&lt;br /&gt;
====startSession()====&lt;br /&gt;
This method instantiates a new Co-browse session. It will throw an error if the browser is not supported.&lt;br /&gt;
&lt;br /&gt;
====exitSession()====&lt;br /&gt;
This method exits and ends an ongoing Co-browse session.&lt;br /&gt;
&lt;br /&gt;
====downgradeMode()====&lt;br /&gt;
This method immediately switches the current session from {{Link-SomewhereInThisVersion|manual=Developer|topic=GCBCobrowseSessions|anchor=Participatinginaco-browsesession|display text=Write Mode to Pointer Mode}}. The built-in Co-browse UI executes this method when an end user clicks &amp;quot;Revoke Control&amp;quot; while in Write Mode.&lt;br /&gt;
&lt;br /&gt;
See related signals: {{Link-SomewhereInThisVersion|manual=Developer|topic=GCBCobrowseJavaScriptAPI|anchor=omur|display text=onModeUpgradeRequested}} and {{Link-SomewhereInThisVersion|manual=Developer|topic=GCBCobrowseJavaScriptAPI|anchor=omc|display text=onModeChanged}}.&lt;br /&gt;
&lt;br /&gt;
====onInitialized====&lt;br /&gt;
This signal is dispatched after the page is loaded and the Co-browse business logic is initialized.&lt;br /&gt;
&lt;br /&gt;
Arguments:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;session&amp;lt;/tt&amp;gt;— {{Link-SomewhereInThisVersion|manual=Developer|topic=GCBCobrowseJavaScriptAPI|anchor=sessobj|display text=Session object}} representing the ongoing session or &amp;lt;tt&amp;gt;null&amp;lt;/tt&amp;gt; if there is no ongoing session.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
cobrowseApi.onInitialized.add(function(session) {&lt;br /&gt;
    if (!session) {&lt;br /&gt;
        showCobrowseButton();&lt;br /&gt;
    } else {&lt;br /&gt;
        showCobrowseToolbar(session);&lt;br /&gt;
    }&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====onAgentJoined====&lt;br /&gt;
This signal is dispatched when an agent successfully joins a session.&lt;br /&gt;
&lt;br /&gt;
Arguments:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;agent&amp;lt;/tt&amp;gt;—Object representing the new agent. This object has no properties.&lt;br /&gt;
*&amp;lt;tt&amp;gt;session&amp;lt;/tt&amp;gt;—{{Link-SomewhereInThisVersion|manual=Developer|topic=GCBCobrowseJavaScriptAPI|anchor=sessobj|display text=Session &amp;lt;tt&amp;gt;object&amp;lt;/tt&amp;gt;}} representing the ongoing session.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
cobrowseApi.onAgentJoined.add(function(agent, session) {&lt;br /&gt;
    alert('Representative has joined the session');&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====onAgentNavigated====&lt;br /&gt;
This signal is dispatched when the agent initiates navigation such as refresh, back, forward, or enters a URL into the agent Co-browse UI. Signal is dispatched a few seconds before the navigation happens. This can be used, for example, to send a warning to the user or disable the &amp;lt;tt&amp;gt;Exit session&amp;lt;/tt&amp;gt; button before navigation.&lt;br /&gt;
&lt;br /&gt;
Arguments:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;details&amp;lt;/tt&amp;gt;—Object containing the following navigation detail fields:&lt;br /&gt;
**&amp;lt;tt&amp;gt;command&amp;lt;/tt&amp;gt;—String with the value of &amp;lt;tt&amp;gt;back&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;refresh&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;forward&amp;lt;/tt&amp;gt;, or &amp;lt;tt&amp;gt;url&amp;lt;/tt&amp;gt;.&lt;br /&gt;
**&amp;lt;tt&amp;gt;url&amp;lt;/tt&amp;gt;—Optional string that is present only if the &amp;lt;tt&amp;gt;command&amp;lt;/tt&amp;gt; field has the value of &amp;lt;tt&amp;gt;url&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
cobrowseApi.onAgentNavigated.add(function(details) {&lt;br /&gt;
    if (details.url) {&lt;br /&gt;
        alert('Representative has navigated to the page: ' + details.url);&lt;br /&gt;
    } else {&lt;br /&gt;
        alert('Representative has pressed the &amp;quot;' + details.command + '&amp;quot; button. Page will be refreshed');&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====onNavigationFailed====&lt;br /&gt;
This signal is dispatched when the navigation request from the agent fails to execute such as when the agent navigates forward when there is no forward history. You can use this signal to to re-enable the &amp;lt;tt&amp;gt;Exit&amp;lt;/tt&amp;gt; button and/or show a notification.&lt;br /&gt;
&lt;br /&gt;
The callback receives no arguments.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
cobrowseApi.onNavigationFailed.add(function() {&lt;br /&gt;
    alert('Navigation request by representative has failed');&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{AnchorDiv|omur}}&lt;br /&gt;
&lt;br /&gt;
====onModeUpgradeRequested====&lt;br /&gt;
This signal is dispatched when an agent requests upgrading the Co-browse session to Write Mode. &lt;br /&gt;
&lt;br /&gt;
Arguments:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;done&amp;lt;/tt&amp;gt;&amp;amp;mdash;The function passed by the Co-browse code. Call it with &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt; to allow the transition to Write Mode, or with &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt; to prohibit.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
cobrowseApi.onModeUpgradeRequested.add(function(done) {&lt;br /&gt;
  if (confirm('Representative requests control over the web page. Allow?') {&lt;br /&gt;
    done(true); // allow upgrading to Write Mode&lt;br /&gt;
  } else {&lt;br /&gt;
    done(false); // disallow and stay in Pointer Mode&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{AnchorDiv|omc}}&lt;br /&gt;
&lt;br /&gt;
====onModeChanged====&lt;br /&gt;
This signal is dispatched when the Co-browse session Mode changes, either to Pointer or Write.&lt;br /&gt;
&lt;br /&gt;
Arguments:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;mode&amp;lt;/tt&amp;gt;&amp;amp;mdash;An object with two boolean properties:&lt;br /&gt;
**&amp;lt;tt&amp;gt;pointer&amp;lt;/tt&amp;gt;&amp;amp;mdash;This is &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt; if the session has switched from Write to Pointer Mode. Otherwise, it's &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;.&lt;br /&gt;
**&amp;lt;tt&amp;gt;write&amp;lt;/tt&amp;gt;&amp;amp;mdash;This is &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt; when the session has switched from Pointer to Write Mode.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
cobrowseApi.onModeChanged.add(function(mode) {&lt;br /&gt;
    if (mode.write) {&lt;br /&gt;
        alert(&amp;quot;Representative has now control over the page&amp;quot;);&lt;br /&gt;
    } else if (mode.pointer) {&lt;br /&gt;
        alert(&amp;quot;Representative can no longer control the page&amp;quot;).&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{AnchorDiv|icbwc}}&lt;br /&gt;
|Status=No&lt;br /&gt;
}}{{Section&lt;br /&gt;
|sectionHeading=Integrating Co-browse with Chat&lt;br /&gt;
|anchor=IntegratingCo-browsewithChat&lt;br /&gt;
|alignment=Vertical&lt;br /&gt;
|structuredtext=External chat can be connected to Co-browse via an adapter object assigned to the &amp;lt;tt&amp;gt;_genesys.cobrowse.primaryMedia&amp;lt;/tt&amp;gt; option. Such object may implement the following methods:&lt;br /&gt;
&lt;br /&gt;
===initializeAsync(done)===&lt;br /&gt;
Use this only if your chat initializes asynchronously and you cannot be sure it is ready before Co-browse.&lt;br /&gt;
&lt;br /&gt;
If the &amp;lt;tt&amp;gt;initializeAsync&amp;lt;/tt&amp;gt; method is implemented, the Co-browse JavaScript will call the method and pass it a done callback. You must call the done callback when your media finishes initialization.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var myChatAdapter = {&lt;br /&gt;
  initializeAsync: function(done) {&lt;br /&gt;
    waitForChatInitialization(function() {&lt;br /&gt;
      // tell Co-browse chat is now ready&lt;br /&gt;
      done();&lt;br /&gt;
    });&lt;br /&gt;
 }    &lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sendCbSessionToken(token)===&lt;br /&gt;
Co-browse will use it to pass the session token to the agent. The Co-browse session token is a string consisting of nine digits.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
myChatAdapter = {&lt;br /&gt;
    sendCbSessionToken: function(sessionToken) {&lt;br /&gt;
        myChat.sendMessage('User has started Co-browse session: ' + sessionToken);&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use Genesys Agent Desktop, wrap the Co-browse token in a &amp;lt;tt&amp;gt;{start:&amp;lt;TOKEN&amp;gt;}&amp;lt;/tt&amp;gt;, then the agent will join a Co-browse session as soon as he or she receives the token.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// For example:&lt;br /&gt;
myChatAdapter.sendCbSessionToken = function(token) {&lt;br /&gt;
  myChat.sendMessage('{start:' + token + '}');&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===isAgentConnected()===&lt;br /&gt;
&lt;br /&gt;
This method must return a &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Co-browse calls this method before calling the &amp;lt;tt&amp;gt;sendCbSessionToken&amp;lt;/tt&amp;gt;. If &amp;lt;tt&amp;gt;isAgentConnected&amp;lt;/tt&amp;gt; returns &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;, Co-browse will call the &amp;lt;tt&amp;gt;sendCbSessionToken&amp;lt;/tt&amp;gt; method. If &amp;lt;tt&amp;gt;isAgentConnected&amp;lt;/tt&amp;gt; returns &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;, the user will be asked to connect with an agent via phone before starting Co-browse. If the method is absent, the user will be asked to connect with an agent via phone or chat before starting Co-browse.&lt;br /&gt;
|Status=No&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Llannoye</name></author>
		
	</entry>
	<entry>
		<id>https://all.docs.genesys.com/index.php?title=File:GCB_CallUsWidget_Dialog.png&amp;diff=42891</id>
		<title>File:GCB CallUsWidget Dialog.png</title>
		<link rel="alternate" type="text/html" href="https://all.docs.genesys.com/index.php?title=File:GCB_CallUsWidget_Dialog.png&amp;diff=42891"/>
		<updated>2020-06-01T22:17:03Z</updated>

		<summary type="html">&lt;p&gt;Llannoye: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Llannoye</name></author>
		
	</entry>
	<entry>
		<id>https://all.docs.genesys.com/index.php?title=File:GCB_CallUsWidget_CB_Option.png&amp;diff=42888</id>
		<title>File:GCB CallUsWidget CB Option.png</title>
		<link rel="alternate" type="text/html" href="https://all.docs.genesys.com/index.php?title=File:GCB_CallUsWidget_CB_Option.png&amp;diff=42888"/>
		<updated>2020-06-01T22:04:11Z</updated>

		<summary type="html">&lt;p&gt;Llannoye: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Llannoye</name></author>
		
	</entry>
	<entry>
		<id>https://all.docs.genesys.com/index.php?title=File:GCB_New_Start_ChannelSelectorWidget.png&amp;diff=42887</id>
		<title>File:GCB New Start ChannelSelectorWidget.png</title>
		<link rel="alternate" type="text/html" href="https://all.docs.genesys.com/index.php?title=File:GCB_New_Start_ChannelSelectorWidget.png&amp;diff=42887"/>
		<updated>2020-06-01T22:03:26Z</updated>

		<summary type="html">&lt;p&gt;Llannoye: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Llannoye</name></author>
		
	</entry>
	<entry>
		<id>https://all.docs.genesys.com/index.php?title=File:GCB_Cust_Agent_View_WebChatWidget.png&amp;diff=42886</id>
		<title>File:GCB Cust Agent View WebChatWidget.png</title>
		<link rel="alternate" type="text/html" href="https://all.docs.genesys.com/index.php?title=File:GCB_Cust_Agent_View_WebChatWidget.png&amp;diff=42886"/>
		<updated>2020-06-01T22:02:22Z</updated>

		<summary type="html">&lt;p&gt;Llannoye: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Llannoye</name></author>
		
	</entry>
	<entry>
		<id>https://all.docs.genesys.com/index.php?title=File:GCB_StartCobrowse5.png&amp;diff=42872</id>
		<title>File:GCB StartCobrowse5.png</title>
		<link rel="alternate" type="text/html" href="https://all.docs.genesys.com/index.php?title=File:GCB_StartCobrowse5.png&amp;diff=42872"/>
		<updated>2020-06-01T21:26:09Z</updated>

		<summary type="html">&lt;p&gt;Llannoye: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Llannoye</name></author>
		
	</entry>
	<entry>
		<id>https://all.docs.genesys.com/index.php?title=File:GCB_Stop_Cobrowse1.png&amp;diff=42865</id>
		<title>File:GCB Stop Cobrowse1.png</title>
		<link rel="alternate" type="text/html" href="https://all.docs.genesys.com/index.php?title=File:GCB_Stop_Cobrowse1.png&amp;diff=42865"/>
		<updated>2020-06-01T20:55:36Z</updated>

		<summary type="html">&lt;p&gt;Llannoye: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Llannoye</name></author>
		
	</entry>
	<entry>
		<id>https://all.docs.genesys.com/index.php?title=File:GCB90Data_masking_agent_customer.png&amp;diff=42864</id>
		<title>File:GCB90Data masking agent customer.png</title>
		<link rel="alternate" type="text/html" href="https://all.docs.genesys.com/index.php?title=File:GCB90Data_masking_agent_customer.png&amp;diff=42864"/>
		<updated>2020-06-01T20:46:19Z</updated>

		<summary type="html">&lt;p&gt;Llannoye: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Llannoye</name></author>
		
	</entry>
	<entry>
		<id>https://all.docs.genesys.com/index.php?title=Draft:PEC-COB&amp;diff=42834</id>
		<title>Draft:PEC-COB</title>
		<link rel="alternate" type="text/html" href="https://all.docs.genesys.com/index.php?title=Draft:PEC-COB&amp;diff=42834"/>
		<updated>2020-06-01T19:22:59Z</updated>

		<summary type="html">&lt;p&gt;Llannoye: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MintyDocsProduct&lt;br /&gt;
|WithTabber=&lt;br /&gt;
|UserFunctions=&lt;br /&gt;
|displayname=Co-Browse&lt;br /&gt;
|contentarea=PureEngage&lt;br /&gt;
|landingpage=No&lt;br /&gt;
|definition=Co-browse lets your agents view and control your customers' browser windows.&lt;br /&gt;
|ComingSoon=No&lt;br /&gt;
|MintyDocsProductLandingSections={{MintyDocsProductLandingSections&lt;br /&gt;
|Type=Get Started&lt;br /&gt;
|Title=How it Works&lt;br /&gt;
|Description=&lt;br /&gt;
|Links=[[draft:PEC-COB/HIW|How Co-browse works]]&lt;br /&gt;
|Columns=No&lt;br /&gt;
}}{{MintyDocsProductLandingSections&lt;br /&gt;
|Platform=PureEngage&lt;br /&gt;
|Type=Release Notes&lt;br /&gt;
|Title=&lt;br /&gt;
|Description=&lt;br /&gt;
|Links=[https://docs.genesys.com/Documentation/PSAAS/Public/RN/Cobrowse Co-browse Release Notes]&lt;br /&gt;
|Columns=No&lt;br /&gt;
}}{{MintyDocsProductLandingSections&lt;br /&gt;
|Type=Get Started&lt;br /&gt;
|Title=&lt;br /&gt;
|Description=&lt;br /&gt;
|Links=*[[Draft:PEC-COB/Current/Developer/GCB|Get started with Co-browse]]&lt;br /&gt;
|Columns=No&lt;br /&gt;
}}{{MintyDocsProductLandingSections&lt;br /&gt;
|Type=Agent Features&lt;br /&gt;
|Title=&lt;br /&gt;
|Description=&lt;br /&gt;
|Links=[[Draft:PEC-AD/Current/Agent/ADcobrow|Co-browse sessions]]&lt;br /&gt;
|Columns=No&lt;br /&gt;
}}{{MintyDocsProductLandingSections&lt;br /&gt;
|Type=Developer Resources&lt;br /&gt;
|Title=&lt;br /&gt;
|Description=&lt;br /&gt;
|Links=[[Draft:PEC-COB/Current/Developer|Administrator's Guide]]&amp;lt;br /&amp;gt;&lt;br /&gt;
|Columns=No&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Llannoye</name></author>
		
	</entry>
	<entry>
		<id>https://all.docs.genesys.com/index.php?title=Draft:PEC-COB&amp;diff=42832</id>
		<title>Draft:PEC-COB</title>
		<link rel="alternate" type="text/html" href="https://all.docs.genesys.com/index.php?title=Draft:PEC-COB&amp;diff=42832"/>
		<updated>2020-06-01T19:17:06Z</updated>

		<summary type="html">&lt;p&gt;Llannoye: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MintyDocsProduct&lt;br /&gt;
|WithTabber=&lt;br /&gt;
|UserFunctions=&lt;br /&gt;
|displayname=Co-Browse&lt;br /&gt;
|contentarea=PureEngage&lt;br /&gt;
|landingpage=No&lt;br /&gt;
|definition=Co-browse lets your agents view and control your customers' browser windows.&lt;br /&gt;
|ComingSoon=No&lt;br /&gt;
|MintyDocsProductLandingSections={{MintyDocsProductLandingSections&lt;br /&gt;
|Type=Get Started&lt;br /&gt;
|Title=How it Works&lt;br /&gt;
|Description=&lt;br /&gt;
|Links=[[draft:PEC-COB/HIW|How Co-browse works]]&lt;br /&gt;
|Columns=No&lt;br /&gt;
}}{{MintyDocsProductLandingSections&lt;br /&gt;
|Platform=PureEngage&lt;br /&gt;
|Type=Release Notes&lt;br /&gt;
|Title=&lt;br /&gt;
|Description=&lt;br /&gt;
|Links=[https://docs.genesys.com/Documentation/PSAAS/Public/RN/Cobrowse Co-browse Release Notes]&lt;br /&gt;
|Columns=No&lt;br /&gt;
}}{{MintyDocsProductLandingSections&lt;br /&gt;
|Type=Get Started&lt;br /&gt;
|Title=&lt;br /&gt;
|Description=&lt;br /&gt;
|Links=*[[Draft:PEC-COB/Current/Developer/GCB|Get started with Co-browse]]&lt;br /&gt;
|Columns=No&lt;br /&gt;
}}{{MintyDocsProductLandingSections&lt;br /&gt;
|Type=Agent Features&lt;br /&gt;
|Title=&lt;br /&gt;
|Description=&lt;br /&gt;
|Links=[[Draft:PEC-AD/Current/Agent/ADcobrow|Co-browse sessions]]&lt;br /&gt;
|Columns=No&lt;br /&gt;
}}{{MintyDocsProductLandingSections&lt;br /&gt;
|Type=Developer Resources&lt;br /&gt;
|Title=&lt;br /&gt;
|Description=&lt;br /&gt;
|Links=*[[Draft:PEC-COB/Current/Developer|Administrator's Guide]]&lt;br /&gt;
*[https://docs.genesys.com/Documentation/PSAAS/Closed/Administrator/GCBCobrowseRealtimeAPI Realtime API (Restricted - login required)]&lt;br /&gt;
|Columns=No&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Llannoye</name></author>
		
	</entry>
	<entry>
		<id>https://all.docs.genesys.com/index.php?title=Draft:PEC-COB&amp;diff=42831</id>
		<title>Draft:PEC-COB</title>
		<link rel="alternate" type="text/html" href="https://all.docs.genesys.com/index.php?title=Draft:PEC-COB&amp;diff=42831"/>
		<updated>2020-06-01T19:14:31Z</updated>

		<summary type="html">&lt;p&gt;Llannoye: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MintyDocsProduct&lt;br /&gt;
|WithTabber=&lt;br /&gt;
|UserFunctions=&lt;br /&gt;
|displayname=Co-Browse&lt;br /&gt;
|contentarea=PureEngage&lt;br /&gt;
|landingpage=No&lt;br /&gt;
|definition=Co-browse lets your agents view and control your customers' browser windows.&lt;br /&gt;
|ComingSoon=No&lt;br /&gt;
|MintyDocsProductLandingSections={{MintyDocsProductLandingSections&lt;br /&gt;
|Type=Get Started&lt;br /&gt;
|Title=How it Works&lt;br /&gt;
|Description=&lt;br /&gt;
|Links=[[draft:PEC-COB/HIW|How Co-browse works]]&lt;br /&gt;
|Columns=No&lt;br /&gt;
}}{{MintyDocsProductLandingSections&lt;br /&gt;
|Platform=PureEngage&lt;br /&gt;
|Type=Release Notes&lt;br /&gt;
|Title=&lt;br /&gt;
|Description=&lt;br /&gt;
|Links=[https://docs.genesys.com/Documentation/PSAAS/Public/RN/Cobrowse Co-browse Release Notes]&lt;br /&gt;
|Columns=No&lt;br /&gt;
}}{{MintyDocsProductLandingSections&lt;br /&gt;
|Type=Get Started&lt;br /&gt;
|Title=&lt;br /&gt;
|Description=&lt;br /&gt;
|Links=*[[Draft:PEC-COB/Current/Developer/GCB|Get started with Co-browse]]&lt;br /&gt;
|Columns=No&lt;br /&gt;
}}{{MintyDocsProductLandingSections&lt;br /&gt;
|Type=Developer Resources&lt;br /&gt;
|Title=&lt;br /&gt;
|Description=&lt;br /&gt;
|Links=*[[Draft:PEC-COB/Current/Developer|Administrator's Guide]]&lt;br /&gt;
*[https://docs.genesys.com/Documentation/PSAAS/Closed/Administrator/GCBCobrowseRealtimeAPI Realtime API (Restricted - login required)]&lt;br /&gt;
|Columns=No&lt;br /&gt;
}}{{MintyDocsProductLandingSections&lt;br /&gt;
|Type=Agent Features&lt;br /&gt;
|Title=&lt;br /&gt;
|Description=&lt;br /&gt;
|Links=[[Draft:PEC-AD/Current/Agent/ADcobrow|Co-browse sessions]]&lt;br /&gt;
|Columns=No&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Llannoye</name></author>
		
	</entry>
</feed>