Skip to content

Instantly share code, notes, and snippets.

@ehzawad
Created December 1, 2024 06:11
Show Gist options
  • Save ehzawad/cf002724bee94360ed8e870df3599d96 to your computer and use it in GitHub Desktop.
Save ehzawad/cf002724bee94360ed8e870df3599d96 to your computer and use it in GitHub Desktop.
class ActionAskYaqeenFaq(Action):
def name(self) -> Text:
return "action_ask_yaqeen_faq"
def run(self, dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
last_text = tracker.latest_message["text"]
# Keyword sets for matching
payroll_keywords = ["পে রোল", "পে", "রোল", "রুল", "তেরো", "রোন"]
savings_keywords = ["ই-সেভার্স", "ই সেভার্স", "ই ফেভা", "ই ফেবা", "ই সেবা", "ই সেভিংস"]
banat_keywords = ["বানাত", "বান্না", "পান্না", "জান্নাত", "বার নাথ", "বার্নার্ড", "দানা"]
dps_keywords = ["ডিপিএস", "ডি পিএস", "ডিপি এস", "ডি পি এস"]
millionaire_keywords = ["কোটিপতি", "কোটিপোতি", "কোটি", "কুটি", "অশরিয়া"]
document_keywords = ["ডকুমেন্ট", "ডকুমেন্টস", "কাগজ", "কি কি"]
account_open_keywords = ["ওপেন", "খুলতে"]
eligibility_keywords = ["এলিজিবিলিটি", "এলিজি", "বিলিটি"]
premium_keywords = ["প্রিমিয়াম"]
branch_keywords = ["ব্রাঞ্চে", "শাখা"]
online_keywords = ["অনলাইনে", "অনলাইন"]
profit_rate_keywords = ["রেইট", "প্রফিট", "আই এস আর", "রেসিও", "ইন্টারেস্ট", "রেট", "ইনকাম শেয়ারিং"]
benefits_keywords = ["সুবিধা", "কার্ড", "চেক", "বই", "ডেবিট"]
# Utility function to check if any keyword exists in the text
def contains_keyword(keywords, text):
return any(keyword in text for keyword in keywords)
# Handling different conditions using the new keyword sets
# Payroll related questions
if contains_keyword(payroll_keywords, last_text):
if contains_keyword(savings_keywords, last_text):
dispatcher.utter_message(
text="এমটিবি ইসলামিক পেরোল ব্যাংকিং এর সাথে চুক্তিবদ্ধ কোম্পানির যেসব কর্মীর মাসিক বেতন বিশ হাজার টাকার কম, তাদের জন্য রয়েছে পেরোল ই-সেভার একাউন্ট। এই একাউন্টে একটি দশ পাতার চেকবুক এবং প্রথম বছরের জন্য ডেবিট কার্ড সম্পূর্ণ ফ্রি।"
)
return []
elif "বয়স" in last_text or "সীমা" in last_text:
dispatcher.utter_message(
text="একজন কর্মীর বয়স কমপক্ষে আঠারো বছর হতে হবে।"
)
return []
elif contains_keyword(premium_keywords, last_text):
dispatcher.utter_message(
text="এমটিবি ইসলামিক পেরোল ব্যাংকিং এর সাথে চুক্তিবদ্ধ কোম্পানির যেসব কর্মীর মাসিক বেতন এক লক্ষ টাকা বা তার বেশি, তাদের জন্য রয়েছে পেরোল প্রিমিয়াম একাউন্ট। এই একাউন্টে একটি দশ পাতার চেকবুক এবং প্রথম বছরের জন্য ডেবিট কার্ড সম্পূর্ণ ফ্রি।"
)
return []
elif contains_keyword(benefits_keywords, last_text):
dispatcher.utter_message(
text="এমটিবি ইসলামিক পেরোল ব্যাংকিং এর সাথে চুক্তিবদ্ধ কোম্পানির সকল কর্মী পেরোল একাউন্ট খুলতে পারবেন। একাউন্ট্ভেদে রয়েছে ডেবিট কার্ড, চেকবুক, ইন্টারনেট ব্যাংকিং এবং সহজ শর্তে ফাইন্যান্সিং এবং ক্রেডিট কার্ড পাওয়ার সুযোগ।"
)
return []
elif contains_keyword(document_keywords, last_text):
dispatcher.utter_message(
text="অ্যাকাউন্ট খুলতে লাগবে আপনার জাতীয় পরিচয় পত্র অথবা পাসপোর্ট অথবা জন্মসনদ এর সাথে ছবি যুক্ত অন্যকোন বৈধ পরিচয় পত্র, পাসপোর্ট সাইজের দুই কপি ছবি, আয়ের উৎসের নথি। এছাড়া প্রয়োজন নমিনির জাতীয় পরিচয় পত্র অথবা পাসপোর্ট অথবা জন্মসনদ এর সাথে ছবি যুক্ত অন্যকোন বৈধ পরিচয় পত্র এবং এক কপি পাসপোর্ট সাইজের ছবি।"
)
return []
elif contains_keyword(account_open_keywords, last_text):
if contains_keyword(branch_keywords, last_text):
dispatcher.utter_message(
text="অ্যাকাউন্ট খুলতে আমাদের শাখায় যাওয়ার দরকার নেই। আমাদের নিবেদিত অ্যাকাউন্ট ওপেনিং টিম প্রয়োজন অনুযায়ী গ্রাহকদের সহায়তা করার জন্য সর্বদা প্রস্তুত আছেন।"
)
return []
elif contains_keyword(online_keywords, last_text):
dispatcher.utter_message(
text="বর্তমানে, স্যালারি অ্যাকাউন্ট খোলার জন্য কোন অনলাইন ব্যবস্থা নেই। তবে অ্যাকাউন্ট খুলতে আমাদের শাখায় যাওয়ার দরকার নেই। আমাদের নিবেদিত অ্যাকাউন্ট ওপেনিং টিম প্রয়োজন অনুযায়ী গ্রাহকদের সহায়তা করার জন্য সর্বদা প্রস্তুত আছেন।"
)
return []
else:
dispatcher.utter_message(
text="বর্তমানে, স্যালারি অ্যাকাউন্ট খোলার জন্য কোন অনলাইন ব্যবস্থা নেই। তবে অ্যাকাউন্ট খুলতে আমাদের শাখায় যাওয়ার দরকার নেই। আমাদের নিবেদিত অ্যাকাউন্ট ওপেনিং টিম প্রয়োজন অনুযায়ী গ্রাহকদের সহায়তা করার জন্য সর্বদা প্রস্তুত আছেন।"
)
return []
elif contains_keyword(eligibility_keywords, last_text):
dispatcher.utter_message(
text="এমটিবি ইসলামিক পেরোল ব্যাংকিং এর সাথে চুক্তিবদ্ধ কোম্পানির সকল কর্মী এই একাউন্ট খুলতে পারবেন।"
)
return []
else:
dispatcher.utter_message(
text="এমটিবি ইসলামিক পেরোল ব্যাংকিং এর সাথে চুক্তিবদ্ধ কোম্পানির যেসব কর্মীর মাসিক বেতন বিশ হাজার টাকা থেকে নিরানব্বই হাজার টাকার মধ্যে, তাদের জন্য রয়েছে পেরোল সেভার একাউন্ট। এই একাউন্টে একটি দশ পাতার চেকবুক এবং প্রথম বছরের জন্য ডেবিট কার্ড সম্পূর্ণ ফ্রি।"
)
return []
# DPS related questions
elif contains_keyword(dps_keywords, last_text):
if "কিস্তি" in last_text or "ইন্সটলমেন্ট" in last_text:
dispatcher.utter_message(
text="আপনার সেভিংস একাউন্ট লিংক করে তার মাধ্যমে প্রতি মাসের একটি নির্দিষ্ট তারিখে অটো ডেবিট ইন্সট্রাকশন এর মাধ্যমে জমা দিতে পারবেন। এছাড়াও ব্রাঞ্চে গিয়ে সরাসরি আপনার ডিপিএস একাউন্ট এ কিস্তি জমা দিতে পারবেন। ইয়াকিন ফ্লেক্সিবল স্কিমের কিস্তি এমটিবি স্মার্ট অ্যাপের মাধ্যমে জমা দিতে পারবেন। বিস্তারিত জানতে এমটিবি ইয়াকিন ওয়েবসাইট ভিজিট করুন।"
)
return []
elif contains_keyword(profit_rate_keywords, last_text):
dispatcher.utter_message(
text="ডিপিএস সহ আমাদের সকল প্রোডাক্ট এর প্রফিট রেট সম্পর্কে বিস্তারিত জানতে এমটিবি ইয়াকিন ওয়েবসাইট ভিজিট করুন।"
)
return []
else:
dispatcher.utter_message(
text="ডিপিএস কিস্তি জমা দিতে সেভিংস একাউন্টের মাধ্যমে অটো ডেবিট, ব্রাঞ্চে গিয়ে বা এমটিবি স্মার্ট অ্যাপ ব্যবহার করতে পারেন। প্রফিট রেট জানার জন্য এমটিবি ইয়াকিন ওয়েবসাইট ভিজিট করুন।"
)
return []
# Banat related questions
elif contains_keyword(banat_keywords, last_text):
dispatcher.utter_message(
text="ইয়াকিন বানাত বা বান্নাত জেনারেল সেভিংস একাউন্টে ডেবিট কার্ড, চেক বুক, ইন্টারনেট ব্যাংকিং সুবিধা রয়েছে। একাউন্ট খোলার জন্য জাতীয় পরিচয় পত্র, ছবি, আয়ের নথি এবং ইউটিলিটি বিলের কপি প্রয়োজন। ন্যূনতম ব্যালেন্স পাঁচশ টাকা।"
)
return []
# Millionaire related questions
elif contains_keyword(millionaire_keywords, last_text):
dispatcher.utter_message(
text="ইয়াকিন কোটিপতি সেভিংস স্কিম একটি মাসিক ডিপোজিট স্কিম যা চার বা পাঁচ বা ছয় বা আট বা দশ বা বারো বা পনেরো বা আঠারো বা বিশ বছরের মধ্যে গ্রাহকদের কোটিপতি হতে সহায়তা করে।"
)
return []
# Fallback response for anything not specifically matched
else:
dispatcher.utter_message(
text="আপনার প্রশ্নের উত্তর দেওয়ার জন্য প্রয়োজনীয় তথ্য আমাদের কাছে নেই। অনুগ্রহ করে এমটিবি ইয়াকিন ওয়েবসাইট ভিজিট করুন।"
)
return []
# Note: More keyword sets and conditions can be added similarly based on further analysis of the codebase.
# This way, maintaining the keywords and ensuring consistency across branches becomes much easier.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment