//////////////////////////////// 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;