terça-feira, 4 de fevereiro de 2020

[Sobre o Zabbix] Integração de Alertas Zabbix com WhatsApp (YowSup)


Neste tutorial irei ensinar a como realizar a integração dos Alertas do Zabbix com o WhatsApp usando a ferramenta YowSup.

Neste tutorial estarei usando:

Meu GIT com o projeto atualizado com os arquivos novos e versão do WhatsApp: https://github.com/everaldoscabral/yowsup

Só baixarem o projeto do meu GIT que irá funcionar perfeitamente! Foi testado dia 12/01/2022.

Caso não tenha um bom entendimento da ferramenta Zabbix, conhecimento em Linux, não aconselho a tentar realizar a implementação, por mais que eu tente facilitar o máximo possível no tutorial. Mas problemas podem surgir.

Lembrando que, o número a ser usado será de USO EXCLUSIVO da ferramenta. Antes de associar à ferramenta, caso seja uma linha que nunca tenha usado WhastApp, use-a por mais ou menos 1 semana. Para depois associar à ferramenta.

Sem mais delongas vamos por a mão na massa.

ATUALIZAÇÃO 12/01/2022!

Antes de iniciar necessitamos que, no Arquivo do Agent e do Server tenha:

Timeout=30
AllowRoot=1

E na hora que informar o número que irá receber os Alertas (Mída do Usuário) utilizem:

NUMERO@s.whatsapp.net

Informação adicional:

Outra coisa em relação ao envio de notificações para grupos, é que na Mídia de Usuário do Zabbix o campo "Send to" deve estar nesse formato: 5521xxxxxxxxx-xxxxxxxxxx@g.us. Para grupos deve se utilizar @g.us ou invés de @s.whatsapp.net. Mas se estiver enviando para um único número o final deve ser @s.whatsapp.net.

##Instalação do Python 3.6 e complementos necessários

yum install python-devel
yum install libevent-devel
yum install https://repo.ius.io/ius-release-el7.rpm
yum install python36u python36u-libs python36u-devel python36u-pip
yum install gcc git vim
yum install epel-release
yum install python-pip
yum install unzip wget

##Instalando dependências do YowSup conforme documentação (https://github.com/tgalal/yowsup/blob/master/setup.py)

python3.6 -m pip install --upgrade pip
python3.6 -m pip install consonance==0.1.3-1
python3.6 -m pip install appdirs
python3.6 -m pip install python-axolotl==0.2.2
python3.6 -m pip install requests
python3.6 -m pip install cryptography
python3.6 -m pip install six==1.10
python3.6 -m pip install argparse
python3.6 -m pip install pyaxmlparser

##Baixando YowSup e extraia para onde quiser. Esse caminho da extração será informado posteriormente.

git clone https://github.com/everaldoscabral/yowsup.git
cd yowsup

##Antes de iniciar é necessário alterar o MD5, Version e realizar upgrade do Protocolo WA 4.0. Para que não gere a mensagem de "old version".

##Alterando MD5 e Version. Isso será necessário todas as vezes que acontecer a mensagem supracitada ("old version").

vim yowsup/env/env_android.py

##Editar os campos _MD5_CLASSES E _VERSION













##Existe um script que coleta essas informações de forma fácil e rápida, segue link para download do script ou aqui também para download. Lembre-se de dar permissão de execução ao script e realizar o download do .apk do WhatsApp direto do site oficial.

#A forma de execução do script é:

python3 "script" "caminho do .apk"

#Supondo que tudo esteja no caminho /tmp, a execução é:

python3 dexMD5.py WhatsApp.apk

#A saída do script é a forma abaixo, basta copiar os dados e alterar nos campos citados:




Atuais dados dia 13/01/2022:

Version: 2.22.2.71
ClassesDex: Z0Q/+1av/0QrSugRSYAOoA==

#Agora é necessário realizar algumas modificações em alguns arquivos para realizar o upgrade do protocolo WA 4.0. Conforme link (https://github.com/tgalal/yowsup/pull/2924/files). Caso não queira editar, seguem arquivos editados para download. Lembrando de colocar no mesmo caminho:






















##Criando arquivo de configuração do YowSup

vim /etc/zabbix/zap.conf

cc=55                                 #Código do País
phone=5579xxxxxxxx        #Composto com Código + DD + Número sem dígito 9


##Registrando (-E android sempre ter // -d debug)
##Você receberá um SMS com o código de ativação

python3.6 yowsup-cli registration -r sms -c /etc/zabbix/zap.conf -E android -d

##Código recebido e registrando

python3.6 yowsup-cli registration -R xxxxxx -c /etc/zabbix/zap.conf -d

##Após registrar terá que ter o status assim: status: b'ok'
##Após registrar agora é a hora de testar o envio de mensagem teste para um número. Dentro do executável "yowsup-cli" você pode trocar a chamada da versão para a 3.6, assim como eu fiz. Na primeira linha faz assim: #!/usr/bin/env python3.6

python3.6 ./yowsup-cli demos -c /etc/zabbix/zap.conf -s 5579xxxxxxxx "Mensagem de teste"























Agora temos a ferramenta totalmente funcional! Vamos agora para a parte do Zabbix.

##Criando um script para envio de Alertas
##Abaixo segue download do script que estou utilizando. Lembrando de dar permissão de execução chmod 777
##Aonde basta informar os os itens conforme seu cenário, seu gosto:

YOWSEXEC
CONF
LOG

zabbix-alertas-whatapp.sh
  • $1 – Destino. Quem receberá a notificação.
  • $2 – Assunto. Texto do assunto da notificação.

##O script deverá ficar em /usr/lib/zabbix/alertscripts ou o caminho que você escolher conforme arquivo de configuração do Zabbix Server. Para testar a execução do script segue mais abaixo.

./zabbix-alertas-whatapp.sh 5579xxxxxxxx "Teste"

##Também pode verificar a execução dando tail no arquivo de log:
tail -f /tmp/whatsapp.log

Agora basta criar um tipo de mídia na interface web do Zabbix e cadastrar a mídia para o usuário receber a notificação.



