-
Notifications
You must be signed in to change notification settings - Fork 75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Botonic with Node v20 #2780
Merged
Merged
Botonic with Node v20 #2780
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Test Results0 tests 0 ✅ 0s ⏱️ Results for commit 6a5b5b3. |
Test Results30 tests 30 ✅ 4m 10s ⏱️ Results for commit 4321665. ♻️ This comment has been updated with latest results. |
Iru89
force-pushed
the
node-v20
branch
4 times, most recently
from
February 20, 2024 17:13
f428c0d
to
989fb8e
Compare
Iru89
force-pushed
the
node-v20
branch
18 times, most recently
from
March 1, 2024 08:25
2b8654c
to
b6409ff
Compare
…m i in prepublishOnly
…un locally without modifying webpack
…d remove train command and 1.0 logic
… npm and use example folder from monorepo for test deploy
Iru89
requested review from
ericmarcos,
asastre and
AinaVendrell
and removed request for
ericmarcos,
asastre and
AinaVendrell
March 26, 2024 14:07
vanbasten17
approved these changes
Mar 27, 2024
## Description This PR for the moment is just a Draft to see how we could change the functions to get the contents without using the UUID (in the code it is called id) and use only the ContentID (in the code it is called code). The idea is to have ContentID instead of UUID hardcoded in the bot code, this way if the client deletes and recreates a node in the frontend of the flow builder but puts the same ContentID the bot will still work the same. ## Context Use the `getContentsByContentID` function if you need to get content in an action written in the bot code, instead of using the `getContentsById`. The function `getContentsByContentID` can be useful if you want to render a content in a custom message in webchat but not in other channels like WhatsApp. For example in a rating action in webchat you want a custom message to select the stars but in Whatsapp you want it to be a normal message with buttons. Add the function `getUUIDByContentID` that will allow to get the UUID of a node using the ContentID. This is useful in case you need to pass the UUID as a payload to the botonicInit function of the plugin-flow-builder to do handoff, tracking, etc. Make the `getContentsById` function private so that it cannot be called from outside the plugin. ## Approach taken / Explain the design You can no longer use the function getContentsById in the bot code, this function becomes private, instead of this function you should use getContentsByContentID. If the BotAction node has a followUp instead of passing its followUpId (UUID) as a payload parameter, the followUpContentID will be added and using the getContentsByContentID function you can get the contents to render. ## To document / Usage example Example using a BotAction with followUp: ```typescript import { FlowBuilderActionProps, FlowBuilderMultichannelAction, } from '@botonic/plugin-flow-builder' import { RequestContext } from '@botonic/react' import React from 'react' import { BotRequest } from '../types' import { getRequestData } from '../utils/actions' interface RatingParms { value: number followUpContentID: string } export class TestRatingAction extends FlowBuilderMultichannelAction { static contextType = RequestContext static async botonicInit( request: BotRequest ): Promise<FlowBuilderActionProps> { const { cmsPlugin, botContext, payload } = getRequestData(request) const payloadParams = cmsPlugin.getPayloadParams<RatingParms>(payload) console.log('Do some logic with payloadParams', { payloadParams }) const contents = await cmsPlugin.getContentsByContentID( payloadParams.followUpContentID, botContext.locale ) return { contents } } } ``` --------- Co-authored-by: Marc Rabat <35448568+vanbasten17@users.noreply.github.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Removed from version 1.0.0-dev
Removes old AI packages that we won't update anymore
Removes the package-lock.json from each package
Add the examples folder to the monorepo with the https://github.com/hubtype/botonic-examples but examples using @botonic/dx in the devDependencies and the new version of @botonic/react
With node 20 you use npm 10.
With npm 10 I created a monorepo using npm workspaces. With this monorepo you do
npm install
in the root of the project and this creates a shared node_modules in the root. You can run scripts for each package from the botonic root. For examplenpm run build -w @botonic/core
Change several things about how builds are done using tsc. It adds a tsconfig.esm.base.json and tsconfig.cjs.base.json to the root of the project and extends these two files to create the builds of all packages.
Context
This PR updates many dependencies such as Node, npm, webpack (webpack plugin), jest, eslint (eslint plugins), prettier, axios, etc.
It also updates the github actions so that builds are done properly when running tests in the repository.
Approach taken / Explain the design
When using an npm monorepo, symlink internal to the monorepo is used. When using symlink it is necessary to build @botonic/core before making changes to a package that requires
@botonic/core
.For example if you want to change
@botonic/react
code you need to build@botonic/core
to make the imports work, pass the lint, pass the tests etc.This is also important in the github actions. now you can declare a BUILD_COMMAND for cases where you need to build core first.
To document / Usage example
To start developing using all these new versions of node, npm, monorepo, etc.
npm i
@botonic/core
@botonic/react
Testing
All the tests that already existed are still running locally and in the GitHub repository.
Update a @botonic/cli deploy.test.ts that used an example published in the master branch of the external @botonic-examples repository. Now use the examples folder inside the monorepo so that changes can be made and tests can be tested before releasing the example bot version.