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 QnAMaker Plugin helps you to answer questions in WeChat with the power of https://QnAMaker.ai.
- Node.js v12+
- Wechaty v0.40+
- This QnAMaker Plugin
- Azure Subscription for Cognitive Service
- QnAMaker Knowledge Base (KB)
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)
endpointKey
: Endpoint Key for QnAMaker.aiknowledgeBaseId
: Knowledge Base ID for your knowledge base (KB)resourceName
: Resource Name for your Cognitive Service. (for example,wechaty
is the Resource Name forhttps://wechaty.azurewebsites.net
)
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)config.scoreThreshold
: If the answer from QnAMaker.ai service has a score below thescoreThreshold
, then that answer will not be used. (A perfect score is100
)
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.config.room
: The room id of your service WeChat room.config.mention
: Whether require the message mention the bot.config.skipMessage
: If set it tostring
orRegExp
, then the message text that match the config will not be processed by the plugin. Array supported.
The following two environment variables will be used if the required information is not provided by the config.
process.env.WECHATY_PLUGIN_QNAMAKER_ENDPOINT_KEY
will be used if the config.endpointKey
is not provided.
process.env.WECHATY_PLUGIN_QNAMAKER_KNOWLEDGE_BASE_ID
will be used if the config.knowledgeBaseId
is not provided.
process.env.WECHATY_PLUGIN_QNAMAKER_RESOURCE_NAME
will be used if the config.resourceName
is not provided.
Our Friday BOT are using wechaty-qnamaker
to connect our WeChat conversations with QnAMaker.
- Source Code - You can read the source code from: https://github.com/wechaty/friday/blob/master/src/plugins/qnamaker.ts
- 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!
Release v1.0
- v0.7 (Oct 2022): Enable ESM module
- Add Vorpal command:
faq
- Rename
minScore
toscoreThreshold
inconfigOptions
.
- Rename from
wechaty-plugin-qnamaker
towechaty-qnamaker
- Init code base
- QnAMaker integration
- Add Language Detecter to limit the plugin to only answer a specific language(s)
Huan LI (李卓桓), Microsoft Regional Director & AI MVP, <zixia@zixia.net>
- Code & Docs © 2020 Huan LI <zixia@zixia.net>
- Code released under the Apache-2.0 License
- Docs released under Creative Commons