Giter Club home page Giter Club logo

wppconnect-team / wppconnect Goto Github PK

View Code? Open in Web Editor NEW
1.7K 1.7K 288.0 54.39 MB

WPPConnect is an open source project developed by the JavaScript community with the aim of exporting functions from WhatsApp Web to the node, which can be used to support the creation of any interaction, such as customer service, media sending, intelligence recognition based on phrases artificial and many other things, use your imagination

Home Page: https://wppconnect.io

License: Other

JavaScript 39.09% TypeScript 60.87% Shell 0.03%
ai api automate bot chat chatbot framework message nodejs open-source puppeteer sulla typescript wa whatsapp whatsapp-api whatsapp-bot wpp wppconnect zap-api

wppconnect's People

Contributors

alanmartines avatar antirek avatar bgastaldi avatar claudiozh avatar dependabot-preview[bot] avatar dependabot[bot] avatar edgardmessias avatar edupoli avatar elrafa-sg avatar flavio-evocorp avatar fnevesgx avatar ghsgabriel avatar github-actions[bot] avatar icleitoncosta avatar igordepaula avatar joaosouz4dev avatar joselourenc0 avatar leobevi avatar marcelo386 avatar neves-gabriel avatar renandecarlo avatar renat473 avatar renovate-bot avatar renovate[bot] avatar tadeubdev avatar tonbotfy avatar viniciusgdr avatar vitorjc1 avatar vitorsreis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wppconnect's Issues

Ativar recurso: Mensagens Temporárias / Enable feature: Temporary Messages

Olá, gostaria de solicitar o recurso de Mensagens Temporárias.

  • Ao ativar esse recurso, novas mensagens desaparecerão dessa conversa após 7 dias. Os participantes da conversa ainda podem salvar essas mensagens em outros locais.

Hello, I would like to request the Temporary Messaging feature.

  • When you activate this feature, new messages will disappear from this conversation after 7 days. Conversation participants can still save these messages to other locations.

Screenshot_MT

Enviar VCARD com texto "ENCAMINHADO"

queria mandar um VCARD
escrito encaminhado

como no exemplo abaixo:
WhatsApp Image 2021-04-24 at 19 29 33

Detalhe: Se eu enviar TEXTO sendMessageOptions inserindo isForwarded:true vai

Somente VCARD que não vai.

Obrigado

Erro: "Evaluation failed"

Mesmo tendo colocado TRYCATCH em todos os eventos da LIB, percebo que, quando o browser do client é encerrado a LIB ainda continua operando. E quando isso acontece, esse erro mata minha aplicação node, derrubando todo os outros usuários:

image

Gostaria de saber o que posso fazer pra melhorar isso, pois como dito acima, mesmo colocando TRYCATCH em tudo, o erro da LIB as vezes não cai no meu CATCH.

Erro ao enviar Vídeos

Estou usando a função sendFile para enviar VÍDEOS no formato MP4.

No LOCALHOST funciona perfeitamente. Porém, no VPS não funciona. Retorna este erro abaixo:

WhatsApp Image 2021-04-06 at 15 09 06

Abaixo segue o print da função CREATE

Screenshot_10

Error on getGroupInviteLink

When the method is called i'm getting the following error:

