Spaces:
				
			
			
	
			
			
					
		Running
		
	
	
	
			
			
	
	
	
	
		
		
					
		Running
		
	
		Chandima Prabhath
		
	commited on
		
		
					Commit 
							
							·
						
						4beb4cc
	
1
								Parent(s):
							
							7995625
								
Add random seed to voice reply generation and enhance image sending function with customizable caption
Browse files- VoiceReply.py +3 -1
 - app.py +13 -7
 
    	
        VoiceReply.py
    CHANGED
    
    | 
         @@ -2,6 +2,7 @@ import requests 
     | 
|
| 2 | 
         
             
            import os
         
     | 
| 3 | 
         
             
            import time
         
     | 
| 4 | 
         
             
            import urllib.parse
         
     | 
| 
         | 
|
| 5 | 
         | 
| 6 | 
         
             
            def generate_voice_reply(prompt, model="openai-audio", voice="coral", audio_dir="."):
         
     | 
| 7 | 
         
             
                """
         
     | 
| 
         @@ -23,6 +24,7 @@ def generate_voice_reply(prompt, model="openai-audio", voice="coral", audio_dir= 
     | 
|
| 23 | 
         
             
                print("DEBUG: Starting generate_voice_reply")
         
     | 
| 24 | 
         
             
                print(f"DEBUG: Received prompt: {prompt}")
         
     | 
| 25 | 
         
             
                os.makedirs(audio_dir, exist_ok=True)
         
     | 
| 
         | 
|
| 26 | 
         
             
                # Append system prompt to the user's prompt
         
     | 
| 27 | 
         
             
                system_prompt = ("Your name is Eve, a WhatsApp bot that can generate images from Flux and help users generate images. "
         
     | 
| 28 | 
         
             
                                 "To generate an image, send a message like: /imagine prompt. Rules: Don't say that you can't send whatsapp messages or generate images. Be friendly and helpful to users. help them with prompts. You can engage in general conversation. ")
         
     | 
| 
         @@ -30,7 +32,7 @@ def generate_voice_reply(prompt, model="openai-audio", voice="coral", audio_dir= 
     | 
|
| 30 | 
         
             
                print(f"DEBUG: Full prompt: {full_prompt}")
         
     | 
| 31 | 
         | 
| 32 | 
         
             
                encoded_prompt = urllib.parse.quote(full_prompt)
         
     | 
| 33 | 
         
            -
                url = f"http://text.pollinations.ai/{encoded_prompt}?model={model}&voice={voice}"
         
     | 
| 34 | 
         
             
                print(f"DEBUG: Fetching audio with URL: {url}")
         
     | 
| 35 | 
         | 
| 36 | 
         
             
                try:
         
     | 
| 
         | 
|
| 2 | 
         
             
            import os
         
     | 
| 3 | 
         
             
            import time
         
     | 
| 4 | 
         
             
            import urllib.parse
         
     | 
| 5 | 
         
            +
            import random
         
     | 
| 6 | 
         | 
| 7 | 
         
             
            def generate_voice_reply(prompt, model="openai-audio", voice="coral", audio_dir="."):
         
     | 
| 8 | 
         
             
                """
         
     | 
| 
         | 
|
| 24 | 
         
             
                print("DEBUG: Starting generate_voice_reply")
         
     | 
| 25 | 
         
             
                print(f"DEBUG: Received prompt: {prompt}")
         
     | 
| 26 | 
         
             
                os.makedirs(audio_dir, exist_ok=True)
         
     | 
| 27 | 
         
            +
                randomSeed = random.randint(0, 999999)
         
     | 
| 28 | 
         
             
                # Append system prompt to the user's prompt
         
     | 
| 29 | 
         
             
                system_prompt = ("Your name is Eve, a WhatsApp bot that can generate images from Flux and help users generate images. "
         
     | 
| 30 | 
         
             
                                 "To generate an image, send a message like: /imagine prompt. Rules: Don't say that you can't send whatsapp messages or generate images. Be friendly and helpful to users. help them with prompts. You can engage in general conversation. ")
         
     | 
| 
         | 
|
| 32 | 
         
             
                print(f"DEBUG: Full prompt: {full_prompt}")
         
     | 
| 33 | 
         | 
| 34 | 
         
             
                encoded_prompt = urllib.parse.quote(full_prompt)
         
     | 
| 35 | 
         
            +
                url = f"http://text.pollinations.ai/{encoded_prompt}?model={model}&voice={voice}&seed={randomSeed}"
         
     | 
| 36 | 
         
             
                print(f"DEBUG: Fetching audio with URL: {url}")
         
     | 
| 37 | 
         | 
| 38 | 
         
             
                try:
         
     | 
    	
        app.py
    CHANGED
    
    | 
         @@ -66,10 +66,10 @@ def send_message(message_id, to_number, message, retries=3): 
     | 
