Releases: hubtype/botonic
Releases · hubtype/botonic
v0.17.0
0.17.0 - 2020-12-18
Added
-
- Improved Getting started docs.
- Moved templates and examples to botonic-examples repo.
- Added script to update releases in docs.
- Set up
Codecov
for Botonic and trigger Github Workflows only when necessary. #1177. - Adapted code for Botonic packages in order to support Webpack 5 and upgraded examples to this version.
-
- Botonic CLI to download examples directly from botonic-examples.
- Improved analytics and fixed spawn processes in Windows (
botonic serve
,botonic train
). Now it is no longer necessary to runnpm run start
. #1176
-
- Added NLP support for Croatian.
- Added NLP support for Slovak.
- Added new method to get all the locales of a contentful space.
- Lazy loading of language engines. #1160 and #1194
-
- New webchat features:
- Added new Shadow DOM feature to avoid webchat's CSS conflict with the host page of your website.
- Added Facebook's multichannel converter for texts.
- New webchat features:
Changed
-
- Refactored project scripts and organization.
Fixed
-
- Fixed broken links.
-
- Avoid circular dependencies.
- Fixed webchat behavior when
user ID
was lost, causing some webchat's to not load correctly.
v0.16.0
0.16.0 - 2020-11-20
Added
-
- Added license MIT and keywords to every package.
- Enabled code scaning.
- Updated Botonic's README.
- Added Deployment Guide.
- Improved Continuous Integration for Docs.
- Configured eslint import sorter.
- Added Botonic Examples section #1091.
- Added auto publish script.
-
- Added new matcher
request matcher
and passlastRoutePath
to current bot context. #1086
- Added new matcher
-
- Added webchat component tests
- New webchat features:
- Added Error Boundary for
customMessage
.
- Added Error Boundary for
Changed
-
- Improved types:
- Refactored utils for better maintainability.
- Improved webchat tests.
-
- Upgrade
tfjs
to 2.7.0.
- Upgrade
-
- Upgrade
tfjs
to 2.7.0.
- Upgrade
Fixed
-
- Fixed broken links in READMEs.
- Fixed
Was this article useful?
widget.
-
- Fixed params request failing in
Oauth 3.1.0+
.
- Fixed params request failing in
-
- Now
getRoute
checks correctly if the input matches with achildRoute
.
- Now
-
- Added missing storage key in constructor, now
storageKey
works as expected. - Automatically call
onMessage
when receiveng messages coming from server-side. - Added missing call to
stringifyWithRegexs
causing some regexes not being updated in local/session storages. Fixed react warnings (produced bynpm run test
), log deprecated props in custom messages. #1063
Deprecated props:enableTimestamps
=>enabletimestamps
imagesStyle
=>imagestyle
- Fixed sending of unsent inputs to be more consistent.
- Fixed
onClose
being called on the very first render of the app. - Fixed
WebchatSettings
component not updating settings correctly. - Set ack to 1 for custom user messages by default.
- Added missing storage key in constructor, now
-
- The csv importer of texts, which was coming from content translator, now groups all the fields from the same content. #1036.
- Added NLP support for Romanian.
- Added NLP support for Greek.
- Added NLP support for Czech.
- Added NLP support for Ukrainian.
v0.15.0
0.15.0 - 2020-10-27
Added
-
-
New webchat features:
- Added new
target
prop toButton
component to define the behavior to open links. - Added new
WhatsappTemplate
component for Webchat. - New
getBotonicApp()
to accessBotonic
methods. - Added a new webchat setting
storageKey
that indicates the key name to use in order to store the webchat state inlocalStorage
(orsessionStorage
).
- Added new
-
-
-
Improvements in Content.validate of text & shortText fields
- Validate text.text also if content has no keywords (it could be accessed through a button)
- Before, when shortText was empty, the contentful driver set it with the value of the name field (to ensure buttons did not show blank texts). Now this is managed by the Button model, so that MessageContent.validate() can report it.
- Improved ContentsValidator. Now it's possible to report the detected errors into a callback.
-
New CMS method to deliver content by id when the content type is unknown.
-
Added NLP support for German.
-
Changed
-
- Improved script to automatically bump versions for Botonic packages (it also updates references to other Botonic dependencies).
- Improved documentation
-
- Refactored and migrated NLU engine to Typescript. Read the new docs here.
-
- Allow passing properties to CoverComponent.
- Remove Webchat
user
references in favor ofsession.user
. - Improved types for Webchat and Webchat Context.
-
- Refactored and migrated plugin to Typescript. Read the new docs here.
Fixed
-
- Fixed imports in templates which were broken after 0.14.0 change in entry files.
- Added validation of templates and examples in CI
-
session
properties now are merged and updated correctly.- Avoid customMessage to crash if they have bad children. Some bots may store no-react objects in children.
- Fixed error appearing in some tests:
Received true for a non-boolean attribute markdown
. Caused by styled-components.
v0.14.0
0.14.0 - 2020-10-01
Added
-
- New bot template
dynamo
using Botonic dynamoDB plugin from a JS bot.
- New bot template
-
- Improved behavior when end user messages are lost due to connection issues. Missed inputs will be resent when connection is regained.
- End user messages will be displayed with less opacity until they are correctly delivered to the server.
- Added classNames to blob messages by default, under the following format:
{type}-{from} {customTypeName}
e.g.: Text messages from user ->text-user
e.g.: Custom messages from bot ->custom-bot my-custom-message-name
- Passing
mobileStyle
inwebchat/index.js
is now allowed. - Added arrow buttons for better interaction with Webchat Carousels. They can be customized.
- Disabling timestamps in the custom Messages using the
enableTimestamps
prop is now allowed. - Defined where to store the botonicState using the variable storage.
- The methods
openCoverComponent
,closeCoverComponent
andtoggleCoverComponent
are available in the browser, through the Botonic object, so that thecoverComponent
can be shown/hidden manually.
-
- Decorator for Contentful that can distribute the delivery requests amongst different spaces/environments.
- Added a new tool to modify the locales of Contentful spaces exported as json file with "contentful space export". The tool is able to change the name of a locale without altering the contents and to remove unwanted locales.
- Added a tool to duplicate the value of reference fields into a new locale. Reference fields (assets or links to other contents) will typically be the same for all locales, but not always. So we initially link them all to the same target for all locales. The tool is useful to migrate a space where fallback locales are used to another where locales have no fallback.
- The NLP package now supports locales whose name include the country (eg. es_ES).
- Added an option for Contentful plugin to be able to change the name of the locale when sent to Contentful.
- Added
logCall
flag tocontentfulOptions
in order to log creation configuration, as well as all calls performed to the CMS. - Added class ContentsValidator, which validates that all contents of a locale can be correctly delivered.
- Added NLP support for Turkish.
- Added NLP support for Italian.
- Added NLP support for French.
-
@botonic/plugin-google-analytics
- New Botonic plugin to track user interaction or bot's behaviour in Google Analytics.
Changed
-
- Upgraded typescript to 4.0.2.
- Upgraded eslint plugins and fixed new warnings.
- Improved documentation and reestructure.
-
- Improved
index.d.ts
definitions. - Breaking change: Added
/webpack-entries
to every template to ensure that Webpack's tree-shaking is done and modifiedwebpack.config.js
as a consequence. This reduces the bundle sizes of every bot. From developers upgrading their projects from version0.13.0
or below the following changes will be necessary:- Create a new directory called
webpack-entries
under bot project's root folder. Copydev-entry.js
,node-entry.js
,webchat-entry.js
andwebviews-entry.js
inside. You can find them here. - Modify the following lines in
webpack.config.js
:
- In
botonicDevConfig
modify the line forentry
to be:path.resolve('webpack-entries', 'dev-entry.js'),
- In
botonicWebchatConfig
modify the line forentry
to be:path.resolve('webpack-entries', 'webchat-entry.js'),
- In
botonicWebviewsConfig
modify the line forentry
to be:path.resolve('webpack-entries', 'webviews-entry.js'),
- In
botonicServerConfig
modify the line forentry
to be:path.resolve('webpack-entries', 'node-entry.js'),
- Create a new directory called
- Improved
-
- Improved
index.d.ts
definitions.
- Improved
-
- Refactored timestamps. They can be enabled by setting
theme.message.timestamps.enable
totrue
. (Default format will be as follows:29 Jun, 12:40:07
). The content can be formatted by defining a function undertheme.message.timestamps.format
which returns a string with the formatted date and their styles undertheme.message.timestamps.style
. - Improved
index.d.ts
definitions.
- Refactored timestamps. They can be enabled by setting
- @botonic/plugin-contentful
- Check empty text in Text contents.
Fixed
-
- Added the export of
getAvailableAgentsByQueue
, which was not accessible.
- Added the export of
-
- Removed
moment
dependency to reduce bundle size. - Closed
PersistentMenu
automatically when the end user clicks outside. - Fixed webchat properties not being properly read by deep merging properties.
- Disabled text input when
CoverComponent
is shown. - Added missing
animationsEnabled
prop. - Now Custom Message Types can be used together with the Reply component.
- Deactivated markdown in webchat when viewing messages using WhatsApp provider.
- Sending messages with only spaces is now avoided.
- Renamed theme property
hoverText
tohoverTextColor
in button.jsx so that changing the text color of a button on hover can work.
- Removed
-
- Fixed bug in Contentful Schedule, where schedule was miscalculating around midnight. It was not taking the timezone offset into account to calculate the weekday.
v0.13.0
0.13.0 - 2020-06-15
Added
-
- Scripts to upgrade dependencies, prepare botonic packages and update packages version.
-
-
New webchat features:
- Added support for custom Cover Component which will be shown when the chat is initiated. You can use it in order to collect information from enduser just before to start the conversation.
- Now webchat will be displayed depending on the settings present in Hubtype Desk (set
visibility: 'dynamic'
in webchat/index.js to enable them, or as a parameter inBotonic.render({appId:'YOUR_APP_ID', visibility: 'dynamic'})
. You can also pass a custom value or a custom function returning a boolean to handle webchat visbility (also throughvisibility
option). - Added
Botonic.getVisibility()
function which returns a promise resolving to true or false depending on Hubtype Desk webchat visibility settings. - Added new
WebchatSettings
component to allow changing webchat features and styles dynamically.
-
Changed
-
- Updated breaking
uuid
dependencies. - Migrated documentation from Docusaurus v1 to v2 for better support.
- Updated breaking
Fixed
-
- Optimized bundle sizes for templates by using moment-locales-webpack-plugin: updated template dependencies and webpack.config
- Updated intent template (improved flow and more detailed descriptions to be less confusing for the developer)
-
- Construct headers dynamically to ensure bad headers are not sent to the backend
-
- Fixed enduser inputs to only process links instead of full markdown. Allow also custom messages defined with from
user
props. - Fixed wrong value being send when button of persistent menu is clicked and its text is send to the chat.
- Fixed and updated Facebook
Messenger Extensions SDK
which was causing issues with Webviews. - Added missing webchat property
enableUserInput
. - Fixed carousel disaligned buttons styles to be at same height
- Fixed enduser inputs to only process links instead of full markdown. Allow also custom messages defined with from
-
- Fixed nlu processing hidden files. This affected on the results obtained in development mode.
- Updated and freezed
@tensorflow/tfjs-node
and@tensorflow/tfjs
dependencies to 1.7.3 which were automatically updating to higher versions with bugs, introducing bugs to training processes.
-
- Added a session token to Inbenta search queries to track user actions.
-
- Updated and freezed
@tensorflow/tfjs
to 1.7.3.
- Updated and freezed
v0.12.0
0.12.0 - 2020-05-26
Added
-
- Added ESLint Limit Cyclomatic Complexity for all projects.
- Added Pull Request Templates.
- Scripts to count lines of code on each package.
- Added new documentation built with
Docusaurus
. Check it out at https://docs.botonic.io/.
-
- Enable more checks in
tsconfig.json
.
- Enable more checks in
-
- Transferring conversations to an agent is allowed with its identifier (id or email) with
withAgentId(agentId)
orwithAgentEmail(agentEmail)
method ofHandOffBuilder
. Now queue is not mandatory. The case will be assigned to the first queue which agent belongs. getAgentVacationRanges
is added to know availability of agents.- More router tests.
- Type definitions improvement in
index.d.ts
.
- Transferring conversations to an agent is allowed with its identifier (id or email) with
-
-
General features:
- Type definitions improvement in
index.d.ts
. - Improved
Text.serialize
method.
- Type definitions improvement in
-
New webchat features:
- Breaking change: The text of a Button/Reply is now sent along with its payload. You can use
button: {messageType: 'postback'}
inwebchat/index.js
to enable the previous behavior. - Breaking change: Markdown is rendered by default within all the Text components. To disable it, you can declare the component as follows:
<Text markdown={false}>Your text</Text>
. - Be able to pass additional styles to
Custom Messages
. - Persistent Menu customizable with property
customPersistentMenu
inwebchat/index.js
. - Persistent Menu button customizable with property
customMenuButton
. - Possibility to enable timestamps in messages.
- More unit tests added for Webchat.
- More adaptable Webchat in iOS.
- Breaking change: The text of a Button/Reply is now sent along with its payload. You can use
-
Multichannel:
- Customize
Multichannel
visualization. Multichannel
to support letter indexes.- Compact
Multichannel
Text
andCarousel
. Multichannel
to allow separating messages with custom string.
- Customize
-
-
- Passing Normalizer to CMS is now allowed.
- Markup support for WhatsApp and Markdown.
- Stemmers/tokens for Russian.
- Normalizer now throws an exception for empty texts.
- Keyword search now sets the result's score field
-
- Added new package
@botonic/plugin-inbenta
to integrate the Inbenta Knowledge Management API. Please refer to its README for more information.
- Added new package
Changed
-
- Most eslint rules config have been moved to root
.eslintrc.js
.
- Most eslint rules config have been moved to root
-
webchatReducer
moved to its own file.webchatReducer
split to reduce complexity.- Calls to
renderBrowser
/renderNode
unified. emoji-picker-react
updated to latest version 3.7.1 (visual changes).
-
- Upgraded
node-nlp
dependency. - Use of
ContextWithLocale
if locale required.
- Upgraded
Fixed
-
- pre-commit was not aborting when lint failed.
- Fixed several eslint warnings.
- @botonic/cli
- Preserved
src/nlu
directories for all templates (added.gitkeep
file). Remove these files before running botonic train. - Added missing calls with
await
. - Used
rimraf
in favor offs.rmdirSync
. - Templates: Call
CleanWebpackPlugin
with
{ cleanOnceBeforeBuildPatterns: ['dist'] }
to prevent occasional builds from crashing. We strongly suggest to add this line in your bot'swebpack.config.js
if updating from previous versions.
- Preserved
-
- Fixed sending wrong payloads when a handover was ended in
botonic serve
mode. postMessage
promises are now forwarded.- Better scrollbar handling when Webchat is hovered.
- Limit attachment sizes to 10MB.
- Fixed attachments crashing in production build for Webchat (media messages will be no longer stored as binary data in local storage, so the content will only be available temporarily in
botonic serve
mode). - Webchat's theme properties such
message.bot.image
,header.image
,intro.image
andtriggerButton.image
are now accepting URLs. - Fixed issue causing Botonic Logo to be visible during few milliseconds in production.
- Handled parent page scrolling issues in Webchat for iOS.
- Fixed sending wrong payloads when a handover was ended in
- @botonic/plugin-contentful
BotonicMsgConverter
is now usingreplaceEmptyStringsWith
option with value.- New operations are available to clone Contents performing composable transformations.
- New operations are available to traverse the chain of followUp fields of MessageContent.
- When calculating the match substring and score between an utterance and a keyword, tokens are preferred to stems when comparing to keywords.
v0.11.0
0.11.0 - 2020-03-25
Added
-
- Github Actions workflow which runs linter and tests
- Development dependencies are centralized in parent folder.
- Pre-commit for all packages.
-
- New ability to deploy specifying the Hubtype credentials as Botonic's CLI command arguments.
-
- New inspector to debug route matching.
-
- General features:
- Type definitions improvement in
index.d.ts
.
- Type definitions improvement in
- New webchat features:
- New
Multichannel
HOC, which automatically converts your interactive components to text-based components for WhatsApp. - New default animations in webchat: Messages are now displayed with a fade-in effect and clickable elements are rescaled with the hovering function. You can disable them in the webchat's
theme
object throughanimationsEnabled
oranimations.enabled
properties. - New ‘Send’ button (enabled by default). You can disable it by setting
userInput.sendButton.enable
tofalse
. You can also use your own created component withuserInput.sendButton.custom
. - New
Botonic.clearMessages()
method to force the deletion of the messages stored in the webchat.
- New
- General features:
-
- Improve tokenization of words containing hyphens and number (eg. covid-19).
- Improve tokenization of "pronoms febles" in Catalan.
- New API to update the texts of contentful contents.
- Tool for translators to translate the content texts through CSV files.
- Now buttons can refer to contentful queues (or any other top content).
- Now all Content's have the "id" field.
Changed
-
- Dependabot to check for updates on a weekly basis.
- Development dependencies are now installed in the repository top folder (parent config).
-
- Breaking change: The Minimal Node version is now
node-v10.19.0
- Webpack's resolve configuration is now unified into
resolveConfig
object.
- Breaking change: The Minimal Node version is now
-
- Breaking change:
emojiPicker
property is renamedenableEmojiPicker
. - All styles of the project are converted into Styled Components.
- Breaking change:
-
- Upgrade to typescript 3.8
- Breaking change: Refactor TopContent and Content base classes. ModelType renamed to TopContentType.
- Breaking change: Refactor so that SearchResult now returns ContentId's instead of ContentCallback's.
- Now only the required language-specific NLP.js folders are imported. This enables tree shaking to exclude big sentiment analysis files.
- Error reporting decorator now also reports the originating exception.
- Flag to disable the CMS delivery cache.
-
- Upgrade to typescript 3.8
- Breaking change: Move Env to its own file to ease tree-shaking
Fixed
-
- Noto Sans JP now does not show up as default typography.
simplebar
deprecation warnings have been resolved- Fixed outer page scrolling that produced unstable behavior.
- Fixed noopener parameter/option to avoid security risk in location links.
- Fixed
compromise
import in@botonic/cli
'snlu
template. - Webviews are now rendered within
div
instead ofiframe
for a better visualization when developing locally without affecting production builds
v0.10.1
0.10.1 - 2020-01-14
Added
- Added default config for every template
{ defaultDelay: 0.4, defaultTyping: 0.6 }
to avoid extravagant warnings inbotonic serve
.
Changed
- Upgraded dependencies.
- Change
@botonic/cli
's templates to upgrade automatically to last patch version. - Bump @tensorflow/tfjs and @tensorflow/tfjs-node to latest versions for @botonic/nlu and @botonic/plugin-nlu.
Fixed
- Allow calling dynamic routes (routes as a function) in nested routes.
- Fix for issue #409.
- Fix for runtime error produced when a
Text
had empty text and no buttons nor replies.
v0.10.0
0.10.0 - 2019-03-12
Added
- Added changelog.
- Native support for mobile devices for Webchat. Customizable breakpoint (
mobileBreakpoint
, webchat/index.js). - Enable media attachments for Webchat (
userInput.attachments.enable
of webchat/index.js). - Enable an emoji picker for Webchat (
userInput.emojiPicker
, webchat/index.js). - Customizable scrollbar for Webchat (
theme.scrollbar
, webchat/index.js). Now the default scrollbar's style will be like the one in OS X systems for all platforms (Mac, Linux and Windows). - New handoff options for handling cases with Hubtype's Desk. Refer to Human Handoff section.
- Customization of Webchat's header, userInput bottom area, userInput text box, replies, buttons styles and webview header (
header.style
,reply.style
,button.style
,userInput.style
,userInput.box.style
,webchat.header.style
, webchat/index.js). - Cancel's label of the Webchat's persistent menu can now be changed by passing to
persistentMenu
the object{closeLabel: 'newCloseLabel'}
. export const config = { defaultDelay: 1, defaultTyping: 2 }
can be added to src/index.js to define a global configuration for typing and delay options.
Changed
- Start using "Changelog".
- Rewrite Human Handoff section.
- Rewrite Botonic Settings section.
- Rewrite Custom Webchat section.
- Updated custom-webchat template.
Fixed
- Typography now will be changed in a proper way for all Webchat components by passing the
fontFamily
attribute intheme.style
in webchat/index.js. - Webchat's triangles of messages bubbles (bot/user) are now modified according to
style.background
passed tobotMessageStyle
oruserMessageStyle
. - Typing indicator not showing up when messages had delay/typing as webchat didn't scroll to bottom.
- Now typing and delay work properly in production.
- Remove errors prompted in browser developer's console by changing dep
@rebass/grid
torebass
. - Carousels with just one element won't be broken.
- Using
staticAsset
incustom-webchat
template that produced a bug in production.