Integrate a Coveo ClientIdAccessor Lightning component
Integrate a Coveo ClientIdAccessor Lightning component
|
|
Available since
This feature was introduced in the August 2023 release of Coveo for Salesforce version 5.2. |
The Coveo ClientIdAccessor Lightning component reads and writes the client ID in the CoveoV2 namespace localStorage.
Due to Lightning Locker restrictions, a Lightning component that belongs to a different namespace can’t directly access the client ID in the CoveoV2 namespace localStorage.
The Coveo ClientIdAccessor Lightning component offers methods to access and manipulate the client ID in the CoveoV2 namespace so it can be retrieved and reused across sites during a
visit.
Overview
All components that send Coveo Analytics events require a client ID.
To ensure proper reporting, both custom components and CoveoV2 packaged components must send the same client ID value.
The Coveo ClientIdAccessor Lightning component lets you manipulate the client ID in the CoveoV2 components to ensure the same client ID value is shared by all components that send UA events.
|
|
Note
The Coveo UA library that’s used to log Coveo Case Assist events checks the localStorage for the client ID.
If there’s no client ID in the localStorage, it creates one.
This can cause issues if you have other components that log UA events by accessing the client ID in the |
Procedure
-
Create a new Aura component using a descriptive name such as
ClientIdHandler.cmp. -
Use the Coveo
ClientIdAccessorcomponent from theCoveoV2namespace and associate anaura:idto it.<!-- ClientIdHandler.cmp --> <aura:component implements="forceCommunity:availableForAllPageTypes"> <aura:handler name="init" value="{!this}" action="{!c.doInit}"/> <CoveoV2:ClientIdAccessor aura:id="clientIdAccessor"/> </aura:component>NoteThe
implements="forceCommunity:availableForAllPageTypes"attribute tells the Lightning framework that your component can be used in the drag-and-drop interface in the Experience Builder. -
Access the client ID in the
CoveoV2namespace localStorage and save the value in the localStorage of thecnamespace.// ClientIdHandler.js ({ doInit: function(component) { const clientIdCmp = component.find("clientIdAccessor"); // Access the ClientID value from the CoveoV2 namespace. const clientId = clientIdCmp.getClientId(); // Access the ClientID value from the c namespace. const cClientId = localStorage.getItem('visitorId'); const key = 'coveo_visitorId'; if(clientId) { // If there's a value in the CoveoV2 namespace, use it. // Save the value in the c namespace localStorage so it // can be used by other components. localStorage.setItem('visitorId', clientId); const host = window.location.hostname; if (host.indexOf('.') === -1) { document.cookie = `${key}=${encodeURIComponent(clientId)}` + ';path=/;SameSite=Lax'; } else { const domainParts = host.split('.'); const domain = domainParts[domainParts.length - 2] + '.' + domainParts[domainParts.length - 1]; document.cookie = `${key}=${encodeURIComponent(clientId)}` + (domain ? `;domain=${domain}` : '') + ';path=/;SameSite=Lax'; } } else if(cClientId) { // If there is no value in the CoveoV2 namespace, // but there is one in the c namespace, set it to the CoveoV2 namespace. clientIdCmp.setClientId(cClientId); } } })NoteAny page where you want to use the client ID will now be able to access it in the localStorage.
-
Include your newly created custom Aura component in the pages where you want to make the client ID available in the localStorage (for example, in a Case Assist page).
See also
-
For developer reference documentation, see ClientIdAccessor Lightning component.
-
For information on how to log UA events in the Case Assist workflow, see Log Case Assist events.
-
For information on how to generate a Case Assist dashboard based on the standard Case Assist events, see Generate Case Assist reports.