59 lines
2.4 KiB
Python
59 lines
2.4 KiB
Python
from datetime import datetime
|
|
import gerentes_erp as gerp
|
|
import pandas as pd
|
|
import login as GI
|
|
dimensao = pd.read_csv('Dimensao.csv')
|
|
# Dicionário para armazenar o estado dos usuários
|
|
user_states = {}
|
|
|
|
def extract_message_data(data):
|
|
"""
|
|
Função que extrai o número, nome e mensagem do JSON recebido.
|
|
"""
|
|
try:
|
|
# Extrair número, nome e mensagem
|
|
number = data['data']['key']['remoteJid'].split('@')[0] # Extrai o número antes de @
|
|
name = data['data']['pushName'] # Extrai o nome do remetente
|
|
message = data['data']['message']['conversation'] # Extrai a mensagem enviada
|
|
|
|
# Verificar o estado do usuário
|
|
if message.lower() == "iniciar":
|
|
# Configurar o estado do usuário como "aguardando nome"
|
|
user_states[number] = "aguardando_nome"
|
|
resposta = f"Olá, {name}! Você iniciou o Consultme. Por favor, digite o seu cpf para obter o menu."
|
|
print("Bot aguardando nome da consultora.")
|
|
|
|
elif number in user_states and user_states[number] == "aguardando_nome":
|
|
# Usuário enviou o nome da consultora, processar a consulta
|
|
cpf = message.strip()
|
|
cpf = int(cpf)
|
|
hoje = datetime.today()
|
|
primeiro_dia_mes = hoje.replace(day=1)
|
|
hoje_formatado = hoje.strftime('%Y-%m-%d')
|
|
primeiro_dia_formatado = primeiro_dia_mes.strftime('%Y-%m-%d')
|
|
gerp.log_pdv(cpf)
|
|
|
|
if cpf in dimensao['cpf_gr'].values or cpf in dimensao['cpf_sup'].values:
|
|
# Executa a consulta no sistema ERP
|
|
dados = GI.main()
|
|
mensagem = gerp.exec(cpf, primeiro_dia_formatado, hoje_formatado)
|
|
resposta = f"Olá, {name} " + mensagem
|
|
else:
|
|
mensagem = "Seu cpf não está cadastrado."
|
|
resposta = mensagem
|
|
|
|
# Limpar o estado do usuário após responder
|
|
del user_states[number]
|
|
print(f"Consulta realizada com sucesso para {cpf}.")
|
|
|
|
else:
|
|
# Caso o usuário envie outra mensagem sem iniciar
|
|
resposta = "Por favor, digite 'iniciar' para começar o Consultme."
|
|
print("Bot pediu ao usuário para iniciar.")
|
|
|
|
# Retorna as informações extraídas
|
|
return number, name, message, resposta
|
|
|
|
except KeyError as e:
|
|
raise ValueError(f"Erro ao extrair dados: {e}")
|