node:17090) UnhandledPromiseRejectionWarning: Error: Evaluation failed: Error: GROUP_JID: invalid jid type: Not an instance of WID
    at t.GROUP_JID (https://web.whatsapp.com/bootstrap_qr.3ee97e011a14353fd537.js:1:551992)
    at Object.t.queryGroupInviteCode (https://web.whatsapp.com/bootstrap_main.61ccbd302106e7080867.js:2:23304)
    at Object.window.WAPI.window.WAPI.getGroupInviteLink (/home/eduandy/myzap/node_modules/@wppconnect-team/wppconnect/dist/lib/wapi/wapi.js:1:34712)
    at __puppeteer_evaluation_script__:1:34
    at ExecutionContext._evaluateInternal (/home/eduandy/myzap/node_modules/puppeteer/lib/cjs/puppeteer/common/ExecutionContext.js:217:19)
    at process._tickCallback (internal/process/next_tick.js:68:7)
(node:17090) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:17090) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

I can't figure it out the issue :(

Adicionar nova função para o grupo - adicionar descrição e bloquear para somente o administrador conseguir alterar o conteúdo

Olá gostaria de solicitar o recurso de Adicionar nova função para o grupo - adicionar descrição e bloquear para somente o administrador conseguir alterar o conteúdo.

Configurações do grupo -> Editar dados do grupo -> Escolha quem pode mudar o nome, imagem e a descrição desse grupo: Participantes / Admins.


Hello I would like to request the ability to add a new role for the group - add description and block so that only the administrator can change the content.

Group settings -> Edit group data -> Choose who can change the name, image and description of this group: Participants / Admins.

Erro na função / Function error: *removeParticipant

Estou tentando remover alguns participantes usando a função *removeParticipant, não dá erro nenhum... Quando vou olhar o response da função, o resultado é *false.

Código:
await client.removeParticipant(id_grupo, contato);


I'm trying to remove some participants using the *removeParticipant function, it doesn't give any error... When I look at the function's response, the result is *false.

Code:
await client.removeParticipant(id_grupo, contato);

Sem Título-1

LiveLocation ( so funciona quando abro a live location no navegador)

Description

O live locarion esta funcionando.. porem so funciona se deixo o "headless":false para poder abrir o navegador, e ai poder clicar e abrir o mapa da localizacao envida , somete aqui nesse passo comeca a transmissao.

Environment

  • Wppconnect version(s): [e.g. 2.0.27, 2.2.1]
  • Browser: [e.g. Chrome 87, Chromium 85]
  • OS: [e.g. OSX 10.13.4, Windows 10]
  • Node version: [e.g. Node 8, Node 14]

Steps to Reproduce


1 - abrir a sessao
2 - deixar o config configurado com "headless":false
3 - enviar a localizacao ao numero
------ para fazer funcionar
4 - no navegador do headless abrir a localizacao // aqui comeca a enviar a localziacao
5 - clicar em outro contato para sair do atual // so de sair da tela com o mapa aberto deja de transmitir

Log Output

If relevant, paste all of your Log Output
If relevant, paste all of your challenge code in here

Additional context / Screenshot

Add any other context about the problem here. If applicable, add screenshots to help explain.

Reduzir a quantidade de informações no retorno das mensagens

Remover informações que se repete no retorno das funções de get messages, tais como informações do contato, links de imagem de perfil, id do chat (pois se estou fazendo a requisição já tenho o id), ou no caso de mensagens de grupos remover as informações de participante, e outras coisas que se repetem assim deixando o retorno mais leve e fácil de implementar pois vai ter só o necessário.
Assim se precisar de alguma informação a respeito do contato ou grupo usar a função para receber essas informações referentes ao chat e remove-las do retorno da mensagem.

Na função ONSTATECHANGE alguns clients mostram UNPAIRED o tempo inteiro

Isso acontece com alguns clients, já fiz vários testes de instabilidade mas ainda não consegui encontrar um motivo lógico que está causando isso.

Mesmo o client estando conectado, sem encerrar as sessões no celular, o WPP Connect mostra UNPAIRED:

image

Estou a vários dias tentando descobrir a causa do problema mas sem sucesso.

Implementar Envios de GIFF (como no mobile)

Hoje no WhatsApp Web quando vc tenta enviar um GIFF ele envia como IMAGEM ESTÁTICA.

Só é possível enviar GIFF no celular, direto do App do WhatsApp.

Minha sugestão seria implementar uma função que envie GIFF no WPPConnect sem enviar como imagem estática.

Problemas Função setChatState ( duração não passa de 30...40 segundos / Não aceita mais de um envio da função)

Description

A função setchatState nos meus testes:

1º Problema) Não passa de 40 segundos, mesmo eu enviando chamadas recorrentes da função (com intervalos de 3,5,10 segundos entre elas)
Obs: Se fosse possível passar para a função um parâmetro de duração do comando, ou então ela ficar com "duração eterna", até que eu envie o staus setChatState = 2 (remover status)

2º Problema) Não funciona chamar a função 2..3 vezes seguidas. Depois que o State automaticamente para de executar (depois que sumir o status de "gravando..." ou "digitando...") , já não funciona mais a execução da função, até que você saia e entre na conversa novamente (parece que depois faz isso, da uma atualizada nos states e ai a função setchatState volta a funcionar).
Para reproduzir este problema:

  • Faça a chamada da função (via Postman por exemplo)
  • Aguarde entre 20 a 30 segundos, que o status "digitando..." ou "gravando áudio..." desaparecerá automaticamente
  • Envie outra chamada da função (obs: entre esse passo e o passo anterior, o remetente não pode ter feito ação de digitar ou gravar alguma coisa, pq isso tb pode dar uma forçada na atualização dos status assim como sair e entrar de novo na conversa)
  • Vai observar que a função setChatState não vai funcionar (o status não é alterado)
  • Agora saia da conversa (clique em outra) e entre novamente
  • Envie outra chamada da função setChatState, verá que volta a funcionar. Ou seja, você envia uma vez Funciona, depois as próximas chamadas da função só funcionam depois que sai e entra na conversa (ou se o remente digitar ou gravar alguma coisa)

Environment

  • **Wppconnect version(s): 1.3
  • Browser: Chromium (que é instalado automaticamente pelas dependicas do Wppconnect na versão 1.3)
  • OS: Windows Server 2012
  • Node version: 6.14.11

Steps to Reproduce

  1. enviar a chamada da função passando state 0 ou 1
  2. o status vai durar entre 20 a 25 segundos e desaparecerá automaticamente
  3. Então se a status dura entre 20 a 25 segundos, fazer a chamada da função setChatState 6 vezes, deveria durar uns 2 minutos o status.
  4. Fazer a chamada da função setChatState 6 vezes a cada 10...18 segundos
  5. Perceberá que mesmo assim, vai durar no máximo 40 segundos o status passado.

Your Code

// FAÇO A CHAMADA DO CÓDIGO ABAIXO 6 VEZES (OU MAIS) A CADA 15 SEGUNDOS, PARA FAZER O STATUS DURAR UNS 2 MINUTOS. MAS, NÃO PASSA DE 40 SEGUNDOS.

const formDataAux = JSON.stringify({
'instancia': mensagem.instancia,
'number': mensagem.destinatario,
'state': mensagem.chat_state
});
await request.post(
{
headers: {'content-type': 'application/json'},
url: "http://localhost:3000/wp/setChatState",
body:formDataAux

  }, async function(error, response, body){
    
    if (error != undefined && error != null) { console.error("❌ Ocorreu um erro ao enviar mensagem agendada Chat State!\n\n Instancia: "+ mensagem.instancia +" / Phone User: " + mensagem.remetente + " / Recno Msg: " + mensagem.recnomsg + "\n\nErro: " + error) }
    else {
      console.log("✅ Status Chat enviado com sucesso! \n\n Instancia: "+ mensagem.instancia +" / Phone User: " + mensagem.remetente + " / Recno Msg: " + mensagem.recnomsg)
      
    }  
  })

EVIDENCIA EM VIDEO

https://drive.google.com/file/d/1pT0MosZcruEATCcIQzoSyHxQh5UJsjpW/view?usp=sharing

Implementar Labels(etiquetas)

Is your feature request related to a problem? Please describe.
no metodos de chat get, e tambem acho que no webhook existe um objeto no json labels.

como por exmeplo aqui no metodo all chat whit messages
"id": "[email protected]",
"pendingMsgs": false,
"labels": [
"3",
"38"
],

esse label e a etiqueta que creia no wa businnes.

Describe the solution you'd like
A idiea seria poder receber ai junto com o id o nome do label para aprensentar na tela

Describe alternatives you've considered

seria interesante tambem tivesse o control das labels como criar e poder asignar o numero a uma label

Sending messages while the phone is disconnected

I am trying to create a way to send messages when the cell phone has been paired but has been temporarily disconnected. I tried it with guzzlehttp, but was unsuccessful. It would be a kind of queue to send messages when the cell phone reconnects again.

Melhorias na importação de conversas

Problema da função loadEarlierMessages: Começa a partir da vigésima mensagem e não da ultima mensagem enviada/recebida e não possibilita voltar ao inicio caso ocorra algum erro.

Problema da função loadAndGetAllMessagesInChat: Impossibilita o uso de outras funções enquanto esta sendo utilizado.