Cadastrando a mídia do usuário conforme o exemplo abaixo: 


VERIFICAR ATUALIZAÇÃO 05/06/2020, INÍCIO DO POST.

Uma imagem vale mais do que mil palavras.



Lembrando que é necessário criar a ação no Zabbix Server conforme print abaixo:






Bônus! 

É possível enviar alertas para um número ou para um Grupo, que é o que eu utilizo. Para isso, o número associado deve estar no Grupo depois basta pegar o ID do Grupo:

./yowsup-cli demos --yowsup --config /etc/zabbix/zap.conf
/L
/groups list 













Basta anotar o campo ID conforme destacado.

Bônus 2!

Caso tente enviar mensagens e fique a mensagem de "Aguardando essa mensagem. Isso pode demorar um pouco". Basta deletar o arquivo axolotl.db que fica em /root/.config/yowsup/5579xxxxxxxx. Também dê permissão de chmod 777 nessa pasta.

Todas às vezes que adicionar alguém no Grupo, será necessário deletar esse arquivo. Então melhor criar o Grupo, adicionar o contato bem como as pessoas que farão parte.

Bônus 3!

Eu tive que instalar tudo novamente no meu novo telefone, instalei o WhatsApp e quando começaram a chegar as notificações como imaginei, chegou aquela mensagem: "Aguardando essa mensagem. Isso pode demorar um pouco."?

Tentei deletar o arquivo axolotl.db que fica em /root/.config/yowsup, ainda sim não surtiu efeito. Então usei o comando find / -name axolotl.db e para minha surpresa, me mostrou mais outro diretório (/var/lib/zabbix/.config/yowsup) com este arquivo. Pois bem, bastou eu deletar também o arquivo deste diretório e voltei a receber normalmente os alertas. \O/

Bom pessoal espero ter ajudado e estou à disposição.

Abraços
\O

