MediPro - Failure handler

PHOTO EMBED

Wed Oct 09 2024 15:18:53 GMT+0000 (Coordinated Universal Time)

Saved by @usman13

//////////////////////////////// Fetching dymamic messages Start ///////////////////////////////////////////////////////////
messages = zoho.crm.getRecords("Chatbot_Messages");
// info messages;
for each  dynamic_message in messages
{
	if(dynamic_message.get("Type") == "Welcome")
	{
		welcome_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "HIPAA Disclaimer")
	{
		hippa_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "Chat End")
	{
		chat_end_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "Departments")
	{
		departments_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "Issue")
	{
		issue_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "Connect to Agent")
	{
		connect_to_agent_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "User Not Identified")
	{
		user_not_identified_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "Other Email")
	{
		other_mail_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "Select Product")
	{
		select_product_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "No Support Agreement")
	{
		no_support_agreement_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "Category")
	{
		category_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "Read Article")
	{
		read_article_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "Article Found")
	{
		article_found_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "Issue Resolved with Article")
	{
		issue_resolved_with_article_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "Tallk to Agent")
	{
		talk_to_agent_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "Thank You for Information")
	{
		thank_you_for_information_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "Need Further Help")
	{
		need_further_help_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "Thank You")
	{
		thank_you_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "Ticket Created for Team")
	{
		ticket_created_for_team_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "Ticket Created for Reference")
	{
		ticket_created_for_reference_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "Issue Resolved")
	{
		issue_resolved_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "What Can I Help You")
	{
		how_can_i_help_you_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "Operator Busy")
	{
		operator_busy_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "Classification")
	{
		classification_message = dynamic_message.get("Message");
	}
	else if(dynamic_message.get("Type") == "Ticket Not Created")
	{
		ticket_not_created_message = dynamic_message.get("Message");
	}
}
//////////////////////////////// Fetching dymamic messages Ends ///////////////////////////////////////////////////////////
response = Map();
departmentID = visitor.get("department_id");
if(failed_response.get("action").equalsIgnoreCase("forward"))
{
	code = cause.get("code").toNumber();
	if(code == 1001 || code == 1002 || code == 1003)
	{
		// Outside business hours // Busy Opertator /// Invalid Operator
		response.put("action","reply");
		response.put("replies",{operator_busy_message});
		if(departmentID == "655171000000007001")
		{
			// Sales Department
			getAccessToken = invokeurl
			[
				url :"https://accounts.zoho.com/oauth/v2/token?refresh_token=1000.35651ab6143ca5cf40a77d63143f2da4.dc85264b1c57b1203ae869a971598215&client_id=1000.D5KNOCDNNRDIJQO0WUATY3X7DYUUWE&client_secret=efd3a5b025c48fdb46843a14853197ad12b924aa20&grant_type=refresh_token"
				type :POST
			];
			// 			info getAccessToken.get("access_token");
			headerMap = Map();
			headerMap.put("Authorization","Zoho-oauthtoken " + getAccessToken.get("access_token"));
			// 			info headerMap;
			queryMap = Map();
			queryMap.put("select_query","select Issue_Type, Required_Information from ChatBot_Actions where Department = 'Sales'");
			response = invokeurl
			[
				url :"https://www.zohoapis.com/crm/v4/coql"
				type :POST
				parameters:queryMap.toString()
				headers:headerMap
			];
			// 	info response;
			responseData = response.get("data");
			issueTypeList = List();
			issueTypeVSRequiredInformation = Map();
			for each  option in responseData
			{
				if(!issueTypeList.contains(option.get("Issue_Type")))
				{
					issueTypeList.add(option.get("Issue_Type"));
				}
				////////////////////////////IssueType VS Required Information  /////////////////////////////
				if(issueTypeVSRequiredInformation.containKey(option.get("Issue_Type")))
				{
					requiredInformationList = issueTypeVSRequiredInformation.get(option.get("Issue_Type"));
					if(!requiredInformationList.contains(option.get("Required_Information")))
					{
						requiredInformationList.add(option.get("Required_Information"));
						issueTypeVSRequiredInformation.put(option.get("Issue_Type"),requiredInformationList);
					}
				}
				else
				{
					requiredInformationList = List();
					requiredInformationList.add(option.get("Required_Information"));
					issueTypeVSRequiredInformation.put(option.get("Issue_Type"),requiredInformationList);
				}
			}
			// 	info "issueType = "+issueTypeList;
			// 	info "issuetype vs recquired info ="+issueTypeVSRequiredInformation;
			response.put("action","context");
			response.put("context_id","salesIssueType");
			question = {"name":"issueType","replies":{issue_message},"input":{"type":"select","options":issueTypeList}};
			response.put("questions",{question});
			tempStoreMap = Map();
			tempStoreMap.put("salesIssuetypeVSrequiredInfo",issueTypeVSRequiredInformation);
			storeData = zoho.salesiq.visitorsession.set("mediproinc",tempStoreMap,"zoho_salesiq");
		}
	}
}
return response;
content_copyCOPY