Integration between Spark to salesforce using Gupshup platform salesforce

Code Here :

/*
 * ******************************************************************************************************************
 * Author        : Fazurulla Ganganapalli
 * Controller    : MarketingBot.js
 * Marketing Bot : This controller is rsponsible for integration  between Spark to salesforce using Gupshup platform
 * Date          : 05/13/2017
 * History       :
 *******************************************************************************************************************
 */

//Variable declaration
var access_token = null;
var choiceString = '';
var moreChoiceString = '';
var userName ='';
var listLeadIds = '';
var choiceUniqueNumber;
var firstName ='';
var mainQuery = '';
var lastName='';
var userCECId='';
var contactCenter ='';
var profileName = '';
var tempAppString ='';
var tempSplitGreetString ='';
var permissionSet = '';
var userID_P = '';
var userPermission_P = '';

//Salesforce Oauth 2.0 settings and url's
var url_AccessToken = "https://login.salesforce.com/services/oauth2/token";
var url_getMethodAuth = "https://ap1.salesforce.com/services/data/v20.0/sobjects/Marketing_ChatBot__c/Application__c";
var authParams = "grant_type=password&client_id=3MVG9Y6d_Btp4xp5fHfBCvTWgHlfBKxrEf0lFIt9p71zfTmei0q9P8QxoaRowTIefchOoNdY8syyWOriUKYlV&client_secret=7975635620731036814&redirect_uri=https://localhost:8443/_callback&username=apex_integration@sfdc.com&password=Mardal786*k7Q58cu1ffXZEm0NOEgWi8vIv";
var authHeader = {"Content-Type":"application/x-www-form-urlencoded"};
var leadReopen_Url = "https://ap1.salesforce.com/services/apexrest/marketingActivities";
var url_CompleteApps = "https://ap1.salesforce.com/services/apexrest/marketingChatBotOprions";
var url_Application ="https://ap1.salesforce.com/services/apexrest/marketingChatBot";

