From 084588a086c22029e53ffdef7ae1fe81d7e413b7 Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Mon, 13 Nov 2023 15:27:36 +0100 Subject: [PATCH] :technologist: (chat) Introduce startChat and continueChat endpoints Closes #1030 --- .../auth/helpers/getAuthenticatedUser.ts | 2 +- .../audio/components/AudioBubbleNode.tsx | 4 +- .../embed/components/EmbedBubbleContent.tsx | 6 +- .../image/components/ImageBubbleContent.tsx | 4 +- .../video/components/VideoBubbleContent.tsx | 6 +- .../logic/typebotLink/typebotLink.spec.ts | 2 +- .../preview/components/WebPreview.tsx | 13 +- .../WhatsAppPreviewInstructions.tsx | 8 +- .../features/whatsapp/startWhatsAppPreview.ts | 222 +- .../src/pages/api/auth/[...nextauth].ts | 2 +- apps/docs/openapi/builder/_spec_.json | 199 +- apps/docs/openapi/chat/_spec_.json | 27494 +++++++++++++++- .../src/features/chat/api/continueChat.ts | 79 + .../chat/api/{ => legacy}/sendMessageV1.ts | 59 +- .../chat/api/{ => legacy}/sendMessageV2.ts | 63 +- .../src/features/chat/api/saveClientLogs.ts | 63 + .../viewer/src/features/chat/api/startChat.ts | 83 + .../src/features/chat/api/startChatPreview.ts | 83 + .../chat/api/updateTypebotInSession.ts | 8 +- .../fileUpload/api/deprecated/getUploadUrl.ts | 3 +- .../fileUpload/api/generateUploadUrl.ts | 2 +- .../features/whatsapp/api/receiveMessage.ts | 2 +- .../features/whatsapp/api/subscribeWebhook.ts | 2 +- apps/viewer/src/helpers/server/appRouter.ts | 26 + apps/viewer/src/helpers/server/context.ts | 3 + .../src/helpers/server/generateOpenApi.ts | 6 +- .../src/helpers/server/routers/appRouterV1.ts | 16 - .../src/helpers/server/routers/appRouterV2.ts | 16 - apps/viewer/src/helpers/server/trpc.ts | 24 +- .../src/pages/api/{v1 => }/[...trpc].ts | 2 +- apps/viewer/src/pages/api/v2/[...trpc].ts | 23 - apps/viewer/src/test/chat.spec.ts | 102 +- apps/viewer/src/test/settings.spec.ts | 8 +- apps/viewer/src/trpc/generateOpenApi.ts | 6 +- .../integrations/googleSheets/getRow.ts | 4 +- .../integrations/googleSheets/insertRow.ts | 4 +- .../integrations/googleSheets/updateRow.ts | 4 +- .../executeChatCompletionOpenAIRequest.ts | 8 +- .../openai/resumeChatCompletion.ts | 4 +- .../sendEmail/executeSendEmailBlock.tsx | 8 +- .../webhook/executeWebhookBlock.ts | 8 +- .../webhook/resumeWebhookExecution.ts | 4 +- .../logic/typebotLink/executeTypebotLink.ts | 4 +- packages/bot-engine/continueBotFlow.ts | 11 +- packages/bot-engine/executeGroup.ts | 18 +- packages/bot-engine/parseBubbleBlock.ts | 9 +- packages/bot-engine/parseDynamicTheme.ts | 4 +- packages/bot-engine/saveStateToDatabase.ts | 8 +- packages/bot-engine/startBotFlow.ts | 22 +- packages/bot-engine/startSession.ts | 79 +- packages/bot-engine/types.ts | 6 +- .../bot-engine/variables/prefillVariables.ts | 4 +- .../whatsapp/convertInputToWhatsAppMessage.ts | 6 +- .../convertMessageToWhatsAppMessage.ts | 4 +- .../whatsapp/sendChatReplyToWhatsApp.ts | 16 +- .../whatsapp/startWhatsAppSession.ts | 11 +- packages/embeds/js/package.json | 2 +- packages/embeds/js/src/components/Bot.tsx | 22 +- .../ConversationContainer/ChatChunk.tsx | 4 +- .../ConversationContainer.tsx | 25 +- .../js/src/components/InputChatBlock.tsx | 10 +- packages/embeds/js/src/constants.ts | 2 +- .../js/src/queries/continueChatQuery.ts | 22 + .../src/queries/getInitialChatReplyQuery.ts | 74 - .../js/src/queries/saveClientLogsQuery.ts | 22 + .../embeds/js/src/queries/sendMessageQuery.ts | 13 - .../embeds/js/src/queries/startChatQuery.ts | 104 + packages/embeds/js/src/types.ts | 10 +- .../js/src/utils/executeClientSideActions.ts | 6 +- packages/embeds/nextjs/package.json | 2 +- packages/embeds/react/package.json | 2 +- .../auth => packages/lib}/mockedUser.ts | 0 .../schemas/features/chat/legacy/schema.ts | 123 + packages/schemas/features/chat/schema.ts | 183 +- 74 files changed, 28647 insertions(+), 866 deletions(-) create mode 100644 apps/viewer/src/features/chat/api/continueChat.ts rename apps/viewer/src/features/chat/api/{ => legacy}/sendMessageV1.ts (65%) rename apps/viewer/src/features/chat/api/{ => legacy}/sendMessageV2.ts (65%) create mode 100644 apps/viewer/src/features/chat/api/saveClientLogs.ts create mode 100644 apps/viewer/src/features/chat/api/startChat.ts create mode 100644 apps/viewer/src/features/chat/api/startChatPreview.ts create mode 100644 apps/viewer/src/helpers/server/appRouter.ts delete mode 100644 apps/viewer/src/helpers/server/routers/appRouterV1.ts delete mode 100644 apps/viewer/src/helpers/server/routers/appRouterV2.ts rename apps/viewer/src/pages/api/{v1 => }/[...trpc].ts (90%) delete mode 100644 apps/viewer/src/pages/api/v2/[...trpc].ts create mode 100644 packages/embeds/js/src/queries/continueChatQuery.ts delete mode 100644 packages/embeds/js/src/queries/getInitialChatReplyQuery.ts create mode 100644 packages/embeds/js/src/queries/saveClientLogsQuery.ts delete mode 100644 packages/embeds/js/src/queries/sendMessageQuery.ts create mode 100644 packages/embeds/js/src/queries/startChatQuery.ts rename {apps/builder/src/features/auth => packages/lib}/mockedUser.ts (100%) create mode 100644 packages/schemas/features/chat/legacy/schema.ts diff --git a/apps/builder/src/features/auth/helpers/getAuthenticatedUser.ts b/apps/builder/src/features/auth/helpers/getAuthenticatedUser.ts index f08d4e3eed2..0cbd7040089 100644 --- a/apps/builder/src/features/auth/helpers/getAuthenticatedUser.ts +++ b/apps/builder/src/features/auth/helpers/getAuthenticatedUser.ts @@ -4,8 +4,8 @@ import * as Sentry from '@sentry/nextjs' import { User } from '@typebot.io/prisma' import { NextApiRequest, NextApiResponse } from 'next' import { getServerSession } from 'next-auth' -import { mockedUser } from '../mockedUser' import { env } from '@typebot.io/env' +import { mockedUser } from '@typebot.io/lib/mockedUser' export const getAuthenticatedUser = async ( req: NextApiRequest, diff --git a/apps/builder/src/features/blocks/bubbles/audio/components/AudioBubbleNode.tsx b/apps/builder/src/features/blocks/bubbles/audio/components/AudioBubbleNode.tsx index 8c6599756ff..450db2b892e 100644 --- a/apps/builder/src/features/blocks/bubbles/audio/components/AudioBubbleNode.tsx +++ b/apps/builder/src/features/blocks/bubbles/audio/components/AudioBubbleNode.tsx @@ -12,8 +12,6 @@ export const AudioBubbleNode = ({ url }: Props) => { return isDefined(url) ? (