npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@coveops/deflection

v1.0.0

Published

Disclaimer: This component was built by the community at large and is not an official Coveo JSUI Component. Use this component at your own risk.

Downloads

428

Readme

Deflection

Disclaimer: This component was built by the community at large and is not an official Coveo JSUI Component. Use this component at your own risk.

Getting Started

  1. Install the component into your project.
npm i @coveops/deflection
  1. Use the Component or extend it

Typescript:

import { DeflectionInterface, IDeflectionInterfaceOptions, Deflection, IDeflectionOptions, DeflectionField, IFieldDeflectionOptions, Submit, ISubmitOptions, Cancel, ICancelOptions, DeflectionEvents } from '@coveops/deflection';

Javascript

const Deflection = require('@coveops/deflection').Deflection;
  1. You can also expose the component alongside other components being built in your project.
export * from '@coveops/deflection'
  1. Or for quick testing, you can add the script from unpkg
<script src="https://unpkg.com/@coveops/deflection@latest/dist/index.min.js"></script>

Disclaimer: Unpkg should be used for testing but not for production.

  1. Include the components in your template as follows:

Instead of using the standard CoveoSearchInterface component, we use the CoveoDeflectionInterface component. On the left side of the screen, we create a contact form that allows users to input mandatory information to open a support case. The contact form is created using CoveoDeflection, CoveoDeflectionField, CoveoDeflectionSubmit and CoveoDeflectionCancel components. By configuring caseField option on the CoveoDeflectionField component, we are sending the input value in the query context so we can override q and lq in the query pipeline. This is following the same documented approach to build a Self-Service Case Deflection using Coveo for Salesforce or Coveo for ServiceNow.

<div id="coveo-self-service-case-deflection-interface" class="CoveoDeflectionInterface" data-enable-history="false" data-auto-trigger-query="true" style="border: 1px solid #ccc; padding-bottom: 10px;">
    <div class="CoveoAnalytics"></div>
    <div class="coveo-case-creation-column">
        <div class="CoveoDeflection">
            <h4>How Can We Help You?</h4>

            <div class="field CoveoDeflectionField" data-case-field="InputProduct">
                <textarea rows="2" placeholder="Product"></textarea>
            </div>
            <div class="field CoveoDeflectionField" data-case-field="InputSubject">
                <textarea rows="2" placeholder="Subject"></textarea>
            </div>
            <div class="field CoveoDeflectionField" data-case-field="InputDescription">
                <textarea rows="8" placeholder="Description"></textarea>
            </div>
            <button class="ui button CoveoDeflectionSubmit" type="submit">Submit</button>
            <button class="ui button CoveoDeflectionCancel" type="submit">Cancel</button>
        </div>
    </div>
    <div class="coveo-results-column results-with-actions">
        <!--  Add needed Coveo JS UI components -->
        <div class="CoveoResultList" data-layout="list" data-wait-animation="fade" data-auto-select-fields-to-include="true">
            <!--  Add needed Coveo JS UI results templates -->
        </div>
    </div>
</div>
  1. Sending contact form information as context with the query:

After the user updates the content of the form, the deflection panel triggers a query with a context object. The naming of the context keys came from the configuration of the CoveoDeflectionField components caseField option.

{
    "InputProduct":"productA",
    "InputSubject":"subject a b c",
    "InputDescription":"description x y z"
}
  1. Self-Service Case Deflection - Query Pipeline configuration:

    You can start with the following custom Query Parameters rules:

    • Override query parameter enableQuerySyntax with false
    • Override query parameter partialMatch with true
    • Override query parameter partialMatchKeywords with 2
    • Override query parameter partialMatchThreshold with 35%
    • Override query parameter lqPartialMatchKeywords with 3
    • Override query parameter lqPartialMatchThreshold with 50%
    • Override query parameter q with <@+ $context.InputSubject +@>
    • Override query parameter lq with <@+ $context.InputSubject $context.InputDescription +@>

    You can also leverage context values to create custom Result Ranking rules:

    • +100 | @product==@context$context.InputProduct | Context[InputProduct] is not empty

    To learn more about the query pipeline configuration, refer to the online documentation for both Coveo for Salesforce and Coveo for ServiceNow:

    • https://docs.coveo.com/en/2111/coveo-for-servicenow/configure-the-coveo-case-deflection-panel
    • https://docs.coveo.com/en/1163/coveo-for-salesforce/integrating-a-coveo-case-deflection-component

Extending

Extending the component can be done as follows:

import { Deflection, IDeflectionOptions } from "@coveops/deflection";

export interface IExtendedDeflectionOptions extends IDeflectionOptions {}

export class ExtendedDeflection extends Deflection {}

Contribute

  1. Clone the project
  2. Copy .env.dist to .env and update the COVEO_ORG_ID and COVEO_TOKEN fields in the .env file to use your Coveo credentials and SERVER_PORT to configure the port of the sandbox - it will use 8080 by default.
  3. Build the code base: npm run build
  4. Serve the sandbox for live development npm run serve