Deployment procedure for Zendesk Support
Deployment procedure for Zendesk Support
Once you’ve added a Zendesk source in your Coveo organization, you must:
-
Install the Coveo application in your Zendesk Agent Dashboard.
-
Generate an API key to load the Insight Panel.
Install the Coveo application in Zendesk
-
Install the Coveo Search App.
-
On the installation page, enter your Coveo organization ID.
-
(Optional) Enter specific field names to add to the allowlist.
-
(Optional) Enter specific field names to add to the blocklist.
Notes-
By default, all ticket fields are sent to Coveo as context and are used to automatically surface support content to agents in the Coveo Search app. If you wish to only use part of the ticket content, add the field names to the Fields Allowlist and Fields Blocklist accordingly. The field names must be specified as follows:
Ticket_<FIELD_NAME>
.For example, you want to add the ticket description to the blocklist. In that case, in Fields Blocklist, you would enter
Ticket_Description
. -
You can view or edit the ticket fields as required, or you can create a custom field to add to the ticket.
-
-
Select the roles that should have access to the Coveo application.
-
Select the roles that should be restricted from the Coveo Application.
-
Click Install.
Create search pages
-
On the Search Pages (platform-ca | platform-eu | platform-au) page, create the following search pages with the Interface Editor:
-
zd_support_new_ticket_sidebar
-
zd_support_ticket_sidebar
-
-
Once the pages are created, click Edit Interface, and then Code View for each page, and replace the existing code with the this code.
-
Create another search page named
zd_support_top_bar
for the top toolbar.
Note
This search page can be further customized at a later time as needed. |
Generate API key
To authorize the search interface to send queries and retrieve results from your Coveo organization, you must generate an API Key in the Coveo Administration Console.
-
Create an API key with the following privileges:
Service Domain Required access level Analytics
Analytics Data
Push
Search
Impersonate
Allowed
NoteThe API key is used only once to authorize the search interface and isn’t re-used afterwards. Once the authorization is complete, you can delete the key.
-
Copy the API key.
-
Back on the Agent Dashboard, click the Coveo icon located on the top bar.
-
Paste the API key and click Authorize.
-
In the Coveo for Zendesk by Coveo pop-up, click Allow.
View ticket with Insight Panel
The Top Bar appears on the top of the Agent Dashboard with a Coveo search box. By selecting a ticket, the Coveo for Zendesk Insight Panel will appear on the right side of the ticket.
Leading practices
To improve the relevance of search results in the Insight Panel, you can do the following with the default query pipeline:
-
Query parameter rules allow you to modify the query parameters before they’re sent to the index. For example, the parameter
Override query parameter lq with <@+ $context.ticket_Subject $context.ticket_Description+@>
can be used to override thelq
query parameter with the ticket subject and description. With that, the search results will be filtered to show only those that are relevant to the ticket being viewed. This can help agents find the required information quicker to resolve the ticket. -
Create and associate an Automatic Relevance Tuning (ART) model.
The ITD (Intent to Detail) feature of the ART model allow you to boost results based on user behavior. When used in conjunction with query parameter rules, the ART model can be even more effective. For example, you can create an ART model that boosts results based on the ticket status. When the ticket status is set to
Solved
, the ART model will boost results that are relevant to solved tickets.
Reference
Search page code
Enter this code into the Code View of the zd_support_new_ticket_sidebar
and the zd_support_ticket_sidebar
search pages.
<div id="search" class="CoveoSearchInterface" data-results-per-page="5">
<div class="CoveoFolding"></div>
<div class="CoveoAnalytics"></div>
<div class="coveo-tab-section">
<a class="CoveoTab" data-id="All" data-caption="All"></a>
<a class="CoveoTab" data-id="Confluence" data-caption="Wiki" data-expression="@connectortype==Confluence2Crawler AND NOT @documenttype==Space"></a>
<a class="CoveoTab" data-id="GoogleDrive" data-caption="KB" data-expression="@connectortype==GoogleDriveCrawler AND @documenttype==(File,Folder)"></a>
<a class="CoveoTab" data-id="Lithium" data-caption="Community" data-expression="@litopicid @filetype==lithiummessage" data-sort="date descending"></a>
<a class="CoveoTab" data-id="ServiceNow" data-caption="ServiceNow" data-expression="@snsysid"></a>
<a class="CoveoTab" data-id="YouTube" data-caption="YouTube" data-expression="@filetype=="youtubevideo""></a>
</div>
<div class="CoveoUserActions"></div>
<div class="coveo-search-section">
<div class="CoveoSearchbox" data-enable-omnibox="true"></div>
</div>
<div class="coveo-main-section">
<div class="coveo-facet-column">
<div class="CoveoDynamicFacet" data-title="Type" data-field="@objecttype" data-tab="All"></div>
<div class="CoveoDynamicFacet" data-title="FileType" data-field="@filetype" data-tab="All"></div>
<div class="CoveoDynamicFacet" data-title="Author" data-field="@author" data-tab="All"></div>
<div class="CoveoDynamicFacet" data-title="Type" data-field="@confdocumenttype" data-tab="Confluence"></div>
<div class="CoveoDynamicFacet" data-title="Space" data-field="@confspacename" data-tab="Confluence"></div>
<div class="CoveoDynamicFacet" data-title="FileType" data-field="@filetype" data-tab="Confluence"></div>
<div class="CoveoDynamicFacet" data-title="Author" data-field="@author" data-tab="Confluence"></div>
<div class="CoveoDynamicFacet" data-title="FileType" data-field="@filetype" data-tab="GoogleDrive"></div>
<div class="CoveoDynamicFacet" data-title="Origin" data-field="@gdfilesource" data-tab="GoogleDrive"></div>
<div class="CoveoDynamicFacet" data-title="Owner" data-field="@author" data-tab="GoogleDrive"></div>
<div class="CoveoDynamicFacet" data-title="Last modified By" data-field="@gdfilelastmodifyinguserdisplayname" data-tab="GoogleDrive"></div>
<div class="CoveoDynamicFacet" data-title="Shared To" data-field="@to" data-tab="GoogleDrive"></div>
<div class="CoveoDynamicFacet" data-title="Shared From" data-field="@from" data-tab="GoogleDrive"></div>
<div class="CoveoDynamicFacet" data-title="Category" data-field="@licategoryshorttitle" data-tab="Lithium">
</div>
<div class="CoveoDynamicFacet" data-title="Board" data-field="@liboardshorttitle" data-tab="Lithium"></div>
<div class="CoveoDynamicFacet" data-title="Author" data-field="@limessageauthor" data-tab="Lithium"></div>
<div class="CoveoDynamicFacet" data-title="Year" data-field="@year" data-tab="Lithium"></div>
<div class="CoveoDynamicFacet" data-title="Month" data-field="@month" data-tab="Lithium"></div>
<div class="CoveoDynamicFacet" data-title="Type" data-field="@objecttype" data-tab="Salesforce"></div>
<div class="CoveoDynamicFacet" data-title="Status" data-field="@sfstatus" data-tab="Salesforce"></div>
<div class="CoveoDynamicFacet" data-title="Close quarter" data-field="@sfopportunityclosedquarterc" data-tab="Salesforce"></div>
<div class="CoveoDynamicFacet" data-title="Salesforce Account" data-field="@sfaccountname" data-tab="Salesforce"></div>
<div class="CoveoDynamicFacet" data-title="Salesforce Owner" data-field="@sfownername" data-tab="Salesforce"></div>
<div class="CoveoDynamicFacet" data-title="Opportunity Type" data-field="@sfopportunitytype" data-tab="Salesforce"></div>
<div class="CoveoDynamicFacet" data-title="Opportunity Stage" data-field="@sfopportunitystagename" data-tab="Salesforce"></div>
<div class="CoveoDynamicFacet" data-title="Lead Source" data-field="@sfleadsource" data-tab="Salesforce"></div>
<div class="CoveoDynamicFacet" data-title="Created By" data-field="@sfcreatedbyname" data-tab="Salesforce"></div>
<div class="CoveoDynamicFacet" data-title="Type" data-field="@objecttype" data-tab="ServiceNow"></div>
<div class="CoveoDynamicFacet" data-title="Priority" data-field="@snpriority" data-tab="ServiceNow"></div>
<div class="CoveoDynamicFacet" data-title="Urgency" data-field="@snurgency" data-tab="ServiceNow"></div>
<div class="CoveoDynamicFacet" data-title="Opened By" data-field="@snopenedbytitle" data-tab="ServiceNow"></div>
<div class="CoveoDynamicFacet" data-title="State" data-field="@snstate" data-tab="ServiceNow"></div>
<div class="CoveoDynamicFacet" data-title="Category" data-field="@sncategory" data-tab="ServiceNow"></div>
<div class="CoveoDynamicFacet" data-title="Product" data-field="@sncmdbciname" data-tab="ServiceNow"></div>
<div class="CoveoDynamicFacet" data-title="Author" data-field="@author" data-tab="YouTube"></div>
</div>
<div class="coveo-results-column">
<div class="CoveoShareQuery"></div>
<div class="CoveoPreferencesPanel">
<div class="CoveoResultsPreferences"></div>
<div class="CoveoResultsFiltersPreferences"></div>
</div>
<div class="CoveoTriggers"></div>
<div class="CoveoBreadcrumb"></div>
<div class="CoveoDidYouMean"></div>
<div class="coveo-results-header">
<div class="coveo-summary-section">
<span class="CoveoQuerySummary"><div class="coveo-show-if-no-results"></div></span>
</div>
<div class="coveo-result-layout-section">
<span class="CoveoResultLayout"></span>
</div>
<div class="coveo-sort-section">
<span class="CoveoSort" data-sort-criteria="relevancy" data-caption="Relevance"></span>
<span class="CoveoSort" data-sort-criteria="date descending,date ascending" data-caption="Date"></span>
</div>
</div>
<div class="CoveoHiddenQuery"></div>
<div class="CoveoErrorReport" data-pop-up="false"></div>
<div class="CoveoResultList" data-layout="list" data-wait-animation="fade" data-auto-select-fields-to-include="true">
<script id="Salesforce" class="result-template" type="text/html" data-layout="list" data-field-filetype="SalesforceItem">
<div class="coveo-result-frame">
<div class="CoveoResultActionsMenu">
<div class="CoveoQuickview" data-use-advanced-quickview="true"></div>
</div>
<div class="coveo-result-cell" style="vertical-align: top;">
<div class="coveo-result-row" style="margin-top:0;">
<div class="coveo-result-cell" style="vertical-align:top;font-size:16px;">
<span class="badge" data-field="@filetype" style="margin-right:5px; background-color: #03363D; color: white; border-radius: 2px; padding: 2px; font-size: 14px;">Knowledge</span>
<span></span>
<a class="CoveoResultLink"></a>
</div>
</div>
<div class="coveo-result-row" style="">
<div class="coveo-result-cell">
<span class="CoveoExcerpt" data-html-value="true"></span>
</div>
</div>
<div class="coveo-result-row">
<div class="coveo-result-cell">
<div class="CoveoMissingTerms"></div>
</div>
</div>
</div>
</div>
</script>
<script id="YouTubeVideo" class="result-template" type="text/html" data-layout="list" data-field-filetype="YouTubeVideo">
<div class="coveo-result-frame">
<div class="CoveoResultActionsMenu">
<div class="CoveoQuickview" data-use-advanced-quickview="true"></div>
</div>
<div class="coveo-result-row">
<div class="coveo-result-cell">
<div class="coveo-result-row">
<div class="coveo-result-cell" style="font-size:16px">
<a class="CoveoResultLink">
</a>
</div>
</div>
<div class="coveo-result-row" style="margin-top:10px;">
<div class="coveo-result-cell">
<span class="CoveoYouTubeThumbnail">
</span>
</div>
</div>
<div class="coveo-result-row" style="margin-top:10px;">
<div class="coveo-result-cell">
<span class="CoveoFieldValue" data-field="@author" data-text-caption="Author" style="margin-right:30px;"></span>
<span class="CoveoFieldValue" data-field="@ytvideoduration" data-helper="timeSpan" data-helper-options-is-milliseconds="false"
data-text-caption="Length" style="margin-right:30px;"></span>
<span class="CoveoFieldValue" data-field="@ytviewcount" data-text-caption="Views" style="margin-right:30px;"></span>
<span class="CoveoFieldValue" data-field="@language" data-text-caption="Language" style="margin-right:30px;"></span>
</div>
</div>
<div class="coveo-result-row">
<div class="coveo-result-cell">
<div class="CoveoMissingTerms"></div>
</div>
</div>
</div>
</div>
</div>
</script>
<script id="Answer" class="result-template" type="text/html" data-layout="list" data-field-filetype="kb_social_qa_answer">
<div class="coveo-result-frame">
<div class="CoveoResultActionsMenu">
<div class="CoveoQuickview" data-use-advanced-quickview="true"></div>
</div>
<div class="coveo-result-cell" style="vertical-align: top;">
<div class="coveo-result-row" style="margin-top:0;">
<div class="coveo-result-cell" style="vertical-align:top;font-size:16px;">
<span class="CoveoFieldValue badge" data-field="@filetype" style="margin-right:5px; background-color: #03363D; color: white; border-radius: 2px; padding: 2px; font-size: 14px;"
data-helper="translatedCaption"></span>
<span></span>
<a class="CoveoResultLink"></a>
</div>
</div>
<div class="coveo-result-row" style="margin-top:5px;">
<div class="coveo-result-cell">
<span class="CoveoFieldValue answer" data-field="@snanswer" data-html-value="true"></span>
</div>
</div>
<div class="coveo-result-row">
<div class="coveo-result-cell">
<div class="CoveoMissingTerms"></div>
</div>
</div>
</div>
</div>
</script>
<script id="Default" class="result-template" type="text/html" data-layout="list">
<div class="coveo-result-frame">
<div class="CoveoResultActionsMenu">
<div class="CoveoQuickview" data-use-advanced-quickview="true"></div>
</div>
<div class="coveo-result-cell" style="vertical-align: top;">
<div class="coveo-result-row" style="margin-top:0;">
<div class="coveo-result-cell" style="vertical-align:top;font-size:16px;">
<span class="CoveoFieldValue badge" data-field="@filetype" style="margin-right:5px; background-color: #03363D; color: white; border-radius: 2px; padding: 2px; font-size: 14px;"
data-helper="translatedCaption"></span>
<span></span>
<a class="CoveoResultLink"></a>
</div>
</div>
<div class="coveo-result-row" style="">
<div class="coveo-result-cell">
<span class="CoveoExcerpt" style="font-size: 14px;"></span>
</div>
</div>
<div class="coveo-result-row" style="font-size: 12px;">
<div class="coveo-result-cell">
<span class="CoveoFieldValue" data-field="@author" data-text-caption="Author" style="margin-right:10px;"></span>
<span class="CoveoFieldValue" data-field="@source" data-text-caption="Source" style="margin-right:10px;"></span>
</div>
</div>
<div class="coveo-result-row">
<div class="coveo-result-cell">
<div class="CoveoMissingTerms"></div>
</div>
</div>
</div>
</div>
</script>
</div>
<div class="CoveoPager"></div>
<div class="CoveoLogo"></div>
</div>
</div>
</div>