Takes an html string as input and converts it to the json format of knowledge document variation content, which can be used in the Genesys Knowledge API: https://developer.genesys.cloud/devapps/api-explorer#post-api-v2-knowledge-knowledgebases--knowledgeBaseId--documents--documentId--variations
npm install knowledge-html-converter
import { convertHtmlToBlocks } from 'knowledge-html-converter';
const documentBodyBlocks = convertHtmlToBlocks('<html><body><p>Document content</p></body></html>');
This will convert html to blocks with default options, If needed you can customize the options
const documentBodyBlocks = convertHtmlToBlocks('<html><body><p>Document content</p></body></html>', { handleWidthWithUnits: true, baseFontSize: 32 });
NOTE: The package is now pure ESM. It cannot be require()'d from CommonJS.
The value of documentBodyBlocks
will be:
[
{
"type": "Paragraph",
"paragraph": {
"blocks": [
{
"type": "Text",
"text": {
"text": "Document content"
}
}
],
"properties": {
"fontType": "Paragraph"
}
}
}
]
The json array returned by convertHtmlToBlocks
can be used as the value of the body.blocks
property in document variation create and update requests. For example:
fetch('https://api.mypurecloud.com/api/v2/knowledge/knowledgeBases/<kb-id>/documents/<doc-id>/variations/<variation-id>', {
method: 'PATCH',
headers: new Headers({
'Content-Type': 'application/json',
'Authorization': 'Bearer <token>',
}),
body: JSON.stringify({
body: {
blocks: [
{
"type": "Paragraph",
"paragraph": {
"blocks": [
{
"type": "Text",
"text": {
"text": "Document content"
}
}
],
"properties": {
"fontType": "Paragraph"
}
}
}
]
}
}),
});
{
handleWidthWithUnits: false,
baseFontSize: 16
hyperlinkBaseUrl: ''
}
SNO | OPTION | DEFAULT VALUE | USAGE |
---|---|---|---|
1 | handleWidthWithUnits | false | If set true, handles the table width with unit. Sample output will be ' width: 100, widthUnit: "Percentage" '. |
2 | baseFontSize | 16 | The default text size in a browser is 16px. So for the default size, 16px is converted to 1em. If you need to override the default font-size, use this option like 'baseFontSize : 32'. For the option 'baseFontSize : 32', the conversion will be 32px to 1em. |
3 | hyperlinkBaseUrl | '' | Relative hyperlink paths will be extended to absolute with the base url |
Node v18, npm v9.
npm run prepare
Installs husky to run precommit hooks: eslint, prettier. See .husky/pre-commit and "lint-staged"
in package.json.
npm test
Filtering test cases: tests use Mocha, describe
or it
can be suffixed with .only
. For example: describe.only('suite name', ...);
or it.only('test name', ...);
Test coverage:
npm run coverage
The coverage report can be found at coverage/index.html
.