Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
Iru89 committed Apr 17, 2024
1 parent c5f3601 commit 1318584
Show file tree
Hide file tree
Showing 8 changed files with 1,028 additions and 159 deletions.
1,014 changes: 930 additions & 84 deletions package-lock.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/botonic-core/src/handoff.ts
Expand Up @@ -13,7 +13,7 @@ export interface HubtypeAgentsInfo {
status: string
}
export interface HubtypeSession extends Session {
_hubtype_api?: string
_hubtype_api: string
_access_token: string
}

Expand Down
131 changes: 77 additions & 54 deletions packages/botonic-core/src/models/legacy-types.ts
Expand Up @@ -3,17 +3,31 @@
import { DataProvider } from '../data-provider'
import { BotonicEvent } from './events'

export enum CASE_STATUS {
WAITING = 'status_waiting',
ATTENDING = 'status_attending',
IDLE = 'status_idle',
RESOLVED = 'status_resolved',
}

export type CaseStatusType =
| typeof CASE_STATUS.ATTENDING
| typeof CASE_STATUS.IDLE
| typeof CASE_STATUS.RESOLVED
| typeof CASE_STATUS.WAITING
| CASE_STATUS.ATTENDING
| CASE_STATUS.IDLE
| CASE_STATUS.RESOLVED
| CASE_STATUS.WAITING

export enum CASE_RESOLUTION {
OK = 'result_ok',
NOK = 'result_nok',
NOT_SOLVED = 'result_not_solved',
BANNED = 'result_banned',
}

export type CaseResolution =
| typeof CASE_RESOLUTION.BANNED
| typeof CASE_RESOLUTION.NOK
| typeof CASE_RESOLUTION.NOT_SOLVED
| typeof CASE_RESOLUTION.OK
| CASE_RESOLUTION.BANNED
| CASE_RESOLUTION.NOK
| CASE_RESOLUTION.NOT_SOLVED
| CASE_RESOLUTION.OK

