Integrate a Coveo ClientIdAccessor Lightning component
Integrate a Coveo ClientIdAccessor Lightning component
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 usage 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
ClientIdAccessor
component from theCoveoV2
namespace and associate anaura:id
to 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
CoveoV2
namespace localStorage and save the value in the localStorage of thec
namespace.// 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.