diff --git a/CHANGELOG.md b/CHANGELOG.md index a2d728da..4393e6d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ### Feature * Added AWS SQS Integration -* Added compatibility with typebot v2 +* Added support for new typebot API * Added endpoint sendPresence * New Instance Manager * Added auto_create to the chatwoot set to create the inbox automatically or not diff --git a/Docker/.env.example b/Docker/.env.example index b170ac28..fefd9456 100644 --- a/Docker/.env.example +++ b/Docker/.env.example @@ -105,7 +105,8 @@ CONFIG_SESSION_PHONE_NAME=Chrome QRCODE_LIMIT=30 QRCODE_COLOR=#198754 -TYPEBOT_API_VERSION=v1 +# old | latest +TYPEBOT_API_VERSION=latest # Defines an authentication type for the api # We recommend using the apikey because it will allow you to use a custom token, diff --git a/Dockerfile b/Dockerfile index 0195a249..10be07c4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -104,7 +104,7 @@ ENV CONFIG_SESSION_PHONE_NAME=Chrome ENV QRCODE_LIMIT=30 ENV QRCODE_COLOR=#198754 -ENV TYPEBOT_API_VERSION=v1 +ENV TYPEBOT_API_VERSION=latest ENV AUTHENTICATION_TYPE=apikey diff --git a/src/dev-env.yml b/src/dev-env.yml index cefdcbeb..7c4e2f53 100644 --- a/src/dev-env.yml +++ b/src/dev-env.yml @@ -147,7 +147,7 @@ QRCODE: COLOR: "#198754" TYPEBOT: - API_VERSION: 'v1' # v1 | v2 + API_VERSION: 'latest' # old | latest # Defines an authentication type for the api # We recommend using the apikey because it will allow you to use a custom token, diff --git a/src/whatsapp/services/typebot.service.ts b/src/whatsapp/services/typebot.service.ts index e0f6c458..0da51193 100644 --- a/src/whatsapp/services/typebot.service.ts +++ b/src/whatsapp/services/typebot.service.ts @@ -171,14 +171,20 @@ export class TypebotService { const reqData = { startParams: { - typebot: data.typebot, + publicId: data.typebot, prefilledVariables: prefilledVariables, }, }; try { const version = this.configService.get('TYPEBOT').API_VERSION; - const request = await axios.post(`${data.url}/api/${version}/sendMessage`, reqData); + let url: string; + if (version === 'latest') { + url = `${data.url}/api/v1/typebots/${data.typebot}/startChat`; + } else { + url = `${data.url}/api/v1/sendMessage`; + } + const request = await axios.post(url, reqData); await this.sendWAMessage( instance, @@ -256,7 +262,7 @@ export class TypebotService { const reqData = { startParams: { - typebot: data.typebot, + publicId: data.typebot, prefilledVariables: { ...data.prefilledVariables, remoteJid: data.remoteJid, @@ -268,7 +274,13 @@ export class TypebotService { try { const version = this.configService.get('TYPEBOT').API_VERSION; - const request = await axios.post(`${data.url}/api/${version}/sendMessage`, reqData); + let url: string; + if (version === 'latest') { + url = `${data.url}/api/v1/typebots/${data.typebot}/startChat`; + } else { + url = `${data.url}/api/v1/sendMessage`; + } + const request = await axios.post(url, reqData); if (request?.data?.sessionId) { data.sessions.push({ @@ -565,14 +577,24 @@ export class TypebotService { return; } - const reqData = { - message: content, - sessionId: data.sessionId, - }; - try { const version = this.configService.get('TYPEBOT').API_VERSION; - const request = await axios.post(`${data.url}/api/${version}/sendMessage`, reqData); + let urlTypebot: string; + let reqData: {}; + if (version === 'latest') { + urlTypebot = `${data.url}/api/v1/sessions/${data.sessionId}/continueChat`; + reqData = { + message: content, + }; + } else { + urlTypebot = `${data.url}/api/v1/sendMessage`; + reqData = { + message: content, + sessionId: data.sessionId, + }; + } + + const request = await axios.post(urlTypebot, reqData); await this.sendWAMessage( instance, @@ -651,15 +673,24 @@ export class TypebotService { return; } - const reqData = { - message: content, - sessionId: data.sessionId, - }; - let request: any; try { const version = this.configService.get('TYPEBOT').API_VERSION; - request = await axios.post(`${data.url}/api/${version}/sendMessage`, reqData); + let urlTypebot: string; + let reqData: {}; + if (version === 'latest') { + urlTypebot = `${data.url}/api/v1/sessions/${data.sessionId}/continueChat`; + reqData = { + message: content, + }; + } else { + urlTypebot = `${data.url}/api/v1/sendMessage`; + reqData = { + message: content, + sessionId: data.sessionId, + }; + } + request = await axios.post(urlTypebot, reqData); await this.sendWAMessage( instance, @@ -734,13 +765,22 @@ export class TypebotService { return; } - const reqData = { - message: content, - sessionId: session.sessionId.split('-')[1], - }; - const version = this.configService.get('TYPEBOT').API_VERSION; - const request = await axios.post(`${url}/api/${version}/sendMessage`, reqData); + let urlTypebot: string; + let reqData: {}; + if (version === 'latest') { + urlTypebot = `${url}/api/v1/sessions/${session.sessionId.split('-')[1]}/continueChat`; + reqData = { + message: content, + }; + } else { + urlTypebot = `${url}/api/v1/sendMessage`; + reqData = { + message: content, + sessionId: session.sessionId.split('-')[1], + }; + } + const request = await axios.post(urlTypebot, reqData); await this.sendWAMessage( instance,