export enum PROVIDER {
APPLE = 'apple',
Expand All @@ -30,6 +44,19 @@ export enum PROVIDER {
WHATSAPP = 'whatsapp',
}

export type ProviderType =
| PROVIDER.DEV
| PROVIDER.FACEBOOK
| PROVIDER.GENERIC
| PROVIDER.INSTAGRAM
| PROVIDER.INTERCOM
| PROVIDER.SMOOCH
| PROVIDER.TELEGRAM
| PROVIDER.TWITTER
| PROVIDER.WEBCHAT
| PROVIDER.WECHAT
| PROVIDER.WHATSAPP

export enum INPUT {
TEXT = 'text',
POSTBACK = 'postback',
Expand All @@ -49,19 +76,22 @@ export enum INPUT {
WHATSAPP_BUTTON_LIST = 'whatsapp-button-list',
}

export enum CASE_STATUS {
WAITING = 'status_waiting',
ATTENDING = 'status_attending',
IDLE = 'status_idle',
RESOLVED = 'status_resolved',
}

export enum CASE_RESOLUTION {
OK = 'result_ok',
NOK = 'result_nok',
NOT_SOLVED = 'result_not_solved',
BANNED = 'result_banned',
}
export type InputType =
| INPUT.AUDIO
| INPUT.BUTTON_MESSAGE
| INPUT.CAROUSEL
| INPUT.CONTACT
| INPUT.CUSTOM
| INPUT.DOCUMENT
| INPUT.IMAGE
| INPUT.LOCATION
| INPUT.POSTBACK
| INPUT.TEXT
| INPUT.VIDEO
| INPUT.WEBCHAT_SETTINGS
| INPUT.WHATSAPP_TEMPLATE
| INPUT.CHAT_EVENT
| INPUT.WHATSAPP_BUTTON_LIST

export interface Locales {
[id: string]: string | string[] | Locales
Expand All @@ -84,23 +114,6 @@ export interface ResolvedPlugin extends Plugin {
}
export type ResolvedPlugins = Record<string, ResolvedPlugin>

export type InputType =
| typeof INPUT.AUDIO
| typeof INPUT.BUTTON_MESSAGE
| typeof INPUT.CAROUSEL
| typeof INPUT.CONTACT
| typeof INPUT.CUSTOM
| typeof INPUT.DOCUMENT
| typeof INPUT.IMAGE
| typeof INPUT.LOCATION
| typeof INPUT.POSTBACK
| typeof INPUT.TEXT
| typeof INPUT.VIDEO
| typeof INPUT.WEBCHAT_SETTINGS
| typeof INPUT.WHATSAPP_TEMPLATE
| typeof INPUT.CHAT_EVENT
| typeof INPUT.WHATSAPP_BUTTON_LIST

export interface IntentResult {
intent: string
confidence: number
Expand Down Expand Up @@ -130,21 +143,22 @@ export interface Input extends Partial<NluResult> {
data?: string
path?: string
payload?: string
referral?: string
type: InputType
context?: {
campaign?: Campaign
}
}

export type ProviderType =
| typeof PROVIDER.DEV
| typeof PROVIDER.FACEBOOK
| typeof PROVIDER.GENERIC
| typeof PROVIDER.INSTAGRAM
| typeof PROVIDER.INTERCOM
| typeof PROVIDER.SMOOCH
| typeof PROVIDER.TELEGRAM
| typeof PROVIDER.TWITTER
| typeof PROVIDER.WEBCHAT
| typeof PROVIDER.WECHAT
| typeof PROVIDER.WHATSAPP
export interface Campaign {
id: string
name: string
status: string
start_date: string
end_date: string
bot_path: string
template_name: string
}

export interface SessionUser {
id: string
Expand All @@ -159,27 +173,36 @@ export interface SessionUser {
imp_id?: string
provider_id?: string
}
export interface HubtypeCaseContactReason {
id: string
name: string
project_id: string
}

// eslint-disable @typescript-eslint/naming-convention
export interface Session {
bot: {
id: string
name?: string
}
__locale?: string
__retries: number
_access_token: string
_hubtype_api: string
is_first_interaction: boolean
last_session?: any
organization: string
organization_id: string
organization: string
user: SessionUser
// after handoff
_botonic_action?: string
_hubtype_case_status?: CaseStatusType
_hubtype_case_id?: string
_hubtype_case_typification?: string
_hubtype_case_contact_reasons?: HubtypeCaseContactReason[]
_shadowing?: boolean
_access_token?: string
external?: any
zendesk_ticket_id?: string
}
// eslint-enable @typescript-eslint/naming-convention

export type InputMatcher = (input: Input) => boolean
export type ParamsMatcher =
Expand Down
12 changes: 6 additions & 6 deletions packages/botonic-dx/baseline/jest.config.js
Expand Up @@ -5,17 +5,17 @@ const path = require('path')
module.exports = {
roots: ['src/', 'tests/'],
transform: {
'^.+\\.tsx?$': 'ts-jest',
'^.+\\.tsx?$': [
'ts-jest',
{
tsconfig: '<rootDir>/tsconfig.tests.json',
},
],
'^.+\\.jsx?$': [
'babel-jest',
{ configFile: path.resolve(__dirname, 'babel.config.js') },
],
},
globals: {
'ts-jest': {
tsconfig: '<rootDir>/tsconfig.tests.json',
},
},
preset: 'ts-jest',
testRegex: '(/tests/.*|(\\.|/)(test|spec))\\.([jt]sx?)$',
testPathIgnorePatterns: [
Expand Down
11 changes: 7 additions & 4 deletions packages/botonic-dx/package.json
Expand Up @@ -24,24 +24,27 @@
"babel-loader": "^8.3.0",
"babel-plugin-add-module-exports": "^1.0.4",
"clean-webpack-plugin": "^4.0.0",
"crypto-browserify": "^3.12.0",
"css-loader": "^6.10.0",
"esbuild-loader": "^2.21.0",
"eslint": "^8.56.0",
"eslint_d": "^13.1.2",
"eslint-config-prettier": "^8.10.0",
"eslint-import-resolver-typescript": "^3.6.1",
"eslint_d": "^13.1.2",
"file-loader": "^6.2.0",
"html-webpack-plugin": "^5.3.2",
"identity-obj-proxy": "^3.0.0",
"image-minimizer-webpack-plugin": "^4.0.0",
"imagemin": "^8.0.1",
"imagemin-gifsicle": "^7.0.0",
"imagemin-jpegtran": "^7.0.0",
"imagemin-optipng": "^8.0.0",
"imagemin-svgo": "^10.0.1",
"imagemin": "^8.0.1",
"jest": "^29.7.0",
"jest-each": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"jest-junit": "^12.3.0",
"node-polyfill-webpack-plugin": "^3.0.0",
"nodemon": "^3.1.0",
"nodemon-webpack-plugin": "^4.8.2",
"null-loader": "^4.0.1",
Expand All @@ -59,8 +62,8 @@
"typescript": "^4.9.5",
"webpack": "^5.90.3",
"webpack-cli": "^5.1.4",
"webpackbar": "^5.0.2",
"webpack-dev-server": "^5.0.2"
"webpack-dev-server": "^5.0.2",
"webpackbar": "^5.0.2"
},
"engines": {
"node": ">=20.0.0"
Expand Down
1 change: 0 additions & 1 deletion packages/botonic-plugin-flow-builder/tsconfig.json
Expand Up @@ -2,7 +2,6 @@
"extends": "../../tsconfig.cjs.base.json",
"compilerOptions": {
"jsx": "react-jsx",
"experimentalDecorators": true,
"baseUrl": ".",
"outDir": "./lib/cjs"
},
Expand Down
2 changes: 2 additions & 0 deletions packages/botonic-react/package.json
Expand Up @@ -51,6 +51,8 @@
"@types/jest": "^29.5.1",
"@types/parse5": "^7.0.0",
"@types/react": "^16.14.56",
"@types/react-frame-component": "^4.1.6",
"@types/styled-components": "^5.1.34",
"babel-plugin-add-module-exports": "^1.0.4",
"copyfiles": "^2.4.1",
"identity-obj-proxy": "^3.0.0",
Expand Down
@@ -1,4 +1,4 @@
import { Providers } from '@botonic/core'
import { PROVIDER } from '@botonic/core'

/**
*
Expand Down Expand Up @@ -71,12 +71,8 @@ export function getMultichannelReplies(node) {
return getFilteredElements(node, isMultichannelReply)
}

export const isWhatsapp = context =>
context.session &&
context.session.user &&
context.session.user.provider == Providers.Messaging.WHATSAPP
export const isWhatsapp = request =>
request.session?.user?.provider === PROVIDER.WHATSAPP

export const isFacebook = context =>
context.session &&
context.session.user &&
context.session.user.provider == Providers.Messaging.FACEBOOK
export const isFacebook = request =>
request.session?.user?.provider === PROVIDER.FACEBOOK

0 comments on commit 1318584

Please sign in to comment.