File size: 5,010 Bytes
c6878c7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# import gradio as gr
# import requests

# theme=gr.themes.Default(primary_hue="cyan", secondary_hue="violet")

# with gr.Blocks(theme=theme) as demo:
#     chatbot = gr.Chatbot()
#     msg = gr.Textbox(placeholder="Say Hi! to wake me up", show_label=False)
#     clear = gr.ClearButton([msg, chatbot])

#     def interact_with_rasa(user_input, chat_history):
#         rasa_url = "https://clairify.ai/webhooks/rest/webhook"
#         payload = {"sender": "user", "message": user_input}
#         response = requests.post(rasa_url, json=payload)
        
#         if response.status_code == 200:
#             rasa_response = response.json()
#             if rasa_response and len(rasa_response) > 0:
#                 bot_responses = [msg.get("text", "") for msg in rasa_response]
#                 chat_history.append((user_input, bot_responses[0]))
#                 for response in bot_responses[1:]:
#                     chat_history.append((None, response))
#             else:
#                 bot_responses = ["Error: Empty response from Rasa server."]
#         else:
#             bot_responses = ["Error: Unable to connect to Rasa server."]            
        
#         return "", chat_history

#     msg.submit(interact_with_rasa, [msg, chatbot], [msg, chatbot])

# if __name__ == "__main__":
#     demo.launch()

# import gradio as gr
# import asyncio
# from rasa_socketio_client import RasaSocketIOClient
# import logging
# from custom_logging import IMPORTANT_LEVEL_NUM

# # Enable logging for the whole app
# logging.basicConfig(level=IMPORTANT_LEVEL_NUM)
# logger = logging.getLogger(__name__)

# rasa_io_url = "https://clairify.ai/socket.io"
# rasa_client = RasaSocketIOClient(rasa_io_url)

# theme = gr.themes.Default(primary_hue="cyan", secondary_hue="violet")

# async def interact_with_rasa(user_input, chat_history):
#     if not rasa_client.sio.connected:
#         await rasa_client.connect()
#     payload = {"message": user_input}
#     rasa_response = await rasa_client.send_message(payload)


#     # if rasa_response:
#     #     bot_utterances = []
#     #     for key, value in rasa_response.items():
#     #         bot_utterance = value.get("text", "")  # Accessing the "text" key of each value
#     #         bot_utterances.append(bot_utterance)
    
#     #     if bot_utterances:
#     #         chat_history.append((user_input, bot_utterances[0]))
#     #         for utterance in bot_utterances[1:]:
#     #             chat_history.append((None, utterance))
#     # else:
#     #     chat_history.append((user_input, "Error: Empty response from Rasa server."))
#     chat_history.append((user_input, rasa_response["text"]))
#     return "", chat_history

# with gr.Blocks(theme=theme) as demo:
#     chatbot = gr.Chatbot()
#     msg = gr.Textbox(placeholder="Say Hi! to wake me up", show_label=False)
#     clear = gr.ClearButton([msg, chatbot])

#     msg.submit(interact_with_rasa, inputs=[msg, chatbot], outputs=[msg, chatbot])

# if __name__ == "__main__":
#     asyncio.run(demo.launch())

import gradio as gr
import asyncio
from rasa_socketio_client import RasaSocketIOClient
from custom_logging import get_logger

logger = get_logger(__name__)
rasa_io_url = "https://clairify.ai/socket.io"
theme = gr.themes.Default(primary_hue="cyan", secondary_hue="violet")

with gr.Blocks(theme=theme) as demo:

    rasa_client = RasaSocketIOClient(rasa_io_url)
    
    async def interact_with_rasa(user_input, chat_history):
        logger.important(f"User input received: {user_input}")
        if not rasa_client.sio.connected:
            logger.important("Rasa client not connected, attempting to connect...")
            await rasa_client.connect()
        logger.important(f"Sending payload to Rasa: {user_input}")
        message_count = 0
        async for message in rasa_client.send_message(user_input):
            logger.important(f"Processing messages: {message}")
            if message_count == 0:
                message_count+=1
                new_entry = (user_input, message.get('text', ''))
            else:
                new_entry = (None, message.get('text', ''))
            chat_history.append(new_entry)
            
            yield "", chat_history

    async def handle_clear_button():
        await rasa_client.disconnect()
        return "", None
    
    async def handle_submit_button():
        await rasa_client.disconnect()
        return "", None
    
    chatbot = gr.Chatbot(label="Conversation")
    msg = gr.Textbox(placeholder="Say Hi! to wake me up", show_label=False)
    clear = gr.Button("Clear")
    # submit_button = gr.Button("Submit")
    # submit_button=gr.Button(interact_with_rasa, inputs=[msg, chatbot], outputs=[msg, chatbot],value="Submit")
    
    clear.click(handle_clear_button, inputs=[], outputs=[msg, chatbot])
    msg.submit(interact_with_rasa, inputs=[msg, chatbot], outputs=[msg, chatbot])

if __name__ == "__main__":
    logger.important("Launching Gradio demo...")
    asyncio.run(demo.launch())