diff --git a/.github/workflows/publish_docker_image.yml b/.github/workflows/publish_docker_image.yml
index 68a08a31..09d09390 100644
--- a/.github/workflows/publish_docker_image.yml
+++ b/.github/workflows/publish_docker_image.yml
@@ -20,7 +20,7 @@ jobs:
id: meta
uses: docker/metadata-action@v5
with:
- images: atendai/evolution-api
+ images: evoapicloud/evolution-api
tags: type=semver,pattern=v{{version}}
- name: Set up QEMU
diff --git a/.github/workflows/publish_docker_image_homolog.yml b/.github/workflows/publish_docker_image_homolog.yml
index 77032dc9..b97a5e25 100644
--- a/.github/workflows/publish_docker_image_homolog.yml
+++ b/.github/workflows/publish_docker_image_homolog.yml
@@ -20,7 +20,7 @@ jobs:
id: meta
uses: docker/metadata-action@v5
with:
- images: atendai/evolution-api
+ images: evoapicloud/evolution-api
tags: homolog
- name: Set up QEMU
diff --git a/.github/workflows/publish_docker_image_latest.yml b/.github/workflows/publish_docker_image_latest.yml
index 641dc5e0..cffdab01 100644
--- a/.github/workflows/publish_docker_image_latest.yml
+++ b/.github/workflows/publish_docker_image_latest.yml
@@ -20,7 +20,7 @@ jobs:
id: meta
uses: docker/metadata-action@v5
with:
- images: atendai/evolution-api
+ images: evoapicloud/evolution-api
tags: latest
- name: Set up QEMU
diff --git a/Docker/swarm/evolution_api_v2.yaml b/Docker/swarm/evolution_api_v2.yaml
index 41c2daa2..867251a5 100644
--- a/Docker/swarm/evolution_api_v2.yaml
+++ b/Docker/swarm/evolution_api_v2.yaml
@@ -2,7 +2,7 @@ version: "3.7"
services:
evolution_v2:
- image: atendai/evolution-api:v2.1.2
+ image: evoapicloud/evolution-api:latest
volumes:
- evolution_instances:/evolution/instances
networks:
diff --git a/Dockerfile b/Dockerfile
index ca61b39a..38cb416c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -5,7 +5,7 @@ RUN apk update && \
LABEL version="2.2.3" description="Api to control whatsapp features through http requests."
LABEL maintainer="Davidson Gomes" git="https://github.com/DavidsonGomes"
-LABEL contact="contato@atendai.com"
+LABEL contact="contato@evolution-api.com"
WORKDIR /evolution
diff --git a/LICENSE b/LICENSE
index da01e779..ad430f14 100644
--- a/LICENSE
+++ b/LICENSE
@@ -8,7 +8,7 @@ a. LOGO and copyright information: In the process of using Evolution API's front
b. Usage Notification Requirement: If Evolution API is used as part of any project, including closed-source systems (e.g., proprietary software), the user is required to display a clear notification within the system that Evolution API is being utilized. This notification should be visible to system administrators and accessible from the system's documentation or settings page. Failure to comply with this requirement may result in the necessity for a commercial license, as determined by the producer.
-Please contact contato@atendai.com to inquire about licensing matters.
+Please contact contato@evolution-api.com to inquire about licensing matters.
2. As a contributor, you should agree that:
diff --git a/README.md b/README.md
index 93197499..6e40ce74 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,7 @@
+[]
[](https://evolution-api.com/whatsapp)
[](https://evolution-api.com/discord)
[](https://evolution-api.com/postman)
@@ -87,6 +88,7 @@ https://github.com/sponsors/EvolutionAPI
We are proud to collaborate with the following content creators who have contributed valuable insights and tutorials about Evolution API:
- [Promovaweb](https://www.youtube.com/@promovaweb)
+- [Sandeco](https://www.youtube.com/@canalsandeco)
- [Comunidade ZDG](https://www.youtube.com/@ComunidadeZDG)
- [Francis MNO](https://www.youtube.com/@FrancisMNO)
- [Pablo Cabral](https://youtube.com/@pablocabral)
@@ -111,7 +113,7 @@ Evolution API is licensed under the Apache License 2.0, with the following addit
2. **Usage Notification Requirement**: If Evolution API is used as part of any project, including closed-source systems (e.g., proprietary software), the user is required to display a clear notification within the system that Evolution API is being utilized. This notification should be visible to system administrators and accessible from the system's documentation or settings page. Failure to comply with this requirement may result in the necessity for a commercial license, as determined by the producer.
-Please contact contato@atendai.com to inquire about licensing matters.
+Please contact contato@evolution-api.com to inquire about licensing matters.
Apart from the specific conditions mentioned above, all other rights and restrictions follow the Apache License 2.0. Detailed information about the Apache License 2.0 can be found at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0).
diff --git a/docker-compose.yaml b/docker-compose.yaml
index 9a60a9a9..33918c38 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -1,7 +1,7 @@
services:
api:
container_name: evolution_api
- image: atendai/evolution-api:homolog
+ image: evoapicloud/evolution-api:latest
restart: always
depends_on:
- redis
diff --git a/package.json b/package.json
index 7e948028..974f2a92 100644
--- a/package.json
+++ b/package.json
@@ -41,7 +41,7 @@
],
"author": {
"name": "Davidson Gomes",
- "email": "contato@atendai.com"
+ "email": "contato@evolution-api.com"
},
"license": "Apache-2.0",
"bugs": {
diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts
index 10feb7ce..5f006a2c 100644
--- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts
+++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts
@@ -1161,6 +1161,17 @@ export class BaileysStartupService extends ChannelStartupService {
await this.baileysCache.delete(received.key.id);
}
+ // Cache to avoid duplicate messages
+ const messageKey = `${this.instance.id}_${received.key.id}`;
+ const cached = await this.baileysCache.get(messageKey);
+
+ if (cached) {
+ this.logger.info(`Message duplicated ignored: ${received.key.id}`);
+ continue;
+ }
+
+ await this.baileysCache.set(messageKey, true, 30 * 60);
+
if (
(type !== 'notify' && type !== 'append') ||
received.message?.protocolMessage ||
@@ -1422,6 +1433,17 @@ export class BaileysStartupService extends ChannelStartupService {
continue;
}
+ const updateKey = `${this.instance.id}_${key.id}_${update.status}`;
+
+ const cached = await this.baileysCache.get(updateKey);
+
+ if (cached) {
+ this.logger.info(`Message duplicated ignored: ${key.id}`);
+ continue;
+ }
+
+ await this.baileysCache.set(updateKey, true, 30 * 60);
+
if (status[update.status] === 'READ' && key.fromMe) {
if (this.configService.get('CHATWOOT').ENABLED && this.localChatwoot?.enabled) {
this.chatwootService.eventWhatsapp(