Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -649,6 +649,8 @@ with gr.Blocks(css=custom_css, title="ChargeNode Kundtjänst") as app:
|
|
| 649 |
gr.Markdown("Tack för att du kontaktar support@chargenode.eu. Vi återkommer inom kort", elem_classes="success-message")
|
| 650 |
back_to_chat_btn = gr.Button("Tillbaka till chatten")
|
| 651 |
|
|
|
|
|
|
|
| 652 |
def respond(message, chat_history, request: gr.Request):
|
| 653 |
global last_log
|
| 654 |
start = time.time()
|
|
@@ -723,7 +725,7 @@ def respond(message, chat_history, request: gr.Request):
|
|
| 723 |
# Vi förlitar oss istället på JavaScript-koden som redan laddats via app.load()
|
| 724 |
|
| 725 |
return "", chat_history
|
| 726 |
-
|
| 727 |
def format_chat_preview(chat_history):
|
| 728 |
if not chat_history:
|
| 729 |
return "Ingen chatthistorik att visa."
|
|
@@ -747,99 +749,101 @@ def show_support_form(chat_history):
|
|
| 747 |
success_interface: gr.Group(visible=False),
|
| 748 |
chat_preview: preview
|
| 749 |
}
|
| 750 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 751 |
return {
|
| 752 |
-
chat_interface: gr.Group(visible=
|
| 753 |
-
support_interface: gr.Group(visible=
|
| 754 |
-
success_interface: gr.Group(visible=False)
|
|
|
|
| 755 |
}
|
| 756 |
|
| 757 |
-
|
| 758 |
-
|
| 759 |
-
print(
|
| 760 |
-
|
| 761 |
-
# Validera input med tydligare loggning
|
| 762 |
-
validation_errors = []
|
| 763 |
-
|
| 764 |
-
if områdeskod and not områdeskod.isdigit():
|
| 765 |
-
print(f"Validerar områdeskod: '{områdeskod}' (felaktig)")
|
| 766 |
-
validation_errors.append("Områdeskod måste vara numerisk.")
|
| 767 |
-
else:
|
| 768 |
-
print(f"Validerar områdeskod: '{områdeskod}' (ok)")
|
| 769 |
|
| 770 |
-
|
| 771 |
-
|
| 772 |
-
|
| 773 |
-
|
| 774 |
-
|
|
|
|
| 775 |
|
| 776 |
-
|
| 777 |
-
|
| 778 |
-
validation_errors.append("En giltig e-postadress krävs.")
|
| 779 |
-
elif '@' not in email or '.' not in email.split('@')[1]:
|
| 780 |
-
print(f"Validerar email: '{email}' (felaktigt format)")
|
| 781 |
-
validation_errors.append("En giltig e-postadress krävs.")
|
| 782 |
-
else:
|
| 783 |
-
print(f"Validerar email: '{email}' (ok)")
|
| 784 |
|
| 785 |
-
|
| 786 |
-
|
| 787 |
-
print(f"Valideringsfel: {validation_errors}")
|
| 788 |
return {
|
| 789 |
chat_interface: gr.Group(visible=False),
|
| 790 |
-
support_interface: gr.Group(visible=
|
| 791 |
-
success_interface: gr.Group(visible=
|
| 792 |
-
chat_preview: "\n".join(["**Fel:**"] + validation_errors)
|
| 793 |
}
|
| 794 |
-
|
| 795 |
-
|
| 796 |
-
try:
|
| 797 |
-
print("Försöker skicka supportförfrågan till Slack...")
|
| 798 |
-
|
| 799 |
-
# Skapa en förenklad chathistorik för loggning
|
| 800 |
-
chat_summary = []
|
| 801 |
-
for msg in chat_history:
|
| 802 |
-
if 'role' in msg and 'content' in msg:
|
| 803 |
-
chat_summary.append(f"{msg['role']}: {msg['content'][:30]}...")
|
| 804 |
-
print(f"Chatthistorik att skicka: {chat_summary}")
|
| 805 |
-
|
| 806 |
-
# Skicka till Slack
|
| 807 |
-
success = send_support_to_slack(områdeskod, uttagsnummer, email, chat_history)
|
| 808 |
-
|
| 809 |
-
if success:
|
| 810 |
-
print("Support-förfrågan skickad till Slack framgångsrikt")
|
| 811 |
-
return {
|
| 812 |
-
chat_interface: gr.Group(visible=False),
|
| 813 |
-
support_interface: gr.Group(visible=False),
|
| 814 |
-
success_interface: gr.Group(visible=True)
|
| 815 |
-
}
|
| 816 |
-
else:
|
| 817 |
-
print("Support-förfrågan till Slack misslyckades")
|
| 818 |
-
return {
|
| 819 |
-
chat_interface: gr.Group(visible=False),
|
| 820 |
-
support_interface: gr.Group(visible=True),
|
| 821 |
-
success_interface: gr.Group(visible=False),
|
| 822 |
-
chat_preview: "**Ett fel uppstod när meddelandet skulle skickas. Vänligen försök igen senare.**"
|
| 823 |
-
}
|
| 824 |
-
except Exception as e:
|
| 825 |
-
print(f"Oväntat fel vid hantering av support-formulär: {e}")
|
| 826 |
return {
|
| 827 |
chat_interface: gr.Group(visible=False),
|
| 828 |
support_interface: gr.Group(visible=True),
|
| 829 |
success_interface: gr.Group(visible=False),
|
| 830 |
-
chat_preview:
|
| 831 |
}
|
| 832 |
-
|
| 833 |
-
|
| 834 |
-
|
| 835 |
-
|
| 836 |
-
|
| 837 |
-
|
| 838 |
-
|
| 839 |
-
|
| 840 |
-
|
| 841 |
-
|
| 842 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 843 |
|
| 844 |
if __name__ == "__main__":
|
| 845 |
app.launch(share=True)
|
|
|
|
| 649 |
gr.Markdown("Tack för att du kontaktar support@chargenode.eu. Vi återkommer inom kort", elem_classes="success-message")
|
| 650 |
back_to_chat_btn = gr.Button("Tillbaka till chatten")
|
| 651 |
|
| 652 |
+
# Detta bör vara slutet av app.py-filen från funktionen "respond" och nedåt
|
| 653 |
+
|
| 654 |
def respond(message, chat_history, request: gr.Request):
|
| 655 |
global last_log
|
| 656 |
start = time.time()
|
|
|
|
| 725 |
# Vi förlitar oss istället på JavaScript-koden som redan laddats via app.load()
|
| 726 |
|
| 727 |
return "", chat_history
|
| 728 |
+
|
| 729 |
def format_chat_preview(chat_history):
|
| 730 |
if not chat_history:
|
| 731 |
return "Ingen chatthistorik att visa."
|
|
|
|
| 749 |
success_interface: gr.Group(visible=False),
|
| 750 |
chat_preview: preview
|
| 751 |
}
|
| 752 |
+
|
| 753 |
+
def back_to_chat():
|
| 754 |
+
return {
|
| 755 |
+
chat_interface: gr.Group(visible=True),
|
| 756 |
+
support_interface: gr.Group(visible=False),
|
| 757 |
+
success_interface: gr.Group(visible=False)
|
| 758 |
+
}
|
| 759 |
+
|
| 760 |
+
def submit_support_form(områdeskod, uttagsnummer, email, chat_history):
|
| 761 |
+
"""Hanterar formulärinskickningen med bättre felhantering."""
|
| 762 |
+
print(f"Support-förfrågan: områdeskod={områdeskod}, uttagsnummer={uttagsnummer}, email={email}")
|
| 763 |
+
|
| 764 |
+
# Validera input med tydligare loggning
|
| 765 |
+
validation_errors = []
|
| 766 |
+
|
| 767 |
+
if områdeskod and not områdeskod.isdigit():
|
| 768 |
+
print(f"Validerar områdeskod: '{områdeskod}' (felaktig)")
|
| 769 |
+
validation_errors.append("Områdeskod måste vara numerisk.")
|
| 770 |
+
else:
|
| 771 |
+
print(f"Validerar områdeskod: '{områdeskod}' (ok)")
|
| 772 |
+
|
| 773 |
+
if uttagsnummer and not uttagsnummer.isdigit():
|
| 774 |
+
print(f"Validerar uttagsnummer: '{uttagsnummer}' (felaktig)")
|
| 775 |
+
validation_errors.append("Uttagsnummer måste vara numerisk.")
|
| 776 |
+
else:
|
| 777 |
+
print(f"Validerar uttagsnummer: '{uttagsnummer}' (ok)")
|
| 778 |
+
|
| 779 |
+
if not email:
|
| 780 |
+
print("Validerar email: (saknas)")
|
| 781 |
+
validation_errors.append("En giltig e-postadress krävs.")
|
| 782 |
+
elif '@' not in email or '.' not in email.split('@')[1]:
|
| 783 |
+
print(f"Validerar email: '{email}' (felaktigt format)")
|
| 784 |
+
validation_errors.append("En giltig e-postadress krävs.")
|
| 785 |
+
else:
|
| 786 |
+
print(f"Validerar email: '{email}' (ok)")
|
| 787 |
+
|
| 788 |
+
# Om det finns valideringsfel
|
| 789 |
+
if validation_errors:
|
| 790 |
+
print(f"Valideringsfel: {validation_errors}")
|
| 791 |
return {
|
| 792 |
+
chat_interface: gr.Group(visible=False),
|
| 793 |
+
support_interface: gr.Group(visible=True),
|
| 794 |
+
success_interface: gr.Group(visible=False),
|
| 795 |
+
chat_preview: "\n".join(["**Fel:**"] + validation_errors)
|
| 796 |
}
|
| 797 |
|
| 798 |
+
# Om formuläret klarade valideringen, försök skicka till Slack
|
| 799 |
+
try:
|
| 800 |
+
print("Försöker skicka supportförfrågan till Slack...")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 801 |
|
| 802 |
+
# Skapa en förenklad chathistorik för loggning
|
| 803 |
+
chat_summary = []
|
| 804 |
+
for msg in chat_history:
|
| 805 |
+
if 'role' in msg and 'content' in msg:
|
| 806 |
+
chat_summary.append(f"{msg['role']}: {msg['content'][:30]}...")
|
| 807 |
+
print(f"Chatthistorik att skicka: {chat_summary}")
|
| 808 |
|
| 809 |
+
# Skicka till Slack
|
| 810 |
+
success = send_support_to_slack(områdeskod, uttagsnummer, email, chat_history)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 811 |
|
| 812 |
+
if success:
|
| 813 |
+
print("Support-förfrågan skickad till Slack framgångsrikt")
|
|
|
|
| 814 |
return {
|
| 815 |
chat_interface: gr.Group(visible=False),
|
| 816 |
+
support_interface: gr.Group(visible=False),
|
| 817 |
+
success_interface: gr.Group(visible=True)
|
|
|
|
| 818 |
}
|
| 819 |
+
else:
|
| 820 |
+
print("Support-förfrågan till Slack misslyckades")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 821 |
return {
|
| 822 |
chat_interface: gr.Group(visible=False),
|
| 823 |
support_interface: gr.Group(visible=True),
|
| 824 |
success_interface: gr.Group(visible=False),
|
| 825 |
+
chat_preview: "**Ett fel uppstod när meddelandet skulle skickas. Vänligen försök igen senare.**"
|
| 826 |
}
|
| 827 |
+
except Exception as e:
|
| 828 |
+
print(f"Oväntat fel vid hantering av support-formulär: {e}")
|
| 829 |
+
return {
|
| 830 |
+
chat_interface: gr.Group(visible=False),
|
| 831 |
+
support_interface: gr.Group(visible=True),
|
| 832 |
+
success_interface: gr.Group(visible=False),
|
| 833 |
+
chat_preview: f"**Ett fel uppstod: {str(e)}**"
|
| 834 |
+
}
|
| 835 |
+
|
| 836 |
+
# Eventkopplingar
|
| 837 |
+
msg.submit(respond, [msg, chatbot], [msg, chatbot])
|
| 838 |
+
clear.click(lambda: None, None, chatbot, queue=False)
|
| 839 |
+
support_btn.click(show_support_form, chatbot, [chat_interface, support_interface, success_interface, chat_preview])
|
| 840 |
+
back_btn.click(back_to_chat, None, [chat_interface, support_interface, success_interface])
|
| 841 |
+
back_to_chat_btn.click(back_to_chat, None, [chat_interface, support_interface, success_interface])
|
| 842 |
+
send_support_btn.click(
|
| 843 |
+
submit_support_form,
|
| 844 |
+
[områdeskod, uttagsnummer, email, chatbot],
|
| 845 |
+
[chat_interface, support_interface, success_interface, chat_preview]
|
| 846 |
+
)
|
| 847 |
|
| 848 |
if __name__ == "__main__":
|
| 849 |
app.launch(share=True)
|