-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathtest_evolution.py
156 lines (134 loc) · 4.96 KB
/
test_evolution.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
from evolutionapi.client import EvolutionClient
from evolutionapi.models.instance import InstanceConfig
from evolutionapi.models.message import TextMessage, MediaMessage, MediaType
from evolutionapi.models.websocket import WebSocketConfig
import time
import logging
# Configuração do logging
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
print("Iniciando cliente")
client = EvolutionClient(
base_url='http://localhost:8081',
api_token='429683C4C977415CAAFCCE10F7D57E11'
)
instance_token = "82D55E57CBBC-48A5-98FB-E99655AE7148"
instance_id = "teste"
# Configurando eventos do WebSocket
websocket_config = WebSocketConfig(
enabled=True,
events=[
"APPLICATION_STARTUP",
"QRCODE_UPDATED",
"MESSAGES_SET",
"MESSAGES_UPSERT",
"MESSAGES_UPDATE",
"MESSAGES_DELETE",
"SEND_MESSAGE",
"CONTACTS_SET",
"CONTACTS_UPSERT",
"CONTACTS_UPDATE",
"PRESENCE_UPDATE",
"CHATS_SET",
"CHATS_UPSERT",
"CHATS_UPDATE",
"CHATS_DELETE",
"GROUPS_UPSERT",
"GROUP_UPDATE",
"GROUP_PARTICIPANTS_UPDATE",
"CONNECTION_UPDATE",
"LABELS_EDIT",
"LABELS_ASSOCIATION",
"CALL",
"TYPEBOT_START",
"TYPEBOT_CHANGE_STATUS"
]
)
# Configurando WebSocket para a instância
logger.info("Configurando WebSocket...")
response = client.websocket.set_websocket(instance_id, websocket_config, instance_token)
logger.info(f"Configuração WebSocket: {response}")
# Obtendo configuração atual do WebSocket
websocket_info = client.websocket.find_websocket(instance_id, instance_token)
logger.info(f"WebSocket habilitado: {websocket_info.enabled}")
logger.info(f"Eventos configurados: {websocket_info.events}")
# Criando gerenciador WebSocket usando o cliente
logger.info("Criando gerenciador WebSocket...")
websocket_manager = client.create_websocket(
instance_id=instance_id,
api_token=instance_token,
max_retries=5,
retry_delay=1.0
)
def on_message(data):
"""Handler para evento de mensagens"""
try:
if 'data' in data:
message_data = data['data']
logger.info("=== Mensagem Recebida ===")
logger.info(f"De: {message_data['key']['remoteJid']}")
logger.info(f"Tipo: {message_data['messageType']}")
# Extrai o conteúdo baseado no tipo da mensagem
if 'message' in message_data:
if 'conversation' in message_data['message']:
logger.info(f"Conteúdo: {message_data['message']['conversation']}")
elif 'extendedTextMessage' in message_data['message']:
logger.info(f"Conteúdo: {message_data['message']['extendedTextMessage']['text']}")
elif 'imageMessage' in message_data['message']:
logger.info(f"Conteúdo: [Imagem] {message_data['message']['imageMessage'].get('caption', '')}")
else:
logger.info(f"Conteúdo: {message_data['message']}")
logger.info("=======================")
except Exception as e:
logger.error(f"Erro ao processar mensagem: {e}", exc_info=True)
def on_qrcode(data):
"""Handler para evento de QR Code"""
logger.info("=== QR Code Atualizado ===")
logger.info(f"QR Code: {data}")
logger.info("=======================")
def on_connection(data):
"""Handler para evento de conexão"""
logger.info("=== Status de Conexão ===")
logger.info(f"Status: {data}")
logger.info("=======================")
logger.info("Registrando handlers de eventos...")
# Registrando handlers de eventos
websocket_manager.on('messages.upsert', on_message)
websocket_manager.on('qrcode.updated', on_qrcode)
websocket_manager.on('connection.update', on_connection)
try:
logger.info("Iniciando conexão WebSocket...")
# Conectando ao WebSocket
websocket_manager.connect()
# Mantendo o programa rodando para receber eventos
logger.info("Aguardando eventos...")
while True:
time.sleep(1)
except KeyboardInterrupt:
logger.info("Encerrando conexão WebSocket...")
finally:
websocket_manager.disconnect()
# Exemplos de outras operações (comentados)
# response = client.group.fetch_all_groups(instance_id, instance_token, False)
# print(response)
# text_message = TextMessage(
# number="557499879409",
# text="Olá, como vai?",
# delay=1200
# )
# response = client.messages.send_text(instance_id, text_message, instance_token)
# print("Mensagem de texto enviada")
# print(response)
# media_message = MediaMessage(
# number="557499879409",
# mediatype="document",
# mimetype="application/pdf",
# caption="Olá, como vai?",
# fileName="arquivo.pdf"
# )
# response = client.messages.send_media(instance_id, media_message, instance_token, "arquivo.pdf")
# print("Mensagem de mídia enviada")
# print(response)