Spaces:
Build error
Build error
# This files contains your custom actions which can be used to run | |
# custom Python code. | |
# | |
# See this guide on how to implement these action: | |
# https://rasa.com/docs/rasa/custom-actions | |
# This is a simple example for a custom action which utters "Hello World!" | |
from typing import Any, Text, Dict, List | |
import os | |
from rasa_sdk import Action, Tracker | |
from rasa_sdk.events import SlotSet | |
from rasa_sdk.executor import CollectingDispatcher | |
from actions.ChatBot import ChatBot | |
from actions.free_flow import FormFillingBot | |
from typing import Text, List, Any, Dict | |
import json | |
import psycopg2 | |
from rasa_sdk.events import SlotSet, ActiveLoop | |
from rasa_sdk import Tracker, FormValidationAction, Action | |
from rasa_sdk.events import EventType, UserUtteranceReverted, SlotSet | |
from rasa_sdk.executor import CollectingDispatcher | |
from langchain_mongodb.chat_message_histories import MongoDBChatMessageHistory | |
# from langchain.chains import ConversationalRetrievalChain | |
from langchain_openai import ChatOpenAI | |
from langchain.memory import ConversationBufferMemory | |
from rasa_sdk.events import SlotSet, FollowupAction | |
from rasa_sdk.executor import CollectingDispatcher | |
from pymongo.mongo_client import MongoClient | |
from typing import Any, Text, Dict, List | |
from rasa_sdk import Action, Tracker | |
from langchain.chains import LLMChain | |
from langchain.prompts.chat import ( | |
ChatPromptTemplate, | |
SystemMessagePromptTemplate, | |
HumanMessagePromptTemplate, | |
) | |
class ActionChat(Action): | |
def name(self) -> Text: | |
return "action_chat" | |
def run(self,dispatcher: CollectingDispatcher, | |
tracker: Tracker, | |
domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: | |
print("In action chat") | |
current_state = tracker.current_state() | |
print(current_state["latest_message"]) | |
print(f"sender_id: {tracker.sender_id}") | |
latest_msg = current_state["latest_message"]['text'] | |
cb = ChatBot(tracker.sender_id) | |
cb.create_llm_chain() | |
res = cb.get_response(latest_msg) | |
print(res) | |
dispatcher.utter_message(res) | |
SlotSet("data", None) | |
return [UserUtteranceReverted()] | |
class ActionFreeFlow(Action): | |
def name(self) -> Text: | |
return "action_free_flow" | |
def run(self,dispatcher: CollectingDispatcher, | |
tracker: Tracker, | |
domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: | |
print("FREE FLOW ACTION CALLED") | |
current_state = tracker.current_state() | |
print(current_state["latest_message"]) | |
latest_msg = current_state["latest_message"]['text'] | |
slot_value = tracker.get_slot("data") | |
print(slot_value) | |
uuid = tracker.sender_id | |
cb = FormFillingBot() | |
default_json=cb.get_current_form_json(uuid) | |
res= cb.form_filling(latest_msg,default_json) | |
dispatcher.utter_message(res) | |
return [SlotSet("data", None)] | |
#rutvi's code | |
class ActionAskDetails(Action): | |
def name(self): | |
return "action_ask_details" | |
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: dict): | |
slot_value = tracker.get_slot('data') | |
if slot_value is None: | |
dispatcher.utter_message(template="utter") | |
return [FollowupAction('action_check_details')] | |
else: | |
dispatcher.utter_message(template="utter_thanks") | |
return [] | |
class ActionSubmitForm(Action): | |
def name(self) -> Text: | |
return "action_submit_form" | |
def run(self, dispatcher: CollectingDispatcher, | |
tracker: Tracker, | |
domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: | |
try: | |
# Retrieve slot values | |
first_name = tracker.get_slot('first_name') | |
middle_name = tracker.get_slot('middle_name') | |
last_name = tracker.get_slot('last_name') | |
email = tracker.get_slot('email') | |
us_number = tracker.get_slot('us_number') | |
phone = tracker.get_slot('phone') | |
confirm_location = tracker.get_slot('confirm_location') | |
confirm_mail_address = tracker.get_slot('confirm_mail_address') | |
preferred_language = tracker.get_slot('preferred_language') | |
able_to_read_write = tracker.get_slot('able_to_read_write') | |
born_in_us = tracker.get_slot('born_in_us') | |
become_citizen_us = tracker.get_slot('become_citizen_us') | |
legal_resident_us = tracker.get_slot('legal_resident_us') | |
permanent_resident_number = tracker.get_slot('permanent_resident_number') | |
serve_military = tracker.get_slot('serve_military') | |
military_benefit = tracker.get_slot('military_benefit') | |
medicare_benefit = tracker.get_slot('medicare_benefit') | |
social_security_benefit = tracker.get_slot('social_security_benefit') | |
supplemental_security_income = tracker.get_slot('supplemental_security_income') | |
current_spouse_first_name = tracker.get_slot('current_spouse_first_name') | |
current_spouse_last_name = tracker.get_slot('current_spouse_last_name') | |
current_spouse_social_security_number = tracker.get_slot('current_spouse_social_security_number') | |
prior_marriages = tracker.get_slot('prior_marriages') | |
prior_marriages_duration = tracker.get_slot('prior_marriages_duration') | |
prior_marriages_death = tracker.get_slot('prior_marriages_death') | |
have_children = tracker.get_slot('have_children') | |
parent_support = tracker.get_slot('parent_support') | |
used_other_names = tracker.get_slot('used_other_names') | |
ssn = tracker.get_slot('ssn') | |
used_other_ssn = tracker.get_slot('used_other_ssn') | |
bank_account_for_deposit = tracker.get_slot('bank_account_for_deposit') | |
routing_number = tracker.get_slot('routing_number') | |
account_number = tracker.get_slot('account_number') | |
able_to_work = tracker.get_slot('able_to_work') | |
perform_usual_job_responsibilities = tracker.get_slot('perform_usual_job_responsibilities') | |
condition_last_14_months = tracker.get_slot('condition_last_14_months') | |
condition_end_in_death = tracker.get_slot('condition_end_in_death') | |
condition_require_work_changes = tracker.get_slot('condition_require_work_changes') | |
earned_more_than_1470_in_2024 = tracker.get_slot('earned_more_than_1470_in_2024') | |
intend_to_work_in_2024 = tracker.get_slot('intend_to_work_in_2024') | |
received_money_from_employer = tracker.get_slot('received_money_from_employer') | |
expect_to_receive_money_from_employer = tracker.get_slot('expect_to_receive_money_from_employer') | |
school_name = tracker.get_slot('school_name') | |
school_city = tracker.get_slot('school_city') | |
school_state = tracker.get_slot('school_state') | |
school_country = tracker.get_slot('school_country') | |
special_education = tracker.get_slot('special_education') | |
specialized_job_training = tracker.get_slot('specialized_job_training') | |
company_name = tracker.get_slot('company_name') | |
business_type = tracker.get_slot('business_type') | |
end_date_last_worked = tracker.get_slot('end_date_last_worked') | |
job_title = tracker.get_slot('job_title') | |
pay_amount = tracker.get_slot('pay_amount') | |
lifting_ability = tracker.get_slot('lifting_ability') | |
supervised_others = tracker.get_slot('supervised_others') | |
cared_for_children = tracker.get_slot('cared_for_children') | |
self_employed_last_15_years = tracker.get_slot('self_employed_last_15_years') | |
self_employed_2023 = tracker.get_slot('self_employed_2023') | |
profit_self_employed_2023 = tracker.get_slot('profit_self_employed_2023') | |
self_employed_2024 = tracker.get_slot('self_employed_2024') | |
profit_self_employed_2024 = tracker.get_slot('profit_self_employed_2024') | |
worked_outside_us = tracker.get_slot('worked_outside_us') | |
worked_outside_us_2024 = tracker.get_slot('worked_outside_us_2024') | |
illness_expected_duration = tracker.get_slot('illness_expected_duration') | |
worked_outside_2023 = tracker.get_slot('worked_outside_2023') | |
earnings_subject_us_social_security = tracker.get_slot('earnings_subject_us_social_security') | |
eligible_foreign_social_security = tracker.get_slot('eligible_foreign_social_security') | |
special_payments = tracker.get_slot('special_payments') | |
no_social_security_taxes = tracker.get_slot('no_social_security_taxes') | |
spouse_receiving_pension = tracker.get_slot('spouse_receiving_pension') | |
future_pension_annuity = tracker.get_slot('future_pension_annuity') | |
government_pension_or_annuity = tracker.get_slot('government_pension_or_annuity') | |
lump_sum_payment = tracker.get_slot('lump_sum_payment') | |
vision_impairment = tracker.get_slot('vision_impairment') | |
impaired_vision_with_glasses_contacts = tracker.get_slot('impaired_vision_with_glasses_contacts') | |
partial_or_total_deafness = tracker.get_slot('partial_or_total_deafness') | |
use_hearing_aids = tracker.get_slot('use_hearing_aids') | |
history_of_seizures = tracker.get_slot('history_of_seizures') | |
mental_illness_treatment = tracker.get_slot('mental_illness_treatment') | |
physical_illness_treatment = tracker.get_slot('physical_illness_treatment') | |
emergency_room_visit = tracker.get_slot('emergency_room_visit') | |
medical_tests_or_medications = tracker.get_slot('medical_tests_or_medications') | |
mental_health_treatment = tracker.get_slot('mental_health_treatment') | |
inpatient_stays = tracker.get_slot('inpatient_stays') | |
outpatient_visits = tracker.get_slot('outpatient_visits') | |
had_surgeries = tracker.get_slot('had_surgeries') | |
had_physical_therapy = tracker.get_slot('had_physical_therapy') | |
medical_records = tracker.get_slot('medical_records') | |
doctor_in_prison = tracker.get_slot('doctor_in_prison') | |
public_welfare = tracker.get_slot('public_welfare') | |
attorney_records = tracker.get_slot('attorney_records') | |
disability_insurance = tracker.get_slot('disability_insurance') | |
vocational_rehab = tracker.get_slot('vocational_rehab') | |
workers_compensation = tracker.get_slot('workers_compensation') | |
other_records = tracker.get_slot('other_records') | |
medical_tests_completed = tracker.get_slot('medical_tests_completed') | |
taking_medications = tracker.get_slot('taking_medications') | |
summary_message = ( | |
f"Thank you {first_name} {middle_name} {last_name}. " | |
f"We have recorded your email as {email} and phone number as {phone}. " | |
f"US Number: {us_number}, Confirm Location: {confirm_location}, " | |
f"Confirm Mail Address: {confirm_mail_address}. " | |
f"Preferred Language: {preferred_language}, Able to Read/Write: {able_to_read_write}, " | |
f"Born in US: {born_in_us}, Becoming Citizen: {become_citizen_us}, " | |
f"Legal Resident: {legal_resident_us}, Permanent Resident Number: {permanent_resident_number}, " | |
f"Served in Military: {serve_military}, Military Benefit: {military_benefit}, " | |
f"Social Security Benefit: {social_security_benefit}, Supplemental Security Income: {supplemental_security_income}, " | |
) | |
dispatcher.utter_message(text=summary_message) | |
except Exception as e: | |
dispatcher.utter_message(text=f"An error occurred: {e}") | |