Gostaria que a função loadEarlierMessages (ou uma nova função) recebesse o parâmetro (id da mensagem) de onde começar a carregar as mensagens no chat, assim possibilitando gerar intervalos no carregamento ou no caso de uma desconexão do aparelho (desconexão do sistema), carregar apenas as ultimas mensagens que ainda não foram gravadas, assim evitando que precise rodar a função loadAndGetAllMessagesInChat para pegar apenas as mensagens trocadas durante essa desconexão, alem disso essa nova função iria possibilitar a importação por partes ao invés de importar tudo de uma vez.

Implementar função "sendCallNotification"

Basicamente a função "sendCallNotification" iria dar apenas 1 TOQUE por ligação (poderiamos optar por VÍDEO ou VOZ) e encerrar a ligação.

Só pra mostrar uma notificação para o destinatário => "1 ligação de voz perdida", isso ajuda em nossas estratégias de marketing.

Metodos com bugs

forwardMessages

Esta retornando undefined

clearChat

Esta retornando erro
"Cannot read property 'toString' of undefined"

archiveChat

Unread messages methods not working

Description

When session is successfully initialized, I need to get the unread messages arrived when the session was not connected.

I tried to use: getAllNewMessages, getAllUnreadMessages and getUnreadMessages but all of then returns 0 messages in the returned list.

Suggestion: It can return an array of Chat objects (that contains unread messages), and on each chat object it could have an messageList array only with the unreaded messages. Or it can return a flat array of message objects (unreaded messages of course) with a field indicating the chatId ([email protected]).

Environment

  • Wppconnect version(s): [latest]
  • Browser: [Chrome and Chromium latest]
  • OS: [Windows and Linux]
  • Node version: [Node 12.6.1]

Bug no evento onAddedToGroup

Estou tentando usar este evento, mas aparentemente ele não está funcionando.

image

PS: No terminal também não retorna nada quando chamo o console.log.

getProfilePicFromServer() não retorna dados

Description

Realizando alguns testes verifique que getProfilePicFromServer() não retorna os dados quando o chatId não esta ativo em uma conversa.

Para reproduzir:

  • getAllContacts(), peguei um dos contatos que ainda não estava com o chat aberto.
  • Passei o chatId para o getProfilePicFromServer(chatID), não retornou a imagem, quando olho no celular esse mesmo contato possui imagem, quando vou em nova conversa.

Inclusive a o getAllContacts devolve o profilePicThumbObj preenchido apenas das conversas em aberto também.
A necessidade seria preencher a lista de contatos para abrir uma nova conversa e aparecer a foto.

Segue alguns prints
Screen Shot 2021-06-01 at 10 30 47
Screen Shot 2021-06-01 at 10 30 59
Screen Shot 2021-06-01 at 10 32 33
Screen Shot 2021-06-01 at 10 33 04
WhatsApp Image 2021-06-01 at 10 26 45 (1)
WhatsApp Image 2021-06-01 at 10 26 45

O contato Renan Alves possui foto, porém não retorna pois não esta ativo como conversa.
Já o contato (ATIVO) LEONARDO YOSHITERO KATAYAMA, possui foto e retorna conforme esperado, pois esse tem uma conversa ativa.

Complementando, acabei de verificar que quando arquiva a conversa, o server deixa de devolver o profilePicThumbObj também. Dessa forma conversas arquivadas também não vem a foto.

Environment

  • Wppconnect version(s): [e.g. 2.0.27, 2.2.1]
  • Browser: [e.g. Chrome 87, Chromium 85]
  • OS: [e.g. OSX 10.13.4, Windows 10]
  • Node version: [e.g. Node 8, Node 14]

Erro ao enviar áudio M4A

Gostaria que liberassem M4A nos envios da LIB, tanto em sendFile, sendAudio e sendPtt, pois está retornando este erro.
image

Se puderem permitir todos os formatos de áudio, evita que tenhamos problemas futuros com outros modelos.

Ou também pensar na possibilidade de implementar algo que já converta o áudio em um formato permitido, etc

Receiving message in onMessage after calling dispose

const wppconnect = require('../../dist');

wppconnect
  .create()
  .then((client) => start(client))
  .catch((erro) => {
    console.log(erro);
  });

function start(client) {
  a = client.onMessage((message) => {
    if (message.body === 'Hi' && message.isGroupMsg === false) {
      client
        .sendText(message.from, 'Welcome Wppconnect 🕷')
        .then((result) => {
          console.log('Result: ', result); //return object success
        })
        .catch((erro) => {
          console.error('Error when sending: ', erro); //return object error
        });
    }
  });
  setTimeout(()=>{
    a.then(b=> b.dispose());
  },10000);
}