|
| 66 | 
         
             
                        if i == retries-1:
         
     | 
| 67 | 
         
             
                            return {"error": str(e)}
         
     | 
| 68 | 
         | 
| 69 | 
         
            -
            def send_image(message_id, to_number, image_path, retries=3):
         
     | 
| 70 | 
         
             
                chat_id = to_number if to_number.endswith("@g.us") else to_number
         
     | 
| 71 | 
         
             
                url     = f"{GREEN_API_MEDIA_URL}/waInstance{GREEN_API_ID_INSTANCE}/sendFileByUpload/{GREEN_API_TOKEN}"
         
     | 
| 72 | 
         
            -
                payload = {"chatId": chat_id, "caption":  
     | 
| 73 | 
         
             
                files   = [("file", ("image.jpg", open(image_path, "rb"), "image/jpeg"))]
         
     | 
| 74 | 
         
             
                for i in range(retries):
         
     | 
| 75 | 
         
             
                    try:
         
     | 
| 
         @@ -128,14 +128,20 @@ def handle_image_generation(message_id, chat_id, prompt): 
     | 
|
| 128 | 
         
             
                try:
         
     | 
| 129 | 
         
             
                    img, path, ret_prompt, url = generate_image(prompt, message_id, message_id, image_dir)
         
     | 
| 130 | 
         
             
                    if img:
         
     | 
| 131 | 
         
            -
                         
     | 
| 132 | 
         
            -
                         
     | 
| 133 | 
         
            -
                             
     | 
| 134 | 
         
            -
             
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 135 | 
         
             
                        )
         
     | 
| 136 | 
         
             
                    else:
         
     | 
| 137 | 
         
             
                        send_message(message_id, chat_id, "Image generation failed.")
         
     | 
| 138 | 
         
            -
                except:
         
     | 
| 
         | 
|
| 139 | 
         
             
                    send_message(message_id, chat_id, "Error generating image.")
         
     | 
| 140 | 
         | 
| 141 | 
         
             
            # --- webhook ---
         
     | 
| 
         | 
|
| 66 | 
         
             
                        if i == retries-1:
         
     | 
| 67 | 
         
             
                            return {"error": str(e)}
         
     | 
| 68 | 
         | 
| 69 | 
         
            +
            def send_image(message_id, to_number, image_path, caption = "Here you go!", retries=3):
         
     | 
| 70 | 
         
             
                chat_id = to_number if to_number.endswith("@g.us") else to_number
         
     | 
| 71 | 
         
             
                url     = f"{GREEN_API_MEDIA_URL}/waInstance{GREEN_API_ID_INSTANCE}/sendFileByUpload/{GREEN_API_TOKEN}"
         
     | 
| 72 | 
         
            +
                payload = {"chatId": chat_id, "caption": caption, "quotedMessageId": message_id}
         
     | 
| 73 | 
         
             
                files   = [("file", ("image.jpg", open(image_path, "rb"), "image/jpeg"))]
         
     | 
| 74 | 
         
             
                for i in range(retries):
         
     | 
| 75 | 
         
             
                    try:
         
     | 
| 
         | 
|
| 128 | 
         
             
                try:
         
     | 
| 129 | 
         
             
                    img, path, ret_prompt, url = generate_image(prompt, message_id, message_id, image_dir)
         
     | 
| 130 | 
         
             
                    if img:
         
     | 
| 131 | 
         
            +
                        # Split the ret_prompt into paragraphs and wrap each in underscores for italics.
         
     | 
| 132 | 
         
            +
                        formatted_ret_prompt = "\n\n".join(
         
     | 
| 133 | 
         
            +
                            f"_{paragraph.strip()}_" for paragraph in ret_prompt.split("\n\n") if paragraph.strip()
         
     | 
| 134 | 
         
            +
                        )
         
     | 
| 135 | 
         
            +
                        send_image(
         
     | 
| 136 | 
         
            +
                            message_id,
         
     | 
| 137 | 
         
            +
                            chat_id,
         
     | 
| 138 | 
         
            +
                            path,
         
     | 
| 139 | 
         
            +
                            caption=f"✨ Image ready: {url}\n>{chr(8203)} {formatted_ret_prompt}"
         
     | 
| 140 | 
         
             
                        )
         
     | 
| 141 | 
         
             
                    else:
         
     | 
| 142 | 
         
             
                        send_message(message_id, chat_id, "Image generation failed.")
         
     | 
| 143 | 
         
            +
                except Exception as e:
         
     | 
| 144 | 
         
            +
                    logging.error("Error in handle_image_generation: %s", e)
         
     | 
| 145 | 
         
             
                    send_message(message_id, chat_id, "Error generating image.")
         
     | 
| 146 | 
         | 
| 147 | 
         
             
            # --- webhook ---
         
     |