From 8368944a43a0ecda8a8d9ba35fa6c2bba9d5df44 Mon Sep 17 00:00:00 2001 From: Hope Ogbons Date: Fri, 31 Oct 2025 03:19:49 +0100 Subject: [PATCH] Add banking intents mapping module This commit introduces a new Python module, banking_intents.py, which maps intent labels (0-76) to their corresponding intent names for the Banking77 application. The module includes functions to retrieve intent names by label and vice versa, along with a utility to display all intents. This addition enhances the application's ability to handle various banking-related queries effectively. --- .../hopeogbons/banking_intents.py | 148 ++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 week6/community-contributions/hopeogbons/banking_intents.py diff --git a/week6/community-contributions/hopeogbons/banking_intents.py b/week6/community-contributions/hopeogbons/banking_intents.py new file mode 100644 index 0000000..495b497 --- /dev/null +++ b/week6/community-contributions/hopeogbons/banking_intents.py @@ -0,0 +1,148 @@ +""" +Banking77 Intent Mapping +Maps label numbers (0-76) to intent names +""" + +INTENT_LABELS = [ + "activate_my_card", + "age_limit", + "apple_pay_or_google_pay", + "atm_support", + "automatic_top_up", + "balance_not_updated_after_bank_transfer", + "balance_not_updated_after_cheque_or_cash_deposit", + "beneficiary_not_allowed", + "cancel_transfer", + "card_about_to_expire", + "card_acceptance", + "card_arrival", + "card_delivery_estimate", + "card_linking", + "card_not_working", + "card_payment_fee_charged", + "card_payment_not_recognised", + "card_payment_wrong_exchange_rate", + "card_swallowed", + "cash_withdrawal_charge", + "cash_withdrawal_not_recognised", + "change_pin", + "compromised_card", + "contactless_not_working", + "country_support", + "declined_card_payment", + "declined_cash_withdrawal", + "declined_transfer", + "direct_debit_payment_not_recognised", + "disposable_card_limits", + "edit_personal_details", + "exchange_charge", + "exchange_rate", + "exchange_via_app", + "extra_charge_on_statement", + "failed_transfer", + "fiat_currency_support", + "get_disposable_virtual_card", + "get_physical_card", + "getting_spare_card", + "getting_virtual_card", + "lost_or_stolen_card", + "lost_or_stolen_phone", + "order_physical_card", + "passcode_forgotten", + "pending_card_payment", + "pending_cash_withdrawal", + "pending_top_up", + "pending_transfer", + "pin_blocked", + "receiving_money", + "Refund_not_showing_up", + "request_refund", + "reverted_card_payment?", + "supported_cards_and_currencies", + "terminate_account", + "top_up_by_bank_transfer_charge", + "top_up_by_card_charge", + "top_up_by_cash_or_cheque", + "top_up_failed", + "top_up_limits", + "top_up_reverted", + "topping_up_by_card", + "transaction_charged_twice", + "transfer_fee_charged", + "transfer_into_account", + "transfer_not_received_by_recipient", + "transfer_timing", + "unable_to_verify_identity", + "verify_my_identity", + "verify_source_of_funds", + "verify_top_up", + "virtual_card_not_working", + "visa_or_mastercard", + "why_verify_identity", + "wrong_amount_of_cash_received", + "wrong_exchange_rate_for_cash_withdrawal" +] + + +def get_intent(label_number): + """ + Get intent name from label number. + + Args: + label_number (int): Label from 0 to 76 + + Returns: + str: Intent name + + Example: + >>> get_intent(0) + 'activate_my_card' + >>> get_intent(25) + 'declined_card_payment' + """ + if 0 <= label_number <= 76: + return INTENT_LABELS[label_number] + else: + raise ValueError(f"Label must be between 0 and 76, got {label_number}") + + +def get_label(intent_name): + """ + Get label number from intent name. + + Args: + intent_name (str): Intent name + + Returns: + int: Label number (0-76) + + Example: + >>> get_label('activate_my_card') + 0 + >>> get_label('declined_card_payment') + 25 + """ + try: + return INTENT_LABELS.index(intent_name) + except ValueError: + raise ValueError(f"Intent '{intent_name}' not found in labels") + + +# Quick access +def show_all_intents(): + """Display all 77 intents with their labels""" + for i, intent in enumerate(INTENT_LABELS): + print(f"{i}\t{intent}") + + +if __name__ == "__main__": + # Test the functions + print("Testing get_intent:") + print(f"Label 0: {get_intent(0)}") + print(f"Label 25: {get_intent(25)}") + print(f"Label 76: {get_intent(76)}") + + print("\nTesting get_label:") + print(f"'activate_my_card': {get_label('activate_my_card')}") + print(f"'declined_card_payment': {get_label('declined_card_payment')}") +