I used the example code given in the repo and added setTimeout to dispose.

According to the above code.
after 10 seconds, the listener should stop listening to new messages.
But I was still getting the new messages.

Evento onAck não está sendo disparado ao realizar envios pela função sendPtt

Description

Evento onAck não está sendo disparado ao realizar envios pela função sendPtt

Environment

Wppconnect version 1.5.0

Steps to Reproduce

  1. Colocar um break point (debug) no evento onAck
  2. Realizar um envio de audio pelo sendPtt
  3. Observar que após o envio pelo sendPtt não será chamado onAck (não irá entrar no break point)

Additional context / Screenshot

Problema começou a ocorrer após a atualização para release 1.5.0.

Implementar na função REPLY o envio de MÍDIAS

Seria muito bacana se no REPLY pudesse usar as funções de envio de mídia que já temos hoje.

Algo como:

async function newReply(client, whatsapp, content, caption, id_message) {
await client.reply(
whatsapp,
file('URL_TO_FILE')',
"caption aqui",
id_message.toString()
) .catch(err=> console.log(err)) ;
}

Desta forma poderíamos passar no CONTENT um URL de um arquivo, igual no sendFile, etc.

Adicionar a opção de poder setar o diretorio fixo para salvar o token

Hoje temos as opções folderNameToken e mkdirFolderToken, mas o problema delas é que dependendo de onde você executa o comando de inicialização do script ele muda o diretorio do token e a ideia aqui é colocar um diretorio fixo para o token independente de onde execute o script algo como dirToken: "/var/token" .

return empty sender object

Upon returning the message, the sender object is empty, and therefore it is not possible to obtain the url of the user's profile photo.
sender

statusFind não está sendo retornado

Nos parametros de inicialização a opção statusFind não retorna nada no log, isso tanto utilizando a nova forma de passar parametros como objeto, como na forma antiga deprecated. deveria retornar valores como isLogged || notLogged || browserClose || qrReadSuccess || qrReadFail || autocloseCalled || desconnectedMobile || deleteToken

statusFind

deprecated

Log

comoObject

novaForma

Implementar Thumbnail ampliada em SendLinkPreview

Quando enviamos um link do Youtube por mensagem, aparece uma Thumbnail diferente, um pouco mais ampliada, com opção de dar play no vídeo (caso seja do Youtube ou Facebook)

image

Gostaria que implementassem essa opção também no WPP.

receive message ack value not change

        //FAILED: = -1
        //SENT: = 1
        //RECEIVED: = 2
        //READ: = 3
        client.onAck(async (ack) => {
            console.log('* Listen to acks', ack);
                axios.post(config.webhook.ack_path, ack).catch(err => {
                    //console.log("ack error:",err);
                });
        });

onAck can not get value of received message

Função: getAllTransmission and getAllUserTransmission

Olá Equipe,
Existe a possibilidade de criar a função de listar todas as listas de transmissões ?

  1. Pegar todas as listas do contato (se possível mostrar informações dela, name, img, id ... )
  2. Pegar todos os contatos que está dentro da lista de transmissão (semelhante ao Contact já existente)

OBS: Não sei se é cabível, mais também poder gerenciar as transmissões, changeName, changePic, addUser e removeUser

Implementar retorno nas fuções SendPtt e SendFile (para possibilitar validações e rastreabilidade)

Descrição

As funções sendPtt e sendFile não possuem retorno definido.
A função ter um retorno é importante para que seja possível realizar validações posteriores, como por exemplo verificar se a mensagem foi entregue, capturar o id gerada para conversa, etc.

Descreva as alternativas que você considerou

Como solução, sugiro implementar o mesmo retorno que já existe para função sendTxt. (< Message >)

Contexto Adicional

Na função sendTxt eu utilizo o retorno (< Message >) para guardar a propriedade id e ack do disparo executado, para posteriormente cruzar essa informação no evento onAck.
Na documentação das duas funções (sendPtt e sendFile) diz que realmente não possui retorno. Nos debugs que realizei pude confirmar que a função tem retorno "undefined".

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.