EvolutionAPI / evolution-api

Evolution API is an open-source WhatsApp integration API
https://evolution-api.com
GNU General Public License v3.0
1.73k stars 830 forks source link

Sessões duplicadas no Typebot via API ao mudar status de sessão #710

Open hnmendes opened 2 months ago

hnmendes commented 2 months ago

Bem-vido!

O que você fez?

O problema acontece quando tento pausar uma instância do typebot via api.

Testei pela interface e funcionou como esperado, não foi criada uma nova sessão, apenas a sessão existente foi pausada.

O que você esperava?

Quando pausar uma sessão do typebot via api (evolution) - ou a sessão seja mantida pausada, ou apagar as sessões antigas e criar uma nova seção pausada apenas.

O que vc observou ao invés do que esperava?

Ao pausar uma sessão do typebot via api (evolution) - é mantida a sessão anterior aberta e criada uma nova sessão pausada.

Capturas de Tela/Vídeos

Navegando pela interface manager

Observa-se que uma nova sessão foi criada:

image

Após clicar em pausa e clicar em refresh:

image

Continua pausado:

image

E na API só possui uma única sessão - como exemplo da imagem abaixo após fazer uma requisição em {{baseUrl}}/typebot/find/{{instance}}:

{
    "enabled": true,
    "url": "https://mytypebotdomain.com.br",
    "typebot": "mytypebotid",
    "expire": 0,
    "keyword_finish": "#SAIR",
    "delay_message": 0,
    "unknown_message": "",
    "listening_from_me": false,
    "sessions": [
        {
            "prefilledVariables": {
                "remoteJid": "<usernumber>@s.whatsapp.net",
                "pushName": "UserName"
            },
            "remoteJid": "<usernumber>@s.whatsapp.net",
            "sessionId": "5775721186-clyyzatxk001x1nsbl8rvf55a",
            "status": "paused",
            "createdAt": 1721773187354,
            "updateAt": 1721773187354,
            "_id": "66a02c836bc147ab29f9a0a9"
        }
    ]
}

Via API

image

Agora faço uma requisição em {{baseUrl}}/typebot/changeStatus/{{instance}}:

Request Body:

{
    "remoteJid": "<usernumber>@s.whatsapp.net",
    "status": "paused" /* opened, paused, closed */
}

Response Body:

{
    "typebot": {
        "instanceName": "<InstanceName>",
        "typebot": {
            "enabled": true,
            "url": "https://mytypebotdomain.com.br",
            "typebot": "mytypebotid",
            "expire": 0,
            "keyword_finish": "#SAIR",
            "delay_message": 0,
            "unknown_message": "",
            "listening_from_me": false,
            "sessions": [
                {
                    "prefilledVariables": {
                        "remoteJid": "<usernumber>@s.whatsapp.net",
                        "pushName": "UserName"
                    },
                    "remoteJid": "<usernumber>@s.whatsapp.net",
                    "sessionId": "9289568040-clyyzmntr00221nsb814q441p",
                    "status": "opened",
                    "createdAt": 1721773739315,
                    "updateAt": 1721773739315,
                    "_id": "66a02eab6bc147ab29f9a0f3"
                },
                {
                    "remoteJid": "<usernumber>@s.whatsapp.net",
                    "sessionId": "1529887655",
                    "status": "paused",
                    "createdAt": 1721773869024,
                    "updateAt": 1721773869024,
                    "prefilledVariables": {
                        "remoteJid": "<usernumber>@s.whatsapp.net",
                        "pushName": ""
                    },
                    "_id": "66a02f2d6bc147ab29f9a123"
                }
            ]
        }
    }
}

Atualizando na interface:

image

Duas sessões abertas, uma opened e outra paused:

image

Qual versão da API você está usando?

1.8.2

Qual é o seu ambiente?

Linux

Outras expecificações do ambiente

No response

Se aplicável, cole a saída do log

No response

Notas Adicionais

Dei uma vasculhada no código e vi que após o else nesse arquivo

https://github.com/EvolutionAPI/evolution-api/blob/309d101b329f42cba538abc1dc2f067b870cb9f1/src/api/integrations/typebot/services/typebot.service.ts#L212

Para o meu caso, poderia ter a seguinte linha de código:

await this.clearSessions(instance, remoteJid);

Eu não sei se estou errado, mas o ideal seria que não fosse criada uma nova sessão e sim reutilizada uma já existente.

patrickmarques commented 2 months ago

Também estou tendo esse caso aqui. Existe alguma solução?

dpaes commented 2 months ago

creio que no 2.0 já está sendo resolvido isso, chegou a testar o evolution-api 2.0 beta? a principio mudou muita coisa e também com o typebot promete ser melhor em varios quesitos.

oRafael07 commented 1 month ago

creio que no 2.0 já está sendo resolvido isso, chegou a testar o evolution-api 2.0 beta? a principio mudou muita coisa e também com o typebot promete ser melhor em varios quesitos.

Estou na 2.0 beta e ainda não foi corrigido