Spaces:
Runtime error
Runtime error
import gradio as gr | |
import logging | |
# Omdurman National Bank-specific guidelines | |
ONB_GUIDELINES = { | |
"balance": "يمكنك التحقق من رصيدك عبر الإنترنت أو عبر تطبيق الهاتف الخاص ببنك أم درمان الوطني.", | |
"lost_card": "في حالة فقدان البطاقة، اتصل بالرقم 249-123-456-789 فورًا.", | |
"loan": "شروط القرض تشمل الحد الأدنى للدخل (5000 جنيه سوداني) وتاريخ ائتماني جيد.", | |
"transfer": "لتحويل الأموال، استخدم تطبيق الهاتف أو الخدمة المصرفية عبر الإنترنت.", | |
"new_account": "لفتح حساب جديد، قم بزيارة أقرب فرع مع جواز سفرك أو هويتك الوطنية.", | |
"interest_rates": "أسعار الفائدة على الودائع تتراوح بين 5% إلى 10% سنويًا.", | |
"branches": "فروعنا موجودة في أم درمان، الخرطوم، وبورتسودان. زيارة موقعنا للتفاصيل.", | |
"working_hours": "ساعات العمل من 8 صباحًا إلى 3 مساءً من الأحد إلى الخميس.", | |
"contact": "الاتصال بنا على الرقم 249-123-456-789 أو عبر البريد الإلكتروني [email protected]." | |
} | |
# Map keywords to responses | |
KEYWORD_TO_RESPONSE = { | |
"رصيد": "balance", | |
"بطاقة": "lost_card", | |
"قرض": "loan", | |
"تحويل": "transfer", | |
"حساب": "new_account", | |
"فائدة": "interest_rates", | |
"فرع": "branches", | |
"ساعات": "working_hours", | |
"اتصال": "contact" | |
} | |
# Set up logging for analytics | |
logging.basicConfig(filename='chatbot_queries.log', level=logging.INFO) | |
def respond(message: str, history: list): | |
# Log the query | |
logging.info(f"Query: {message}") | |
# Check for keywords in the message | |
for keyword, key in KEYWORD_TO_RESPONSE.items(): | |
if keyword in message: | |
return ONB_GUIDELINES.get(key, "عذرًا، لم يتم التعرف على الخيار المحدد.") | |
# Default response if no keyword is matched | |
return "عذرًا، لم أفهم سؤالك. الرجاء إعادة الصياغة أو اختيار أحد الخيارات التالية: " + ", ".join(KEYWORD_TO_RESPONSE.keys()) | |
# Main menu with submenus | |
main_menu = { | |
"الحسابات": ["التحقق من الرصيد", "فتح حساب جديد"], | |
"القروض": ["شروط الحصول على قرض", "أسعار الفائدة"], | |
"الفروع": ["فروع البنك", "ساعات العمل"], | |
"الدعم": ["الإبلاغ عن فقدان البطاقة", "الاتصال بالبنك"] | |
} | |
# Omdurman National Bank-specific interface | |
with gr.Blocks(css=".gradio-container {direction: rtl;}") as demo: | |
gr.Markdown("# <center>بنك أم درمان الوطني - المساعد المصرفي</center>") | |
with gr.Tab("المحادثة"): | |
gr.Markdown("## اختر أحد الخيارات التالية أو اكتب سؤالك:") | |
# Chat interface | |
chatbot = gr.ChatInterface( | |
respond, | |
examples=[ | |
"كيف يمكنني التحقق من رصيدي؟", # Check balance | |
"أريد الإبلاغ عن فقدان بطاقتي", # Report lost card | |
"ما هي شروط الحصول على قرض؟", # Loan eligibility | |
"ما هي ساعات العمل؟", # Working hours | |
"أين يوجد أقرب فرع؟" # Branch locations | |
] | |
) | |
with gr.Tab("القائمة الرئيسية"): | |
gr.Markdown("## القائمة الرئيسية") | |
for category, options in main_menu.items(): | |
with gr.Accordion(category): | |
for option in options: | |
gr.Button(option).click( | |
fn=lambda opt=option: respond(opt, []), | |
outputs=chatbot.chatbot | |
) | |
if __name__ == "__main__": | |
demo.launch( | |
server_name="0.0.0.0", | |
server_port=7860, | |
share=True # Enable public link | |
) |