Preview:
//////////////////////////////// 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();
msg = message.get("text");
name = visitor.get("name");
email = visitor.get("email");
phone = visitor.get("phone");
// departmentId = visitor.get("department_id");
/////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
if(operation.equals("chat"))
{
	if(!msg.equalsIgnoreCase("Client Care") && !msg.equalsIgnoreCase("Sales"))
	{
		response = Map();
		response.put("action","reply");
		response.put("replies",{hippa_message,welcome_message,departments_message});
		response.put("input",{"type":"select","options":{"Client Care","Sales"}});
		return response;
	}
}
if(msg.equalsIgnoreCase("Sales"))
{
	chatBotActions = invokeurl
	[
		url :"https://www.zohoapis.com/crm/v2/functions/Fetch_Chabot_Sales_Actions/actions/execute?auth_type=apikey&zapikey=1003.54e865e56692ea2154455b76012a7b71.1a7eab6552466d5f0187d84f8f1785b0"
		type :POST
	];
	info "From function = " + chatBotActions;
	issueTypes = chatBotActions.get("details").get("output").get("issueType");
	///////////////////////////////////////////////////
	if(!issueTypes.isEmpty())
	{
		/////////////////////Create Session//////////////////////////////////
		data_mp = Map();
		data_mp.put("department","Sales");
		set_map = Map();
		set_map.put("data_mp",data_mp);
		temp_store = zoho.salesiq.visitorsession.set("mediproinc",set_map,"zoho_salesiq");
		info "Storing data = " + temp_store;
		/////////////////////////////////////////////////////////////////////	
		//info show question
		response.put("action","context");
		response.put("context_id","salesIssueType");
		question = {"name":"issueType","replies":{issue_message},"input":{"type":"select","options":issueTypes}};
		response.put("questions",{question});
	}
	else
	{
		// Chat Forward
		// Sales Department: 810990000000014003
		response.put("action","forward");
		response.put("department","810990000000014003");
		response.put("replies",{connect_to_agent_message});
	}
}
else if(msg.equalsIgnoreCase("Client Care"))
{
	searchContact = invokeurl
	[
		url :"https://www.zohoapis.com/crm/v3/Contacts/search?criteria=(Email:equals:" + email + ")"
		type :GET
		connection:"zohocrm"
	];
	info searchContact;
	info isNull(searchContact);
	if(isNull(searchContact))
	{
		/////////////////////Create Session//////////////////////////////////
		data_mp = Map();
		data_mp.put("department","Client Care");
		set_map = Map();
		set_map.put("data_mp",data_mp);
		temp_store = zoho.salesiq.visitorsession.set("mediproinc",set_map,"zoho_salesiq");
		info "Storing data = " + temp_store;
		/////////////////////////////////////////////////////////////////////		
		/////// User Did not Identified ////////
		response.put("action","context");
		response.put("context_id","userNotIdentified");
		otherEmail = {"name":"otherEmail","replies":{user_not_identified_message,other_mail_message}};
		couldNotIdentify = {"name":"couldNotIdentify","replies":{user_not_identified_message},"input":{"type":"select","options":{"Yes","No"}}};
		response.put("questions",{couldNotIdentify});
	}
	else
	{
		/////////////// User found ///////////////
		info "Record Found";
		contactDetials = searchContact.get("data").get(0);
		accountID = ifnull(contactDetials.get("Account_Name"),{"id":null}).get("id");
		chatBotActions = invokeurl
		[
			url :"https://www.zohoapis.com/crm/v2/functions/erphub_test/actions/execute?auth_type=apikey&zapikey=1003.54e865e56692ea2154455b76012a7b71.1a7eab6552466d5f0187d84f8f1785b0&accountID=" + accountID
			type :POST
		];
		info "From function = " + chatBotActions;
		classifications = chatBotActions.get("details").get("output").get("classifications");
		///////////////////////////////////////////////////
		if(!classifications.isEmpty())
		{
			////////////////////////////////////////////////////////////////////////////////////////
			searchAgreement = invokeurl
			[
				url :"https://www.zohoapis.com/crm/v3/Contracts/search?criteria=((Account:equals:" + accountID + ")and(Status:equals:Active))"
				type :GET
				connection:"zohocrm"
			];
			info "searchAgreement: " + searchAgreement;
			activeAgreement = false;
			if(searchAgreement.size() > 0)
			{
				activeAgreement = true;
			}
			else
			{
				activeAgreement = false;
			}
			/////////////////////////////////////////////////////////////////////
			classification_rep_list = List();
			if(activeAgreement == true)
			{
				// 				classificationText = "Please select a classification";
				classification_rep_list.add(select_product_message);
			}
			else
			{
				classification_rep_list.add(no_support_agreement_message);
				classification_rep_list.add(select_product_message);
			}
			//////////////////////info show question/////////////////////////////
			response.put("action","context");
			response.put("context_id","clientCare");
			question = {"name":"classification","replies":classification_rep_list,"input":{"type":"select","options":classifications}};
			response.put("questions",{question});
			/////////////////////Create Session//////////////////////////////////
			data_mp = Map();
			data_mp.put("accountID",accountID);
			data_mp.put("activeAgreement",activeAgreement);
			data_mp.put("department","Client Care");
			set_map = Map();
			set_map.put("data_mp",data_mp);
			temp_store = zoho.salesiq.visitorsession.set("mediproinc",set_map,"zoho_salesiq");
			info "Storing data = " + temp_store;
			/////////////////////////////////////////////////////////////////////
		}
		else
		{
			// Chat Forward
			// Client Care Department: 810990000000014005
			response.put("action","forward");
			response.put("department","810990000000014005");
			response.put("replies",{connect_to_agent_message});
		}
	}
}
else
{
	response = Map();
	response.put("action","reply");
	response.put("replies",{hippa_message,welcome_message,departments_message});
	response.put("input",{"type":"select","options":{"Client Care","Sales"}});
	return response;
}
return response;
downloadDownload PNG downloadDownload JPEG downloadDownload SVG

Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!

Click to optimize width for Twitter