Skip to content

wechaty/plugin-qnamaker

Repository files navigation

WECHATY-QNAMAKER

NPM Version NPM ES Modules

QnA Maker is a cloud-based Natural Language Processing (NLP) service that easily creates a natural conversational layer over your data.

Wechaty QnAMaker can be used to find the most appropriate answer for WeChat users, from your custom knowledge base (KB) of information.

Wechaty Plugin QnAMaker

Wechaty Plugin QnAMaker Powered by Wechaty TypeScript

INTRODUCTION

Wechaty QnAMaker Plugin helps you to answer questions in WeChat with the power of https://QnAMaker.ai.

QnAMaker for Wechaty Community Knowledge Base

REQUIREMENTS

  1. Node.js v12+
  2. Wechaty v0.40+
  3. This QnAMaker Plugin
  4. Azure Subscription for Cognitive Service
  5. QnAMaker Knowledge Base (KB)

USAGE

To use the plugin:

import { WechatyQnAMaker } from 'wechaty-qnamaker'

const config = {
  mention: true, // default true: require mention the bot in room.
  room: true,
  contact: true, // enable direct message.

  /**
   * Language of Questions & Score of Answers
   */
  language: 'english',
  scoreThreshold: 50,   // minimum score for the answer

  /**
   * QnAMaker Service API
   */
  endpointKey: '705a3468-12bb-4e10-a314-7daa947f18d6',
  knowledgeBaseId: '254e33ad-ca6d-405d-980d-dbd3615e2605',
  resourceName: 'wechaty',
}

const QnAMakerPlugin = WechatyQnAMaker(config)

const wechaty = new Wechaty()
wechaty.use(QnAMakerPlugin)

We also provide a Vorpal Command:

import {
  WechatyVorpal,
  WechatyVorpalConfig,
}                        from 'wechaty-vorpal'
import { Faq  }           from 'wechaty-qnamaker'

const vorpalConfig: WechatyVorpalConfig = {
  contact : true,
  mention : true,
  room    : true,
  silent  : true,

  use: [
    Faq(configCeibs),
  ],
}

const VorpalPlugin = WechatyVorpal(vorpalConfig)

const wechaty = new Wechaty()
wechaty.use(VorpalPlugin)

QnAMaker Wechaty Vorpal FAQ Command

1 Configure QnAMaker

  1. endpointKey: Endpoint Key for QnAMaker.ai
  2. knowledgeBaseId: Knowledge Base ID for your knowledge base (KB)
  3. resourceName: Resource Name for your Cognitive Service. (for example, wechaty is the Resource Name for https://wechaty.azurewebsites.net)

2 Language of Questions & Score of Answers

  1. config.language: If set to a language ('chinese', 'english', etc), then the plugin will only reply message text in that specified language. (default: match all languages)
  2. config.scoreThreshold: If the answer from QnAMaker.ai service has a score below the scoreThreshold, then that answer will not be used. (A perfect score is 100)

3 Matchers & Skipper

  1. config.contact: Whether to allow direct message to be sync with ticket reply. false to deny all, true for allow all; Supports contact id(string) and contact name(RegExp). You can also mix them in array.
  2. config.room: The room id of your service WeChat room.
  3. config.mention: Whether require the message mention the bot.
  4. config.skipMessage: If set it to string or RegExp, then the message text that match the config will not be processed by the plugin. Array supported.

ENVIRONMENT VARIABLES

The following two environment variables will be used if the required information is not provided by the config.

1 WECHATY_PLUGIN_QNAMAKER_ENDPOINT_KEY

process.env.WECHATY_PLUGIN_QNAMAKER_ENDPOINT_KEY will be used if the config.endpointKey is not provided.

2 WECHATY_PLUGIN_QNAMAKER_KNOWLEDGE_BASE_ID

process.env.WECHATY_PLUGIN_QNAMAKER_KNOWLEDGE_BASE_ID will be used if the config.knowledgeBaseId is not provided.

3 WECHATY_PLUGIN_QNAMAKER_RESOURCE_NAME

process.env.WECHATY_PLUGIN_QNAMAKER_RESOURCE_NAME will be used if the config.resourceName is not provided.

EXAMPLE

Our Friday BOT are using wechaty-qnamaker to connect our WeChat conversations with QnAMaker.

  1. Source Code - You can read the source code from: https://github.com/wechaty/friday/blob/master/src/plugins/qnamaker.ts
  2. Spreadsheets - You can read our Question & Answer Pairs for Wechaty Community from: https://docs.google.com/spreadsheets/d/14o7ytbZDRyX53nn8F4VohBgzAP6pMnCRPWFFzdcyzxc/edit

Note: our question & answer pairs sheet are open to edit. Please feel free to add question & answer pair if you believe it's necessary, and thank you for your contribution!

RESOURCES

HISTORY

master v1.0 (Oct 23, 2021)

Release v1.0

  1. v0.7 (Oct 2022): Enable ESM module

v0.6 (Aut 5, 2020)

  1. Add Vorpal command: faq
  2. Rename minScore to scoreThreshold in configOptions.

v0.4 (July 23, 2020)

  1. Rename from wechaty-plugin-qnamaker to wechaty-qnamaker

v0.2 (June 29, 2020)

  1. Init code base
  2. QnAMaker integration
  3. Add Language Detecter to limit the plugin to only answer a specific language(s)

CONTRIBUTORS

contributor contributor contributor contributor contributor contributor contributor contributor

AUTHOR

Huan LI (李卓桓), Microsoft Regional Director & AI MVP, <[email protected]>

Profile of Huan LI (李卓桓) on StackOverflow

COPYRIGHT & LICENSE

  • Code & Docs © 2020 Huan LI <[email protected]>
  • Code released under the Apache-2.0 License
  • Docs released under Creative Commons