Adicionado Opção para Transcrever o Proprio audio, agora sempre resume e transcreve entregando na mesma mensagem
This commit is contained in:
parent
c189d69ac4
commit
e1114101f6
@ -1,5 +1,10 @@
|
||||
# Chave da API para transcrição (Groq ou qualquer outro serviço que você utilizar)
|
||||
GROQ_API_KEY=your_groq_api_key
|
||||
GROQ_API_KEY=substitua_sua_chave_GROQ_aqui
|
||||
|
||||
# Comportamento da transcrição
|
||||
PROCESS_SELF_MESSAGES=true
|
||||
BUSINESS_MESSAGE="substitua_sua_mensagem_de_servico_aqui"
|
||||
PROCESS_GROUP_MESSAGES=false
|
||||
|
||||
# Host e porta do Redis (caso esteja utilizando)
|
||||
REDIS_HOST=localhost
|
||||
|
@ -64,6 +64,9 @@ class Settings:
|
||||
self.PROCESS_GROUP_MESSAGES = os.getenv('PROCESS_GROUP_MESSAGES', 'false').lower() == 'true'
|
||||
logger.debug(f"PROCESS_GROUP_MESSAGES configurado como: {self.PROCESS_GROUP_MESSAGES}")
|
||||
|
||||
self.PROCESS_SELF_MESSAGES = os.getenv('PROCESS_SELF_MESSAGES', 'false').lower() == 'true'
|
||||
logger.debug(f"PROCESS_SELF_MESSAGES configurado como: {self.PROCESS_SELF_MESSAGES}")
|
||||
|
||||
self.LOG_LEVEL = os.getenv('LOG_LEVEL', 'INFO')
|
||||
logger.debug(f"LOG_LEVEL configurado como: {self.LOG_LEVEL}")
|
||||
|
||||
|
@ -16,6 +16,7 @@ services:
|
||||
GROQ_API_KEY: "substitua_sua_chave_GROQ_aqui" #coloque sua chave GROQ aqui
|
||||
BUSINESS_MESSAGE: "substitua_sua_mensagem_de_servico_aqui" #coloque a mensagem que será enviada ao final da transcrição aqui
|
||||
PROCESS_GROUP_MESSAGES: "false" # Define se mensagens de grupos devem ser processadas
|
||||
PROCESS_SELF_MESSAGES: "true" # Define se sua próprias mensagens devem ser processadas
|
||||
DEBUG_MODE: "false"
|
||||
LOG_LEVEL: "INFO"
|
||||
deploy:
|
||||
|
32
main.py
32
main.py
@ -4,6 +4,7 @@ from services import (
|
||||
transcribe_audio,
|
||||
send_message_to_whatsapp,
|
||||
get_audio_base64,
|
||||
summarize_text_if_needed,
|
||||
)
|
||||
from models import WebhookRequest
|
||||
import aiohttp
|
||||
@ -16,7 +17,7 @@ async def transcreve_audios(request: Request):
|
||||
try:
|
||||
logger.info("Iniciando processamento de áudio")
|
||||
body = await request.json()
|
||||
|
||||
|
||||
if settings.DEBUG_MODE:
|
||||
logger.debug(f"Payload recebido: {body}")
|
||||
|
||||
@ -28,13 +29,13 @@ async def transcreve_audios(request: Request):
|
||||
from_me = body["data"]["key"]["fromMe"]
|
||||
remote_jid = body["data"]["key"]["remoteJid"]
|
||||
message_type = body["data"]["messageType"]
|
||||
|
||||
|
||||
if "audioMessage" not in message_type:
|
||||
logger.info("Mensagem recebida não é um áudio, ignorando")
|
||||
return {"message": "Mensagem recebida não é um áudio"}
|
||||
|
||||
if from_me:
|
||||
logger.info("Mensagem enviada pelo próprio usuário, ignorando")
|
||||
if from_me and not settings.PROCESS_SELF_MESSAGES:
|
||||
logger.info("Mensagem enviada pelo próprio usuário ignorada conforme configuração")
|
||||
return {"message": "Mensagem enviada por mim, sem operação"}
|
||||
|
||||
if "@g.us" in remote_jid and not settings.PROCESS_GROUP_MESSAGES:
|
||||
@ -52,17 +53,20 @@ async def transcreve_audios(request: Request):
|
||||
logger.debug(f"Áudio convertido e salvo em: {audio_source}")
|
||||
|
||||
# Transcrever o áudio
|
||||
transcription_text, is_summary = await transcribe_audio(audio_source)
|
||||
transcription_text, _ = await transcribe_audio(audio_source)
|
||||
summary_text = await summarize_text_if_needed(transcription_text)
|
||||
|
||||
header_message = (
|
||||
"*Resumo do áudio:*\n\n" if is_summary else "*Transcrição desse áudio:*\n\n"
|
||||
# Formatar a mensagem
|
||||
summary_message = (
|
||||
f"*Resumo do áudio:*\n\n"
|
||||
f"{summary_text}\n\n"
|
||||
f"*Transcrição do áudio:*\n\n"
|
||||
f"{transcription_text}\n\n"
|
||||
f"{settings.BUSINESS_MESSAGE}"
|
||||
)
|
||||
|
||||
# Formatar o conteúdo da mensagem
|
||||
summary_message = f"{header_message}{transcription_text}\n\n{settings.BUSINESS_MESSAGE}"
|
||||
logger.debug(f"Mensagem formatada: {summary_message[:100]}...")
|
||||
|
||||
# Enviar o resumo transcrito de volta via WhatsApp
|
||||
# Enviar a mensagem formatada via WhatsApp
|
||||
await send_message_to_whatsapp(
|
||||
server_url,
|
||||
instance,
|
||||
@ -78,6 +82,6 @@ async def transcreve_audios(request: Request):
|
||||
except Exception as e:
|
||||
logger.error(f"Erro ao processar áudio: {str(e)}", exc_info=settings.DEBUG_MODE)
|
||||
raise HTTPException(
|
||||
status_code=500,
|
||||
detail=f"Erro ao processar a requisição: {str(e)}"
|
||||
)
|
||||
status_code=500,
|
||||
detail=f"Erro ao processar a requisição: {str(e)}",
|
||||
)
|
@ -91,6 +91,7 @@ services:
|
||||
GROQ_API_KEY: "substitua_sua_chave_GROQ_aqui" #coloque sua chave GROQ aqui
|
||||
BUSINESS_MESSAGE: "substitua_sua_mensagem_de_servico_aqui" #coloque a mensagem que será enviada ao final da transcrição aqui
|
||||
PROCESS_GROUP_MESSAGES: "false" # Define se mensagens de grupos devem ser processadas
|
||||
PROCESS_SELF_MESSAGES: "true" # Define se sua próprias mensagens devem ser processadas
|
||||
DEBUG_MODE: "false"
|
||||
LOG_LEVEL: "INFO"
|
||||
```
|
||||
@ -115,6 +116,7 @@ services:
|
||||
GROQ_API_KEY: "substitua_sua_chave_GROQ_aqui" #coloque sua chave GROQ aqui
|
||||
BUSINESS_MESSAGE: "substitua_sua_mensagem_de_servico_aqui" #coloque a mensagem que será enviada ao final da transcrição aqui
|
||||
PROCESS_GROUP_MESSAGES: "false" # Define se mensagens de grupos devem ser processadas
|
||||
PROCESS_SELF_MESSAGES: "true" # Define se sua próprias mensagens devem ser processadas
|
||||
DEBUG_MODE: "false"
|
||||
LOG_LEVEL: "INFO"
|
||||
deploy:
|
||||
|
@ -34,7 +34,7 @@ async def summarize_text_if_needed(text):
|
||||
"messages": [{
|
||||
"role": "user",
|
||||
"content": f"""
|
||||
Entenda o contexto desse áudio e faça um resumo super enxuto sobre o que se trata.
|
||||
Entenda o contexto desse áudio e faça um resumo super enxuto sobre o que se trata, coloque os pontos relevantes e mais importantes no resumo de forma muito curta.
|
||||
Esse áudio foi enviado pelo whatsapp, de alguém, para Gabriel.
|
||||
Escreva APENAS o resumo do áudio como se fosse você que estivesse enviando
|
||||
essa mensagem! Não comprimente, não de oi, não escreva nada antes nem depois
|
||||
@ -197,4 +197,4 @@ async def get_audio_base64(server_url, instance, apikey, message_id):
|
||||
raise HTTPException(status_code=500, detail="Falha ao obter áudio em base64")
|
||||
except Exception as e:
|
||||
logger.error(f"Erro na obtenção do áudio base64: {str(e)}", exc_info=settings.DEBUG_MODE)
|
||||
raise
|
||||
raise
|
Loading…
Reference in New Issue
Block a user