99 comentários:

  1. Vou testar, obrigado por compartilhar, encontrei pelo grupo no facebook, grande abraço.

    ResponderExcluir
  2. Este comentário foi removido por um administrador do blog.

    ResponderExcluir
  3. Efetuei o teste segui certo e deu esse erro :
    File "yowsup-cli", line 722, in
    if not parser.process():
    File "yowsup-cli", line 362, in process
    super(RegistrationArgParser, self).process()
    File "yowsup-cli", line 216, in process
    config = config_manager.load(self.args["config"])
    File "/root/yowsup-master/yowsup/config/manager.py", line 46, in load
    config = self._load_path(path_or_profile_name)
    File "/root/yowsup-master/yowsup/config/manager.py", line 102, in _load_path
    raise ValueError("Unsupported config type")
    ValueError: Unsupported config type


    isso ao tentar pegar o codigo

    ResponderExcluir
  4. Amigo, tem a possibilidade de instalar no debian ?
    na primeira tentava ali
    yum install python-devel mudei para apt-get install , mas sem sucesso..

    ResponderExcluir
  5. Everaldo,

    Mesmo fazendo as alterações MD5 e Version, ao executar o script pra envio de sms retorno falha por old_version.

    ResponderExcluir
  6. Opa bom dia.

    Aqui esta dando o seguinte erro : ModuleNotFoundError: No module named 'pyaxmlparser' ao executar esse comando : python3 dexMD5.py WhatsApp.apk


    Já fiz a instalação usando o comando pip install pyaxmlparser e mesmo assim continua esse problema

    ResponderExcluir
    Respostas
    1. Você precisa executar o dex... Conforme versão do python e o módulo que instalou nele. Talvez aí seja python 2.7.

      Excluir
  7. OPa, tudo bem?
    Estou tantno usar , mas estou com um problema.
    Já consegui pegar o sms e fazer o cadastro, mas na hora e enviar msg ele conecta e desconeta.
    EU acho q o whatspp fez alguma atualização ai tbm está com esse problema ou sera q configurei algo errado?

    ResponderExcluir
    Respostas
    1. Colocou -d no final para tentar ver o que há? O arquivo de configuração está de acordo com o informado no tutorial?

      Excluir
  8. COnsegui fazer funcionar :)
    Queria saber se tem como mandar para uma lista de contatos uma mesma msg e também enviar imagens.
    thx

    ResponderExcluir
  9. Outra duvida eu tenho q ter os numeros cadastrado?
    Ou eu posso enviar para qualquer numero?

    ResponderExcluir
    Respostas
    1. Você envia para qualquer um mesmo não estando na lista. Até então só consegui enviar para uma pessoa ou um grupo, os alertas do Zabbix. Demais informações, favor consultar projeto do Desenvolvedor. :D

      Excluir
    2. Certo, eu vou dar uma lida.
      Estou lá no forum do github, mas não tem muita informação.
      Agora quero descobrir como enviar image/gif para um numero.
      Pois eu sei a forma de usar o /L e conectar e funciona, mas o terminal buga todo e queria só rodar uma linha de comando para enviar a img

      Excluir
  10. Tentei registrar um numero e retornou o serguinte erro:


    reason: b'missing_param'
    param: b'authkey'

    ResponderExcluir
  11. O meu programa tenho q sempre rodr em sudo sabe qual pode ser o problema?

    ResponderExcluir
  12. Cara, eu nem precisava do yowsup para usar no zabbix. Só precisava fazer esse projeto abandonado funcionar novamente.
    Pq vc não cria um novo repositório com essa versão funcional dele pra galera dar vida a esse projeto novamente?

    ResponderExcluir
    Respostas
    1. Olá, o projeto até então é funcional para o que preciso. O que tu precisa e não funciona?

      Excluir
    2. Com as modificações que vc sugeriu ele se tornou funcional para mim tb. O problema é que o repositório oficial deixou de ser atualizado. Ai tive q pesquisar bastante até chegar aqui e ver os ajustes q vc fez

      Excluir
    3. Entendi! É que infelizmente não sou DEV e dependo do projeto original, algumas coisas consigo resolver, outra somente o DEV ou quem tem o manejo de desenvolver na linguagem do projeto. Infelizmente.

      Excluir
    4. Que pena! Eu desenvolvo em PHP e estava até disposto a me aventurar em python pra ajudar no projeto. rs

      Excluir
    5. Kkkk, mas pode fazer e farei toda questão de divulgar. Falta resolver envio em broadcast e envio de imagens/áudio. O que falta para o envio em anexo é mudar a URL. Caso queira saber, posso lhe mandar o email.

      Excluir
  13. Olá Everaldo, bom tutorial, mas não funciona para mim, fiz o registro corretamente, mas envie uma mensagem não envie nada, ele está bloqueado handle_close, tenho as mesmas versões do seu tutorial que você sabe que pode ser. Gracias por tu Colaboracion.


    yowsup-cli v3.2.0
    yowsup v3.2.3
    consonance v0.1.3-1
    dissononce v0.34.3
    python-axolotl v0.2.2
    cryptography v2.9.2
    protobuf v3.12.1

    [root@5f55cdc5c558 yowsup-master]# python3.6 yowsup-cli demos -c config.conf -s 57xxxxxxxxx "Prueba" -d
    .
    ...
    ....
    D 2020-05-22 03:18:45,796 yowsup.env.env - Env not set, setting it to android
    D 2020-05-22 03:18:45,797 yowsup.env.env - Current env changed to android
    D 2020-05-22 03:18:45,797 yowsup.layers.noise.layer - Performing handshake [username= 57xxxxxxx, passive=True]
    D 2020-05-22 03:18:45,797 yowsup.layers.noise.layer - Starting handshake worker
    D 2020-05-22 03:18:45,944 yowsup.layers.network.dispatcher.dispatcher_asyncore - handle_close
    D 2020-05-22 03:18:45,945 yowsup.layers.network.layer - Disconnected
    D 2020-05-22 03:18:45,946 yowsup.layers.axolotl.layer_control - Disconnected, reboot_connect? = False

    ResponderExcluir
    Respostas
    1. Como tá teu arquivo de configuração do Zabbix, o que cria com DDI e etc? Fez a substituição paramodificados? Esse número já tinha WhatsApp ou é novo? Se novo,usou quanto tempo no celular?

      Excluir
    2. Funcionou para mim, muito obrigado pela sua resposta e pelo tutorial.

      Excluir
  14. Na hora de registrar da o seguinte erro
    yowsup.common.http.warequest - b'{"login":"55XXXXXXXXXX","status":"fail","reason":"missing"}\n'

    ResponderExcluir
    Respostas
    1. Verifique se criou o arquivo correto, se colocou os arquivos novos. Enfim, só fazer direitinho. Se perceber bem, acima tem o colega que estava com problema. Só foi ler direitinho que resolveu. ;)

      Excluir
  15. Este comentário foi removido pelo autor.

    ResponderExcluir
  16. Fala Everaldo.

    Primeiramente, parabéns pelo conteúdo... Muito simples e auto-explicativo!!
    Implementei num ambiente em centos7, encima de nginx, com banco postgreSQL e Zabbix na versão 5.0 e esta funcionando muito bem!

    Um dica para quem for utilizar com grupo do whats, sempre que adicionar alguem no grupo, siga a dica "Bônus 2!" e delete a base axolotl.db,
    não se preocupe, assim que a api for chamada novamente ela recriará a base sozinha.

    Mais uma vez, obrigado pelo conteúdo.

    Abraço.

    ResponderExcluir
    Respostas
    1. Obrigado irmão, que bom que gostou e que eu tenha feito de uma forma simples e direta. :D

      Excluir
  17. Parabéns pelo conteudo, funciona bem, porém esta dando erro de TimeOut quando vai executar um teste do media type. sabe me dizer o pq ?

    ResponderExcluir
  18. Mesmo aumentando para 30 em ambos não foi cara ... será que pode ser permissões em arquivo ou pasta ?

    ResponderExcluir
  19. Agora esta dando essa mensagem quando executo com poder de usuario zabbix ... sabe me dizer o pq ?

    E 2020-06-06 00:16:44,643 yowsup.config.manager - Could not find a config for profile=5511966666666, paths checked: /var/lib/zabbix/.config/yowsup/5511966666666/config.yo:/var/lib/zabbix/.config/yowsup/5511966666666/config.json

    ResponderExcluir
  20. Boa noite, não sei se esta ativo nesse blog ou post. Mas antes queria parabenizar pela iniciativa de passar seu conhecimento adiante. Estou pra implementar a solução aqui mencionada, já tenho ela com telegram rodando no Debian 9. Gostaria de saber se você testou ela com CentOS 8, se vai ter algum problema com versionamento dos pacotes ou ela só pode rodar no CentOS 7 mesmo? Muito obrigado e abraços!

    ResponderExcluir
    Respostas
    1. Olá boa noite, mesma coisa. Já testei com Zabbix 5 inclusive.

      Excluir
    2. Show, vou baixar o Centos 8 e montar o lab. Obrigado!

      Excluir
    3. Fiz aqui no CentOS 8, até a instalação do Zabbix foi tudo certo... A partir do inicio do Tutorial quando temos que instala o Python 3.6, aí começou o BO, não instala por nada... Só a versão mais nova... Nesse caso praticamente acabei desistindo do CentOS e baixei o 7, vou começar a instalação agora, em breve posto resultado, abraços!

      Excluir
    4. A instalação no CentOS 7 ocorreu tudo certo conforme esperado. Já no Zabbix 5 as telas de configuração são diferentes, mas fim, funcionou também (SEGUE PRINT: http://prntscr.com/syozud). Fiquei com algumas dúvidas com relação ao YowSup, como por exemplo, o arquivo axolotl.db, não é interessante fazer um scritp para apaga-lo periodicamente? Outra coisa, o projeto YowSup ele tava parado, será que vamos ficar a pé em breve? Vou faze mais testes e posto resultado.

      Excluir
    5. No Zabbix 5 ficou até melhor mas é só criar uma de problema e outra de recuperação, só isso. Já para a base, isso é inerente à pessoa. Toda as vezes vezes que adicionar alguém novo, tem que deletar. Então a pessoa cria o script conforme necessidade. Já para o Projeto tem mais de um ano parado, mas muitos outros mantém. Mas caso manje, pode dar a própria manutenção e etc.

      Excluir
  21. Parabens pelo tutorial! O único que encontrei e que realmente funciona… A minha pergunta é… Funciona mandar msg para mais de um grupo? Exemplo mandar alertas específicos para grupos específicos.... Obrigado

    ResponderExcluir
    Respostas
    1. Primeiramente gostaria de agradecer o feedback, espero que tenha ficado bastante claro e direto para qualquer um consiga fazer. Já para sua pergunta, sim! É sõ associar o ID do grupo ao Usuário e brincar de criar ações. Agora é mais entendimento de Zabbix do que outra coisa. Se souber criar ações que lhe atendam, ele enviará (YowSup).

      Excluir
  22. Alguem mais teve esse problema?

    I 2020-07-20 14:10:32,860 yowsup.common.http.warequest - b'{"login":"5516xxxxxxxx","status":"fail","reason":"bad_param","param":"id"}\n'
    status: b'fail'
    reason: b'bad_param'
    param: b'id'
    login: b'5516xxxxxxxx'

    ResponderExcluir
    Respostas
    1. Remova o parâmetro ID no arquivo de configuração. ;)

      Excluir
    2. Ola com um problema parecido, conseguiu resolver?
      I 2022-08-04 08:20:56,960 yowsup.common.http.warequest - b'{"login":"55419XXXXXXX","param":"backup_token","reason":"bad_param","status":"fail"}\n'
      status: b'fail'
      reason: b'bad_param'
      param: b'backup_token'
      login: b'554192885611'

      Excluir
  23. Ola boa madruga eu gostaria de saber se tem algum jeito de encontrar esse codigo ClassesDex: R4LeoAEBkTDrbXgRY1ZOKg== no windows 7 ou 10 pois preciso desse codigo para por o fix sms no whatsapp beta. Aguardo uma resposta e muito obrigado seu blog é muito bom

    ResponderExcluir
    Respostas
    1. Obrigado! E seja Windows ou Linux creio que seja o mesmo. Então só baixar o APP, baixar o script que faz a extração e pegar os dados. Agora se vai executar no ambiente Linux ou Windows aí é contigo. Entendeu? ☺️

      Excluir
    2. Este comentário foi removido pelo autor.

      Excluir
    3. Consegui instalar tudo no mais no celular com termux o problema é que nao aparece nada quando executo o script abre e nao tem nada dentro, minha ultima duvida é onde eu devo deixar o apk do whatsapp e tambem o script em que que pasta devo deixa- los

      Obrigado e boa noite

      Excluir
    4. Primeiramente boa noite

      Entao consegui instalar tudo no celular usando termux mais ao executar o script nao nao apareceu as informações entao entao minha dúvida e em que pasta eu devo deixar o apk do whatsapp e o script para poder executar o camando, se eu executar assim python3 dexMD5.py storage/emulated/0/Download/ ta certo pois meu apk e o script estao na pasta download

      Obrigado

      Excluir
    5. O .apk é só, simplesmente para você extrair o MD5 e versão. Ponto! Então não precisa enviar para lugar algum, basta deixar na tua máquina e apontar o caminho do caminho para ele lhe dar o que deseja, conforme tutorial. ;)

      Excluir
  24. ótimo tutorial meu amigo.

    Ao tentar enviar a msg ele me retorna essas linhas de erro:
    File "./yowsup-cli", line 6, in
    from yowsup.config.manager import ConfigManager
    File "/root/yowsup-master/yowsup/config/manager.py", line 4, in
    from yowsup.config.v1.serialize import ConfigSerialize
    File "/root/yowsup-master/yowsup/config/v1/serialize.py", line 8, in
    from consonance.structs.keypair import KeyPair
    File "/usr/lib/python2.7/site-packages/consonance/structs/keypair.py", line 4, in
    from dissononce.dh.x25519.x25519 import X25519DH
    File "/usr/lib/python2.7/site-packages/dissononce/dh/x25519/x25519.py", line 1, in
    from cryptography.hazmat.primitives.asymmetric import x25519
    ImportError: cannot import name x25519


    Consegue me dar uma luz?

    ResponderExcluir
    Respostas
    1. Talvez precise verificar se a versão dos pacotes estão corretas, conforme tutorial. Ou atualizar alguma caso não tenha requisito de versão.

      Excluir
  25. Até a parte do enviou da mensagem com codigo de ativação e o comando de resgistrou fou tudo certinho sem erro, mais quando tento executar o comando de enviou de mensagem de teste acontece isso e não envia a mensagem:

    [root@Zabbix-Centos8 yowsup-master]# python3.6 yowsup-cli demos -c /etc/zabbix/zap.conf -s 5579998044358 "Mensagem de teste"
    yowsup-cli v3.2.0
    yowsup v3.2.3


    Copyright (c) 2012-2019 Tarek Galal
    http://www.openwhatsapp.org

    This software is provided free of charge. Copying and redistribution is
    encouraged.

    If you appreciate this software and you would like to support future
    development please consider donating:
    http://openwhatsapp.org/yowsup/donate


    I 2020-11-05 09:23:29,595 yowsup.layers.network.layer - Connecting to e15.whatsapp.net:443
    I 2020-11-05 09:23:29,701 yowsup.axolotl.manager - Generating 812 prekeys, current max_prekey_id=0
    I 2020-11-05 09:23:29,857 yowsup.axolotl.manager - Storing 812 prekeys
    I 2020-11-05 09:29:58,254 yowsup.axolotl.manager - Loaded 812 unsent prekeys
    E 2020-11-05 09:29:58,845 yowsup.layers.network.dispatcher.dispatcher_asyncore - Traceback (most recent call last):
    File "/usr/lib64/python3.6/asyncore.py", line 91, in write
    obj.handle_write_event()
    File "/usr/lib64/python3.6/asyncore.py", line 441, in handle_write_event
    self.handle_connect_event()
    File "/usr/lib64/python3.6/asyncore.py", line 429, in handle_connect_event
    self.handle_connect()
    File "/root/yowsup-master/yowsup/layers/network/dispatcher/dispatcher_asyncore.py", line 34, in handle_connect
    self.connectionCallbacks.onConnected()
    File "/root/yowsup-master/yowsup/layers/network/layer.py", line 54, in onConnected
    self.emitEvent(YowLayerEvent(YowNetworkLayer.EVENT_STATE_CONNECTED))

    ResponderExcluir
    Respostas
    1. Estou com o mesmo erro, conseguiu achar a solução?

      Excluir
    2. Cara, tb estou com o mesmo problema, alguem descobriu como resolver?

      Excluir
  26. Este comentário foi removido pelo autor.

    ResponderExcluir
  27. Boa tarde, estou com um erro ao tentar enviar a mensagem de teste. Consegue me ajudar?

    I 2021-01-27 12:43:49,642 yowsup.layers.network.layer - Connecting to e4.whatsapp.net:443
    I 2021-01-27 12:43:49,660 yowsup.axolotl.manager - Loaded 812 unsent prekeys
    E 2021-01-27 12:43:49,661 yowsup.layers.network.dispatcher.dispatcher_asyncore - Traceback (most recent call last):
    File "/usr/lib64/python3.6/asyncore.py", line 91, in write
    obj.handle_write_event()
    File "/usr/lib64/python3.6/asyncore.py", line 441, in handle_write_event
    self.handle_connect_event()
    File "/usr/lib64/python3.6/asyncore.py", line 429, in handle_connect_event
    self.handle_connect()
    File "/root/yowsup-master/yowsup/layers/network/dispatcher/dispatcher_asyncore.py", line 34, in handle_connect
    self.connectionCallbacks.onConnected()
    File "/root/yowsup-master/yowsup/layers/network/layer.py", line 54, in onConnected
    self.emitEvent(YowLayerEvent(YowNetworkLayer.EVENT_STATE_CONNECTED))
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 94, in emitEvent
    self.__upper.emitEvent(yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 94, in emitEvent
    self.__upper.emitEvent(yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 94, in emitEvent
    self.__upper.emitEvent(yowLayerEvent)
    [Previous line repeated 3 more times]
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 88, in emitEvent
    if self.__upper and not self.__upper.onEvent(yowLayerEvent):
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 212, in onEvent
    stopEvent = stopEvent or s.onEvent(yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 109, in onEvent
    return self.event_callbacks[eventName](yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/auth/layer_authentication.py", line 36, in on_connected
    passive=self.getProp(self.PROP_PASSIVE, False)
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 202, in subBroadcastEvent
    self.broadcastEvent(yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 103, in broadcastEvent
    self.__lower.broadcastEvent(yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 103, in broadcastEvent
    self.__lower.broadcastEvent(yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 103, in broadcastEvent
    self.__lower.broadcastEvent(yowLayerEvent)
    [Previous line repeated 1 more time]
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 98, in broadcastEvent
    if self.__lower and not self.__lower.onEvent(yowLayerEvent):
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 109, in onEvent
    return self.event_callbacks[eventName](yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/noise/layer.py", line 111, in on_auth
    locale_country="US"
    File "/usr/lib/python3.6/site-packages/consonance-0.1.3.post1-py3.6.egg/consonance/config/useragent.py", line 58, in __init__
    app_version = AppVersionConfig(app_version)
    File "/usr/lib/python3.6/site-packages/consonance-0.1.3.post1-py3.6.egg/consonance/config/appversion.py", line 15, in __init__
    self._primary, self._secondary, self._tertiary = map(lambda v:int(v), dissected)
    ValueError: too many values to unpack (expected 3)

    ^C
    Yowsdown

    ResponderExcluir
    Respostas
    1. Quando tu informou a versão do .apk incluiu mais números. Acho que tem mais 2 ou 3 números a mais, basta apagar. = )

      Excluir
    2. Boa man! Já mudou o cenário pra mim, mas quando rodo o comando ele não completa. O que acha que pode ser?

      ./yowsup-cli demos -c /etc/zabbix/zap.conf -s 5511 "Mensagem de teste"
      yowsup-cli v3.2.0
      yowsup v3.2.3


      Copyright (c) 2012-2019 Tarek Galal
      http://www.openwhatsapp.org

      This software is provided free of charge. Copying and redistribution is
      encouraged.

      If you appreciate this software and you would like to support future
      development please consider donating:
      http://openwhatsapp.org/yowsup/donate


      I 2021-01-27 16:19:19,600 yowsup.layers.network.layer - Connecting to e1.whatsapp.net:443
      I 2021-01-27 16:19:19,609 yowsup.axolotl.manager - Loaded 812 unsent prekeys

      Excluir
    3. Agora precisa ler o tutorial certinho... Talvez tenha deixado de fazer algo.

      Excluir
    4. Amigo boa noite.
      Conseguiu resolver?
      Estou no mesmo erro Loaded 812 unsent prekeys

      Excluir
  28. Para mim está dando isso também

    If you appreciate this software and you would like to support future
    development please consider donating:
    http://openwhatsapp.org/yowsup/donate


    I 2021-01-27 17:01:51,857 yowsup.layers.network.layer - Connecting to e8.whatsapp.net:443
    I 2021-01-27 17:01:51,994 yowsup.axolotl.manager - Loaded 812 unsent prekeys
    E 2021-01-27 17:01:51,995 yowsup.layers.network.dispatcher.dispatcher_asyncore - Traceback (most recent call last):
    File "/usr/lib/python3.5/asyncore.py", line 91, in write
    obj.handle_write_event()
    File "/usr/lib/python3.5/asyncore.py", line 441, in handle_write_event
    self.handle_connect_event()
    File "/usr/lib/python3.5/asyncore.py", line 429, in handle_connect_event
    self.handle_connect()
    File "/root/yowsup-master/yowsup/layers/network/dispatcher/dispatcher_asyncore.py", line 34, in handle_connect
    self.connectionCallbacks.onConnected()
    File "/root/yowsup-master/yowsup/layers/network/layer.py", line 54, in onConnected
    self.emitEvent(YowLayerEvent(YowNetworkLayer.EVENT_STATE_CONNECTED))
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 94, in emitEvent
    self.__upper.emitEvent(yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 94, in emitEvent
    self.__upper.emitEvent(yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 94, in emitEvent
    self.__upper.emitEvent(yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 94, in emitEvent
    self.__upper.emitEvent(yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 94, in emitEvent
    self.__upper.emitEvent(yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 94, in emitEvent
    self.__upper.emitEvent(yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 88, in emitEvent
    if self.__upper and not self.__upper.onEvent(yowLayerEvent):
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 212, in onEvent
    stopEvent = stopEvent or s.onEvent(yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 109, in onEvent
    return self.event_callbacks[eventName](yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/auth/layer_authentication.py", line 36, in on_connected
    passive=self.getProp(self.PROP_PASSIVE, False)
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 202, in subBroadcastEvent
    self.broadcastEvent(yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 103, in broadcastEvent
    self.__lower.broadcastEvent(yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 103, in broadcastEvent
    self.__lower.broadcastEvent(yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 103, in broadcastEvent
    self.__lower.broadcastEvent(yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 103, in broadcastEvent
    self.__lower.broadcastEvent(yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 98, in broadcastEvent
    if self.__lower and not self.__lower.onEvent(yowLayerEvent):
    File "/root/yowsup-master/yowsup/layers/__init__.py", line 109, in onEvent
    return self.event_callbacks[eventName](yowLayerEvent)
    File "/root/yowsup-master/yowsup/layers/noise/layer.py", line 111, in on_auth
    locale_country="US"
    File "/usr/local/lib/python3.5/dist-packages/consonance/config/useragent.py", line 58, in __init__
    app_version = AppVersionConfig(app_version)
    File "/usr/local/lib/python3.5/dist-packages/consonance/config/appversion.py", line 15, in __init__
    self._primary, self._secondary, self._tertiary = map(lambda v:int(v), dissected)
    ValueError: too many values to unpack (expected 3)

    ResponderExcluir
    Respostas
    1. Quando tu informou a versão do .apk incluiu mais números. Acho que tem mais 2 ou 3 números a mais, basta apagar. = )

      Excluir
    2. Este comentário foi removido pelo autor.

      Excluir
  29. Não consigo recadastrar, preciso limpar algum cache?
    ...

    D 2021-01-27 18:34:50,177 yowsup.common.http.warequest - sendRequest(host=v.whatsapp.net, port=443, path=/v2/code, headers={'Accept': 'text/json', 'User-Agent': 'WhatsApp/2.22.2 Android/8.0.0 Device/samsung-star2lte'}, params=[('ENC', b'9P0vF/rFSfXL3OuKuBcEmlAaGbBwuEzCND21dKH/rTryNW+83KSprf8g+oDcjbLWKDq2E4yqjM/SXv5/sWA8VF0ULE/r/8YYpdJXdyqZeaEslnCFG1UqD6E929W235tQIgiatTt3c3JW17H0Q7+19KCAcycSW8AwY3IZHKwyRjx2DtKkm1HZY0oyDD71re+F6FJ1lAYukhEhoVwaQgxKZltkrwTU3rUZH4vGRYV8eCplr+bqjN6YzBB7jxFboKWf/VPWxZe0UJsUJ4dh0wDyx6BOHxTcvAYbaB0h+SSlk4GC+um0eusiz5+MqzFMIVjUgxW8hZHoL+xBUEO7mqswRDvgihjCJoW46nXWLYfZgBcP9yeQIsbhCwU0m4xkxKhP5xd0j15ogCBAdvU191+JvgvbRs2THScbbc5XzwAoJvLd/4JLtSy/lywg3rxGKngbjkht/TFnjFRlD96u9StWmKiq95GoUVmiw3FN0tQTw8knHuZUkcKLIxGBrB9TpZwgwXdMJEdjWN9s0JFrKy0pvY5DWVT47OmfIWD51mX0yLqsraQfoo3epjPdcUqLF8oabvK5YZRs7j48t/A0n3pFmMxBQeEXQdivi4PUvHnH3V11cU/ib0DgCCxc7moOFNUUBuJmU6xERaSz+rAcFPVMgYvjr8RQbiu9pMKi9PcLM76pO/C6/BCC8BdTa8d4kF+uythJHklxRA9kfcDdJH8i/dSmMNIlxAXD2QWUL8wepPw9iZZ3xNxXWNpwosWL6JDmrK9BYPT48G0OprxOaGkX2pAV+TpZngRj6Z5fktUFZhUpj/ftw5IL15KTf36aofsDJThgUluzJ34vp6dd+yTNFt3o559QQPJyuNXZmf34Z5I6D7gRg8aYAt9r7CntcTKzBZW/ZvmFC6db95Yy9qtZMyO+')], reqType=GET, preview=False)
    D 2021-01-27 18:34:50,178 yowsup.common.http.warequest - Opening connection to v.whatsapp.net
    D 2021-01-27 18:34:50,179 yowsup.common.http.warequest - Sending GET request to /v2/code?ENC=9P0vF%2frFSfXL3OuKuBcEmlAaGbBwuEzCND21dKH%2frTryNW%2b83KSprf8g%2boDcjbLWKDq2E4yqjM%2fSXv5%2fsWA8VF0ULE%2fr%2f8YYpdJXdyqZeaEslnCFG1UqD6E929W235tQIgiatTt3c3JW17H0Q7%2b19KCAcycSW8AwY3IZHKwyRjx2DtKkm1HZY0oyDD71re%2bF6FJ1lAYukhEhoVwaQgxKZltkrwTU3rUZH4vGRYV8eCplr%2bbqjN6YzBB7jxFboKWf%2fVPWxZe0UJsUJ4dh0wDyx6BOHxTcvAYbaB0h%2bSSlk4GC%2bum0eusiz5%2bMqzFMIVjUgxW8hZHoL%2bxBUEO7mqswRDvgihjCJoW46nXWLYfZgBcP9yeQIsbhCwU0m4xkxKhP5xd0j15ogCBAdvU191%2bJvgvbRs2THScbbc5XzwAoJvLd%2f4JLtSy%2flywg3rxGKngbjkht%2fTFnjFRlD96u9StWmKiq95GoUVmiw3FN0tQTw8knHuZUkcKLIxGBrB9TpZwgwXdMJEdjWN9s0JFrKy0pvY5DWVT47OmfIWD51mX0yLqsraQfoo3epjPdcUqLF8oabvK5YZRs7j48t%2fA0n3pFmMxBQeEXQdivi4PUvHnH3V11cU%2fib0DgCCxc7moOFNUUBuJmU6xERaSz%2brAcFPVMgYvjr8RQbiu9pMKi9PcLM76pO%2fC6%2fBCC8BdTa8d4kF%2buythJHklxRA9kfcDdJH8i%2fdSmMNIlxAXD2QWUL8wepPw9iZZ3xNxXWNpwosWL6JDmrK9BYPT48G0OprxOaGkX2pAV%2bTpZngRj6Z5fktUFZhUpj%2fftw5IL15KTf36aofsDJThgUluzJ34vp6dd%2byTNFt3o559QQPJyuNXZmf34Z5I6D7gRg8aYAt9r7CntcTKzBZW%2fZvmFC6db95Yy9qtZMyO%2b
    I 2021-01-27 18:34:50,530 yowsup.common.http.warequest - b'{"login":"5521982027015","status":"fail","reason":"bad_token"}\n'
    reason: b'bad_token'
    status: b'fail'
    login: b'5521982027015'

    ResponderExcluir
  30. Hello,

    by running this command:
    /yowsup-cli demos -c /etc/zabbix/zap.conf -s 5511xxxxx "Mensagem de teste"

    I get the following error. Any advice?
    I have followed the installation steps on
    https://everaldoscabral.blogspot.com/2020/02/sobre-o-zabbix-integracao-de-alertas.html#more

    Thanks

    [root@xx yowsup-master]# sudo ./yowsup-cli demos -c /etc/zabbix/zap.conf -s 5511xxx "Mensagem de teste"
    Traceback (most recent call last):
    File "./yowsup-cli", line 722, in
    if not parser.process():
    File "./yowsup-cli", line 610, in process
    self.startSendClient()
    File "./yowsup-cli", line 649, in startSendClient
    from yowsup.demos import sendclient
    File "/opt/yowsup/yowsup-master/yowsup/demos/sendclient/__init__.py", line 1, in
    from .stack import YowsupSendStack
    File "/opt/yowsup/yowsup-master/yowsup/demos/sendclient/stack.py", line 1, in
    from yowsup.stacks import YowStackBuilder
    File "/opt/yowsup/yowsup-master/yowsup/stacks/__init__.py", line 1, in
    from .yowstack import YowStack, YowStackBuilder
    File "/opt/yowsup/yowsup-master/yowsup/stacks/yowstack.py", line 4, in
    from yowsup.layers.noise.layer import YowNoiseLayer
    File "/opt/yowsup/yowsup-master/yowsup/layers/noise/layer.py", line 10, in
    from yowsup.layers.coder.encoder import WriteEncoder
    File "/opt/yowsup/yowsup-master/yowsup/layers/coder/__init__.py", line 1, in
    from .layer import YowCoderLayer
    ImportError: cannot import name 'YowCoderLayer'

    ResponderExcluir
  31. Boa tarde. Consegui instalar o meu no ubuntu 20.04 com pytnon3.8, porém quando vou enviar a mensagem de teste. Retorna esse erro abaixo:


    Traceback (most recent call last):
    File "./yowsup-cli", line 722, in
    if not parser.process():
    File "./yowsup-cli", line 610, in process
    self.startSendClient()
    File "./yowsup-cli", line 649, in startSendClient
    from yowsup.demos import sendclient
    File "/home/user/yowsup-master/yowsup/demos/sendclient/__init__.py", line 1, in
    from .stack import YowsupSendStack
    File "/home/user/yowsup-master/yowsup/demos/sendclient/stack.py", line 1, in
    from yowsup.stacks import YowStackBuilder
    File "/home/user/yowsup-master/yowsup/stacks/__init__.py", line 1, in
    from .yowstack import YowStack, YowStackBuilder
    File "/home/user/yowsup-master/yowsup/stacks/yowstack.py", line 4, in
    from yowsup.layers.noise.layer import YowNoiseLayer
    File "/home/user/yowsup-master/yowsup/layers/noise/layer.py", line 10, in
    from yowsup.layers.coder.encoder import WriteEncoder
    File "/home/user/yowsup-master/yowsup/layers/coder/__init__.py", line 1, in
    from .layer import YowCoderLayer
    File "/home/user/yowsup-master/yowsup/layers/coder/layer.py", line 41
    3, 0, protocol_state_callbacks=self._on_protocol_state_changed
    ^
    SyntaxError: invalid syntax


    Se alguém tiver uma idéia. Agradeço!!!

    ResponderExcluir
  32. Boa noite, funciona ainda essa funcionalidade?

    ResponderExcluir
    Respostas
    1. Faz um bom tempo que não uso, teria que testar.

      Excluir
    2. Obrigado pelo retorno, Vou testar no CentOS7, mas tenho o zabbix já instalado no ubuntu, será que funciona?

      Excluir
    3. Independe de SO, claro, precisará instalar os pacotes para o Ubuntu.

      Excluir
  33. Olá! como faz para integrar no Whatsapp iOS (apple)?
    Obrigado.

    ResponderExcluir
  34. Olá, gostei muito do seu tutorial. Estou com alguns problemas. Quando tento com um número sem o 9 na frente eu não recebo o SMS com o código. Quando eu tento com o 9 na frente eu chego na parte de enviar o código, porém obtenho o erro "temporarily_unavailable" e as vezes o "missing". Fiz passo-a-passo conforme você recomendou e realmente não sei mais o que tentar. Saberia se há algo a mais que devo fazer?

    ResponderExcluir
  35. I have different server for Yowsup and zabbix server.So how i can integrate?

    ResponderExcluir
  36. Funcionou, mas teve que fazer alguns ajustes.

    ResponderExcluir
  37. Poderia nos passar o que fez para funcionar? Pq para mim sempre dá o erro de "BAD PARAM, BACKUP_TOKEN Error," quando vai enviar o SMS para confirmar. Obrigado.

    ResponderExcluir
    Respostas
    1. Olá fiz apenas o que está no How to, só isso. Só ler com calma.

      Excluir
  38. Ola Everaldo,
    Conforme o amigo acima, não esta funcionando mesmo. acredito que esta função para novos usuários não, caso contrario, nos mostre como tem feito no dia de hoje.

    ResponderExcluir
  39. Aqui estamos utilizando https://github.com/sansaoipb/Graphical_notifications_Zabbix
    Deu certo!!! Obrigado irmão

    ResponderExcluir
  40. Para quem estiver enfrentando erros na configuração, verifiquem as Issues no github oficial do Yowsup. Consegui implantar a notificação via whatsapp seguindo o tutorial do Everaldo e consultando o github do Yowsup.

    Github Yowsup: https://github.com/tgalal/yowsup
    Issues Yousup: https://github.com/tgalal/yowsup/issues


    Segue abaixo o link de algumas Issues que já tem solução no github.

    ERRO: "backup_token","reason":"bad_param","status":"fail"
    https://github.com/tgalal/yowsup/pull/3127

    ERRO: "couldn't match token 247"
    https://github.com/tgalal/yowsup/issues/3090


    Quanto ao envio de alertas para grupos, só irá funcionar se o grupo foi criado há mais de 2 meses. Pois o Whatsapp alterou o formato do ID dos novos grupos. Antes o formato do ID era 55XXXXXXXXX7-14XXXXXXX0, mas os novos grupos estão vindo com um formato parecido com este 12XXXXXXXXXXXXXXX8.

    Se for configurar o envio de notificações para o grupo de whatsapp, verifique se o ID está no formato antigo.
    Há uma Issue aberta mas ainda não foi resolvida.
    https://githubmemory.com/repo/tgalal/yowsup/issues/3118

    Outra coisa em relação ao envio de notificações para grupos, é que na Mídia de Usuário do Zabbix o campo "Send to" deve estar nesse formato: 5521xxxxxxxxx-xxxxxxxxxx@g.us. Para grupos deve se utilizar @g.us ou invés de @s.whatsapp.net. Mas se estiver enviando para um único número o final deve ser @s.whatsapp.net.

    Qualquer dúvida podem colocar aqui que tento auxiliar.

    Muito obrigado, Everaldo! Tutorial excelente!

    ResponderExcluir
    Respostas
    1. Olá boa noite, muito obrigado pela contribuição. 😀

      Excluir
    2. Boa noite, fiz os ajustes conforme nas issues mas eu continuo a receber "backup_token","reason":"bad_param","status":"fail"
      no meu caso e android

      Excluir
    3. Tente registrar com o parâmetro "ios" ao invés de "android". Não importa se seu telefone é Android ou Iphone.

      cd /etc/yowsup/
      python3.6 yowsup-cli registration -r sms -c /etc/zabbix/zap.conf -E ios -d

      Excluir
  41. Este comentário foi removido pelo autor.

    ResponderExcluir
  42. Boa tarde, parece que o yowsup morreu, não manda mais mensagem... Alguém está com o mesmo problema?
    [offline]:/L
    D 2022-07-26 14:01:38,378 yowsup.layers.network.layer - Created asyncore dispatcher
    I 2022-07-26 14:01:38,379 yowsup.layers.network.layer - Connecting to e15.whatsapp.net:443
    D 2022-07-26 14:01:38,379 yowsup.layers.network.dispatcher.dispatcher_asyncore - connect(('e15.whatsapp.net', 443))
    D 2022-07-26 14:01:38,433 yowsup.layers.network.dispatcher.dispatcher_asyncore - handle_connect
    D 2022-07-26 14:01:38,433 yowsup.layers.network.layer - Connected
    D 2022-07-26 14:01:38,433 yowsup.axolotl.factory - get_manager(profile_name=551191211311, username=5511991211311)
    D 2022-07-26 14:01:38,434 yowsup.axolotl.manager - Initialized AxolotlManager [username=5511991211311, db=/root/.config/yowsup/551191211311/axolotl.db]
    D 2022-07-26 14:01:38,434 yowsup.axolotl.manager - level_prekeys(force=False)
    D 2022-07-26 14:01:38,443 yowsup.axolotl.manager - len(pending_prekeys) = 812
    D 2022-07-26 14:01:38,443 yowsup.axolotl.manager - load_unsent_prekeys
    I 2022-07-26 14:01:38,451 yowsup.axolotl.manager - Loaded 812 unsent prekeys
    D 2022-07-26 14:01:38,451 yowsup.layers.noise.layer - Received auth event
    D 2022-07-26 14:01:38,451 yowsup.env.env - Env not set, setting it to android
    D 2022-07-26 14:01:38,451 yowsup.env.env - Current env changed to android
    D 2022-07-26 14:01:38,451 yowsup.layers.noise.layer - Performing handshake [username= 5511991211311, passive=True]
    D 2022-07-26 14:01:38,451 yowsup.layers.noise.layer - Starting handshake worker
    D 2022-07-26 14:01:38,544 yowsup.layers.network.dispatcher.dispatcher_asyncore - handle_close
    D 2022-07-26 14:01:38,544 yowsup.layers.network.layer - Disconnected
    D 2022-07-26 14:01:38,634 yowsup.layers.axolotl.layer_control - Disconnected, reboot_connect? = False
    general: Disconnected:
    [offline]:
    [offline]:

    ResponderExcluir
  43. Olá, Everaldo!
    Tudo bem!

    Os arquivos no github já estão com as alterações da seguinte parte:
    #Agora é necessário realizar algumas modificações em alguns arquivos para realizar o upgrade do protocolo WA 4.0. Conforme link

    ResponderExcluir
    Respostas
    1. Olá, sim. Já está com tudo alterado. Só precisa mudar a versão e etc, o que menciono no início do How to.

      Excluir