//@Method : This method is responsible for handling choice based options
function MessageHandler(context, event) {
    var StrMain = event.message;
    var splitString = "ngcc,mods,jifflenow,grs,eloqua,cpc";
var splitGreetString ="Hi,hi,Hello,hello,Bot,bot,Chatbot,chatbot,Marketing,marketing,SFDC,Sfdc,sfdc";

    if(splitString != "" || splitString != NULL){
        var resString = splitString.split(",");
        for(var i in resString){
            if(resString[i] == StrMain){
                tempAppString = resString[i];
                context.console.log("tempAppString---->>>>"+tempAppString);
            }
        }
    }

if(splitGreetString != "" || splitGreetString != NULL){
        var resString = splitGreetString.split(",");
        for(var i in resString){
            if(resString[i] == StrMain){
                tempSplitGreetString = resString[i];
                context.console.log("tempSplitGreetString---->>>>"+tempSplitGreetString);
            }
        }
    }

    if(event.message.toLowerCase() == tempSplitGreetString){
        context.sendResponse("Hello There- \n"+
            "Welcome to Markting Bot- \n"+
            "I. Help (This will provide quick help  about the issues in an application which we  get on daily basis)\n "+
            "II. Lead (This would help to Re-Open closed leads) \n "+
            "II. Access (We will be able to  create new users in SFDC through Spark) \n "
        );
    }else if(event.message.toLowerCase() == "your from which location"){
        context.sendResponse("I am from Bengalore City");
    }else if(event.message.toLowerCase() == "fine thanks" || event.message.toLowerCase() == "fine"){
        context.sendResponse("Ok. How may i help you today !");
    }else if(event.message.toLowerCase() == "what is your name"){
        context.sendResponse("My name is Marketing Bot");
    }else if(event.message.toLowerCase() == "may i know you name"){
        context.sendResponse("My name is Marketing Bot");
    }else if(event.message.toLowerCase() == "how are you"){
        context.sendResponse("I am doing great thanks..How about you ?");
    }else if(event.message.toLowerCase() == "I need some help from you"){
        context.sendResponse("Sure. How can I help you today?");
    }else if(event.message.toLowerCase() == "how can i start"){
        context.sendResponse("Search with any keyword like : help, lead, access");
    }else if(event.message.toLowerCase() == "bye"){
        context.sendResponse("Bye have a good day !");
    }else if(event.message.toLowerCase() == "help"){
        context.simplehttp.makePost(url_AccessToken,authParams,authHeader,setApplication);
       
    //*******************************************Applciation Search Start here********************************************************
    }else if(event.message.toLowerCase() == "ngcc"){
        moreChoiceString = event.message;
        context.simplehttp.makePost(url_AccessToken,authParams,authHeader,setHelp);
    }else if(event.message.toLowerCase() == "mods"){
        moreChoiceString = event.message;
        context.simplehttp.makePost(url_AccessToken,authParams,authHeader,setHelp);
    }else if(event.message.toLowerCase() == "jifflenow"){
        moreChoiceString = event.message;
        context.simplehttp.makePost(url_AccessToken,authParams,authHeader,setHelp);
    }else if(event.message.toLowerCase() == "grs"){
        moreChoiceString = event.message;
        context.simplehttp.makePost(url_AccessToken,authParams,authHeader,setHelp);
    }else if(event.message.toLowerCase() == "eloqua"){
        moreChoiceString = event.message;
        context.simplehttp.makePost(url_AccessToken,authParams,authHeader,setHelp);
    }else if(event.message.toLowerCase() == "cpc"){
        moreChoiceString = event.message;
        context.simplehttp.makePost(url_AccessToken,authParams,authHeader,setHelp);
       
    //*****************************************Application Search end here**********************************************************
    }else if(event.message.toLowerCase() == "lead"){
        context.sendResponse(
            "Please make a selection - \n"+
            "A). Lead Re-Open \n "+
            "B). Access Help\n "+
            "C). Create New User/Access Provide\n "+
            "D). Assign Permission Sets\n "+
"E). SOQL Records\n "
        );
    }else if(event.message.toLowerCase() == "access"){
        context.sendResponse(
            "Please make a selection - \n"+
            "A). Lead Re-Open \n "+
            "B). Access Help\n "+
            "C). Create New User\n "+
            "D). Assign Permission Sets\n "+
"E). SOQL Records\n "
        );
    }else{
        var StrMain = event.message;
        var res = StrMain.split(/,|:|-| /);
        for(var i in res){
            if(i==0){
                choiceString = res[i];
            }else if(i==1){
                userName = res[i];
            }else{
                listLeadIds += res[i]+",";
            }
        }
       
        for(var i in res){
            if(i==0){
                choiceString = res[i];
            }else if(i==1){
                firstName = res[i];
            }else if(i==2){
                lastName = res[i];
            }else if(i==3){
                userCECId = res[i];
            }else if(i==4){
                contactCenter = res[i];
            }else if(i==5){
                profileName = res[i];
            }else if(i==6){
                permissionSet = res[i];
            }
        }
        var permissionString = event.message;
        var permission = permissionString.split(' ');
        for(var i in permission){
            if(i==0){
                choiceString = permission[i];
            }else if(i==1){
                userID_P = permission[i];
            }else{
                userPermission_P += permission[i]+",";
            }
        }

var soqlQuery = event.message;
        var soql = soqlQuery.split(' ');
        for(var i in soql){
            if(i==0){
                choiceString = soql[i];
            }else{
                mainQuery += soql[i]+" ";
            }
        }
       
        if(choiceString.toLowerCase() == "a"){
            context.simplehttp.makePost(url_AccessToken,authParams,authHeader,setNGCC);
        }else if(choiceString.toLowerCase() == "b"){
            context.simplehttp.makePost(url_AccessToken,authParams,authHeader,setAccessProfile);
        }else if(choiceString.toLowerCase() == "c"){
            context.simplehttp.makePost(url_AccessToken,authParams,authHeader,setUserCreation);
        }else if(choiceString.toLowerCase() == "d"){
            context.simplehttp.makePost(url_AccessToken,authParams,authHeader,setUserPermission);
        }else if(choiceString.toLowerCase() == "e"){
            context.simplehttp.makePost(url_AccessToken,authParams,authHeader,setSOQL);
        }else if(event.message.toLowerCase() == StrMain){
            choiceUniqueNumber = event.message;
            context.simplehttp.makePost(url_AccessToken,authParams,authHeader,setNumbers);
        }else{
            context.sendResponse("Sorry you have entered an invalid keyword");
        }
    }
}

//***************************************************************************************************
//@Method : Responsible for iterate response and get values from salesforce.com database
function setNGCC(context,event){
    if(userName ==''&& listLeadIds ==''){
        context.sendResponse(
            "Please enter User CECID and list of Lead IDs.Below are the possible ways to follow- \n"+
            "I. A,UserID,Single LeadID or List of LeadIDs(Separated with comma) \n"+
            "II. A UserID Single LeadID or List of LeadIDs(separated with space)\n"             
        );
    }else{
    var result= JSON.parse(event.getresp);
    access_token = result.access_token;
    context.simplehttp.makeGet(leadReopen_Url+"?username="+userName+"&LeadId="+listLeadIds,{"Content-Type":"application/json","Authorization":"OAuth "+access_token},getNGCC);
    }
}

//@Method: Responsible for iterating and parsing JSON response into user understandable language
function getNGCC(context,event){
   context.sendResponse(event.getresp);
}
//@Method : Responsible for iterate response and get values from salesforce.com database
function setNumbers(context,event){
     var result= JSON.parse(event.getresp);
    access_token = result.access_token;
    context.simplehttp.makeGet("https://ap1.salesforce.com/services/data/v20.0/sobjects/Marketing_ChatBot__c/Choice_Unique_Number__c/"+choiceUniqueNumber,{"Content-Type":"application/json","Authorization":"OAuth "+access_token},getNumbers);
}

//@Method: Responsible for iterating and parsing JSON response into user understandable language
function getNumbers(context,event){
    //context.sendResponse(event.getresp);
    var contacts  = JSON.parse(event.getresp);
    var tempStr = '';
       var Application__c = contacts.Application__c;
       var Entity__c = contacts.Entity__c;
       var Issue__c = contacts.Issue__c;
       var Solution__c = contacts.Solution__c;
       var Description__c = contacts.Description__c;
       tempStr += "Application Name :"+Application__c+"\n Entity Name : "+Entity__c+"\n Issue : "+Issue__c+"\n Issue Description :"+Solution__c+"\n Answer Steps : \n"+Description__c+"\n";
   context.sendResponse(tempStr);
 
}
//***************************************************************************************************

//***************************************************************************************************
//@Method : Responsible for iterate response and get values from salesforce.com database
function setApplication(context,event){
     var result= JSON.parse(event.getresp);
    access_token = result.access_token;
    context.simplehttp.makeGet(url_Application,{"Content-Type":"application/json","Authorization":"OAuth "+access_token},getApplication);
}

//@Method: Responsible for iterating and parsing JSON response into user understandable language
function getApplication(context,event){
    //context.sendResponse(event.getresp);
   var contacts  = JSON.parse(event.getresp);
   var tempStr = '';
   for(var i in contacts){
       tempStr +="*. "+i+"\n";
   }
   context.sendResponse("Please make a selection - \n"+tempStr);
}
//***************************************************************************************************

//***************************************************************************************************
//@Method : Responsible for iterate response and get values from salesforce.com database
function setHelp(context,event){
     var result= JSON.parse(event.getresp);
    access_token = result.access_token;
    context.simplehttp.makeGet(url_CompleteApps+'/'+moreChoiceString,{"Content-Type":"application/json","Authorization":"OAuth "+access_token},getHelp);
}

//@Method: Responsible for iterating and parsing JSON response into user understandable language
function getHelp(context,event){
    var contacts  = JSON.parse(event.getresp);
    var tempStr = '';
    for(var i in contacts){
       tempStr +=i+". "+contacts[i]+"\n";
   }
   context.sendResponse("Please Search with numbers only-\n\n"+tempStr);
}
//***************************************************************************************************
function EventHandler(context, event) {
    if(! context.simpledb.botleveldata.numinstance)
        context.simpledb.botleveldata.numinstance = 0;
        numinstances = parseInt(context.simpledb.botleveldata.numinstance) + 1;
        context.simpledb.botleveldata.numinstance = numinstances;
        context.sendResponse("Thanks for adding me. You are:" + numinstances);
}

function setAccessProfile(context,event){
     var result= JSON.parse(event.getresp);
    access_token = result.access_token;
    context.simplehttp.makeGet("https://ap1.salesforce.com/services/apexrest/marketingActivitiesUser",{"Content-Type":"application/json","Authorization":"OAuth "+access_token},getAccessProfile);
}

//@Method: Responsible for iterating and parsing JSON response into user understandable language
function getAccessProfile(context,event){
   var contacts  = JSON.parse(event.getresp);
    var tempStr = '';
    for(var i in contacts){
       tempStr +=i+" - "+contacts[i]+"\n";
   }
   context.sendResponse("\n"+tempStr);
}
//***************************************************************************************************
//@Method : Responsible for iterate response and get values from salesforce.com database
function setUserCreation(context,event){
    if(firstName =='' && lastName =='' && userCECId =='' && contactCenter =='' && profileName==''&& permissionSet==''){
        context.sendResponse(
            "Please provide the below details- \n"+
            "I. Option you need to select - C \n"+
            "II. First Name\n" +
            "III. Last Name\n"+
            "IV. User CEC ID\n"+
            "V. Marketing Contact Center(Press *B* and copy paste your Contact Center)\n"+
            "V. User Profile Name(Press *B* you will get help from SFDC)\n"+
            "VI. Permission Set (Press *B* you will get help from SFDC)\n"
        );
    }else{
        var result= JSON.parse(event.getresp);
        access_token = result.access_token;
        context.simplehttp.makeGet("https://ap1.salesforce.com/services/apexrest/marktingUserCreating?firstName="+firstName+"&lastName="+lastName+"&userId="+userCECId+"&contactCenter="+contactCenter+"&profileName="+profileName+"&permissionSet="+permissionSet,{"Content-Type":"application/json","Authorization":"OAuth "+access_token},getUserCreation);
    }
}

//@Method: Responsible for iterating and parsing JSON response into user understandable language
function getUserCreation(context,event){
   context.sendResponse(event.getresp);
}

function setUserPermission(context,event){
if(userID_P =='' && userPermission_P ==''){
        context.sendResponse(
            "Please provide the below details- \n"+
            "I. Option you need to select as - D \n"+
            "II. Provide User CEC ID\n" +
            "III. List of Permission Sets\n"
        );
    }else{
     var result= JSON.parse(event.getresp);//setSOQL
    access_token = result.access_token;
    context.simplehttp.makeGet("https://ap1.salesforce.com/services/apexrest/marktingUserCreatingPermissions?userId="+userID_P+"&permissions="+userPermission_P,{"Content-Type":"application/json","Authorization":"OAuth "+access_token},getUserPermission);
}
}

//@Method: Responsible for iterating and parsing JSON response into user understandable language
function getUserPermission(context,event){
    context.sendResponse(event.getresp);
}
function setSOQL(context,event){
    if(userID_P =='' && userPermission_P ==''){
        context.sendResponse(
            "Please provide the below details- \n"+
            "I. Option you need to select as - E \n"+
            "II. Write SOQL query "
        );
    }else{
var result= JSON.parse(event.getresp);//setSOQL
access_token = result.access_token;
context.simplehttp.makeGet("https://ap1.salesforce.com/services/data/v20.0/query/?q="+mainQuery,{"Content-Type":"application/json","Authorization":"OAuth "+access_token},getSOQL);
}
}

//@Method: Responsible for iterating and parsing JSON response into user understandable language
function getSOQL(context,event){
    var contacts  = JSON.parse(event.getresp);
    context.sendResponse("\n"+event.getresp);
    var tempStr = '';
var TotalSize = contacts.totalSize;
    var Status = contacts.done;
    tempStr +="TotalSize : "+TotalSize+"\n Status : "+Status+"\n";
    var recordsList = contacts.records;
    //context.sendResponse("\n"+recordsList);
    for(var i in recordsList){
       
        if(recordsList[i].Id == ''){}
        else
        tempStr += "Id :"+recordsList[i].Id+"\n";
       
        if(recordsList[i].Username == ''){}
        else
        tempStr += "Username :"+recordsList[i].Username+"\n";
       
        if(recordsList[i].FirstName == ''){}
        else
        tempStr += "FirstName :"+recordsList[i].FirstName+"\n";
       
        tempStr += "LastName :"+recordsList[i].LastName+"\n";
        tempStr += "Name :"+recordsList[i].Name+"\n";
        tempStr += "Title :"+recordsList[i].Title+"\n";
        tempStr += "CompanyName "+recordsList[i].CompanyName+"\n";
        tempStr += "Address :"+recordsList[i].Address+"\n";
        tempStr += "Email "+recordsList[i].Email+"\n";
        tempStr += "Phone :"+recordsList[i].Phone+"\n";
        tempStr += "CommunityNickname :"+recordsList[i].CommunityNickname+"\n";
        tempStr += "UserRoleId :"+recordsList[i].UserRoleId+"\n";
        tempStr += "ProfileId :"+recordsList[i].ProfileId+"\n";
        tempStr += "UserPermissionsMarketingUser :"+recordsList[i].UserPermissionsMarketingUser+"\n";
        tempStr += "UserPermissionsSupportUser :"+recordsList[i].UserPermissionsSupportUser+"\n";
        tempStr += "Marketing_Call_Center__c : "+recordsList[i].Marketing_Call_Center__c+"\n";
    }
   //context.sendResponse("\n"+tempStr);
}


//######
//Auto generated code from devbox
//######

exports.onMessage = MessageHandler;
exports.onEvent = EventHandler;
exports.onHttpResponse = HttpResponseHandler;
exports.onDbGet = DbGetHandler;
exports.onDbPut = DbPutHandler;
if(typeof LocationHandler == 'function'){exports.onLocation = LocationHandler;}

if(typeof  HttpEndpointHandler == 'function'){exports.onHttpEndpoint = HttpEndpointHandler;}

No comments:

Featured

What is Cryptography in salesforce and what are all the algorithms provided by them ?

A). It is a security protocal between two systems. Lets say we are integration two systems without any encrytion mechanism then hackers wil...

Popular