Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

STEP 1

Add the redirect link for concept sauce in a script tag.

The redirect should look like the below:

Redirect("https://survey.rose.conceptsauce.io?param_id=PRMS01G3H5QXCJ252E6FK650KEGB0Y&respondent_id=" + CurrentID() + "&link=" + link, true);

param_id: is the unique shelf ID, concept sauce will provide you with unique param_id for each shelf
respondent_id: is used to pass the unique ID for each respondent, must contain only numbers, no special symbols
CurrentID(): holds the unique ID in Confirmit system once the respondent enters the link
link: this is a variable that holds the invite link for the survey, it is used to redirect the respondent back to the survey, see details below:

var link = encodeURIComponent(GetRespondentUrl('ReturnP'));


ReturnP: this is the info page that the respondent lands once returned from the shelf, all data captured and appended into the hidden variables must be on a same page so you can recode it from the API

if (!IsInRdgMode()) {

    var link = encodeURIComponent(GetRespondentUrl('LandingLabel'));

    Redirect("https://survey.rose.conceptsauce.io?param_id=XXXXXXX&respondent_id=" + CurrentID() + "&link=" + link, true);

}

STEP 2

API integration:

Inside the info page that the respondents returns write the javascript code in the Javascript tab.

You can find the information about each API Call at - Virtual Shelf

STEP 2.1

Get the survey ID from ParamID, Check if Api call was successful

//Get survey ID from Param ID -------------------------------------
var paramsCallObj = {
    event_type: "params_crud",
    action: "get_params",
    data: {
        params_id: cellParamID,
    },
};
var paramsCallStr = JSON.stringify(paramsCallObj);

var surveyIDcall = $.parseJSON(
    $.ajax({
        url: "https://better-params-api.rose.conceptsauce.io/api",
        type: "POST",
        data: paramsCallStr,
        dataType: "json",
        async: false,
        success: function (result) {
            console.log("success id call");
            console.log(result);
        },
        error: function (error) {
            console.log(error);
        },
    }).responseText
);

//check if API call was succesful
var survey_id = "";
if (surveyIDcall.code == 200) {
    survey_id = surveyIDcall.data.params.survey_id;
}

STEP 2.2

Get shelf summary purchases and append the data into the hidden variables

//get SUMMARY -----------------------------------------------------
var surveyIdCallObj = {
    event_type: "survey_data_request",
    action: "get_shop_shelf_summary_purchases",
    data: {
        target: {
            survey_id: survey_id,
            respondent_id: respondent_id,
            block_id: "shelf",
        },
    },
};
var surveyIdCallStr = JSON.stringify(surveyIdCallObj);

var resultAPIcall1 = $.parseJSON(
    $.ajax({
        url: "https://public-survey-data-api.rose.conceptsauce.io/api",
        type: "POST",
        data: surveyIdCallStr,
        dataType: "json",
        async: false,
        success: function (result) {
            console.log("success api call SUMMARY");
            console.log(result);
        },
        error: function (error) {
            console.log(error);
        },
    }).responseText
);



//Get all SKUs and append them into the variable
var P1summarySku = Confirmit.page.getQuestion("P1SKUs");
P1summarySku.setValue(null);

var P1SKU = resultAPIcall1.data.basket_summary.sku_list;


P1summarySku.setValue(P1SKU);

STEP 2.3

Get the shelf details and append them into the hidden variables

var reqBodyDetails = {
    event_type: "survey_data_request",
    action: "get_shop_shelf_detail_purchases",
    data: {
        target: {
            survey_id: survey_id,
            respondent_id: respondent_id,
            block_id: "shelf",
        },
    },
};

var reqBodyDetailsStr = JSON.stringify(reqBodyDetails);

var resultAPIcall2 = $.parseJSON(
    $.ajax({
        url: "https://public-survey-data-api.rose.conceptsauce.io/api",
        type: "POST",
        data: reqBodyDetailsStr,
        dataType: "json",
        async: false,
        success: function (result) {
            console.log("success api call DETAILS");
            console.log(result);
        },
        error: function (error) {
            console.log(error);
        },
    }).responseText
);

var rawPurchaseDet = resultAPIcall2.data.basket_details.raw_purchase_details;

//Get quantity for each SKU
var SkuQuant = [];

for (var z = 0; z < rawPurchaseDet.length; z++) {
    SkuQuant.push(rawPurchaseDet[z].quantity);
}
var SkuQtity = Confirmit.page.getQuestion("P1Quant");
SkuQtity.setValue(null);
SkuQtity.setValue(SkuQuant);


//Set total time spent at the shelf
var P1shelfTime = Confirmit.page.getQuestion("P1ShelfTime");
P1shelfTime.setValue(null);
P1exDur = resultAPIcall2.data.exercise_duration;
P1shelfTime.setValue(P1exDur);

STEP 2.4

Get the shelf details and append them into the hidden variables

//get summary ITEMS looked at
var reqSumItems = {
    event_type: "survey_data_request",
    action: "get_shop_shelf_summary_items_looked_at",
    data: {
        target: {
            survey_id: survey_id,
            respondent_id: respondent_id,
            block_id: "shelf",
        },
    },
};

var reqSumItemsStr = JSON.stringify(reqSumItems);

var resultAPIcall3 = $.parseJSON(
    $.ajax({
        url: "https://public-survey-data-api.rose.conceptsauce.io/api",
        type: "POST",
        data: reqSumItemsStr,
        dataType: "json",
        async: false,
        success: function (result) {
            console.log("success api call Summary Items");
            console.log(result);
        },
        error: function (error) {
            console.log(error);
        },
    }).responseText
);


//recode all items looked at(bought and not bought, abe vsi4ki)
var itemsLookedAt = resultAPIcall3.data.items_looked_at;

var P1look = Confirmit.page.getQuestion("P1looked");
P1look.setValue(null);

var P1lookArr = [];

for (var p = 0; p < itemsLookedAt.length; p++) {
    P1lookArr.push(itemsLookedAt[p].sku);
}

P1look.setValue(P1lookArr);

STEP 2.5

Get all the items the respondent have looked at

 var greyoutObj = {
                    "shelf": {
                      "set:disabled_products": [
                      ]
                    }
                  }
 
  var chosen = "^f('SKU')[f('P2').get()].label()^";
  
    greyoutObj.shelf["set:disabled_products"].push(chosen);
     
  var chosenParam = JSON.stringify(greyoutObj);
  var end = btoa(chosenParam);

var linkquestion = Confirmit.page.getQuestion("linkDisabled");
linkquestion.setValue(end);

STEP 2.5.1

Pass the selection in the redirect link

if (!IsInRdgMode()) {

    var link = encodeURIComponent(GetRespondentUrl('ReturnB'));
    var chosenParam = f('linkDisabled').get();
  

        Redirect("https://survey.rose.conceptsauce.io?param_id=PRMS01G3H5T63290RQZY2KG8250G53&respondent_id=" + CurrentID() + "&custom_params=" + chosenParam + "&link=" + link, true);
  }

EXAMPLE OF ALL THE API CALLS AND CODE

var respondent_id = "^CurrentID()^";
//console.log("respondent_id: " + respondent_id);

//PIPE THE CORRECT params_id based on CELL (1 or 2)
var cellParamID = "";
var Qcell = "^f('cell').value()^";
//console.log(Qcell);

if (Qcell == 1) {
    cellParamID = "PRMS01G3H5QXCJ252E6FK650KEGB0Y";
} else if (Qcell == 2) {
    cellParamID = "PRMS01G3H4T858PQD3K1FF04P3C64D";
} else if (Qcell == 3) {
    cellParamID = "PRMS01G3RTH7CHX4X160AMHK4G95H0";
} else if (Qcell == 4) {
    cellParamID = "PRMS01G3H5GZEMTF7GX9SYS00TDDM2";
}


//Get survey ID from Param ID -------------------------------------
var paramsCallObj = {
    event_type: "params_crud",
    action: "get_params",
    data: {
        params_id: cellParamID,
    },
};
var paramsCallStr = JSON.stringify(paramsCallObj);

var surveyIDcall = $.parseJSON(
    $.ajax({
        url: "https://better-params-api.rose.conceptsauce.io/api",
        type: "POST",
        data: paramsCallStr,
        dataType: "json",
        async: false,
        success: function (result) {
            console.log("success id call");
            console.log(result);
        },
        error: function (error) {
            console.log(error);
        },
    }).responseText
);

//console.log("out");

var survey_id = "";
if (surveyIDcall.code == 200) {
    survey_id = surveyIDcall.data.params.survey_id;
}
//console.log("survey ID: " + survey_id);

//get SUMMARY -----------------------------------------------------
var surveyIdCallObj = {
    event_type: "survey_data_request",
    action: "get_shop_shelf_summary_purchases",
    data: {
        target: {
            survey_id: survey_id,
            respondent_id: respondent_id,
            block_id: "shelf",
        },
    },
};
var surveyIdCallStr = JSON.stringify(surveyIdCallObj);

var resultAPIcall1 = $.parseJSON(
    $.ajax({
        url: "https://public-survey-data-api.rose.conceptsauce.io/api",
        type: "POST",
        data: surveyIdCallStr,
        dataType: "json",
        async: false,
        success: function (result) {
            console.log("success api call SUMMARY");
            console.log(result);
        },
        error: function (error) {
            console.log(error);
        },
    }).responseText
);

//console.log("SUMMARY OUT");
//console.log(resultAPIcall1);

//Get all SKUs and append them into the variable
var P1summarySku = Confirmit.page.getQuestion("P1SKUs");
P1summarySku.setValue(null);

var P1SKU = resultAPIcall1.data.basket_summary.sku_list;
//console.log("SKU LIST BELOW");
//console.log(P1SKU);

P1summarySku.setValue(P1SKU);

// get DETAILS ---------------------------------------------------------
var reqBodyDetails = {
    event_type: "survey_data_request",
    action: "get_shop_shelf_detail_purchases",
    data: {
        target: {
            survey_id: survey_id,
            respondent_id: respondent_id,
            block_id: "shelf",
        },
    },
};

var reqBodyDetailsStr = JSON.stringify(reqBodyDetails);

var resultAPIcall2 = $.parseJSON(
    $.ajax({
        url: "https://public-survey-data-api.rose.conceptsauce.io/api",
        type: "POST",
        data: reqBodyDetailsStr,
        dataType: "json",
        async: false,
        success: function (result) {
            console.log("success api call DETAILS");
            console.log(result);
        },
        error: function (error) {
            console.log(error);
        },
    }).responseText
);

var rawPurchaseDet = resultAPIcall2.data.basket_details.raw_purchase_details;

//Get quantity for each SKU
var SkuQuant = [];

for (var z = 0; z < rawPurchaseDet.length; z++) {
    SkuQuant.push(rawPurchaseDet[z].quantity);
}
var SkuQtity = Confirmit.page.getQuestion("P1Quant");
SkuQtity.setValue(null);
SkuQtity.setValue(SkuQuant);


//Set total time spent at the shelf
var P1shelfTime = Confirmit.page.getQuestion("P1ShelfTime");
P1shelfTime.setValue(null);
P1exDur = resultAPIcall2.data.exercise_duration;
P1shelfTime.setValue(P1exDur);




//get summary ITEMS looked at
var reqSumItems = {
    event_type: "survey_data_request",
    action: "get_shop_shelf_summary_items_looked_at",
    data: {
        target: {
            survey_id: survey_id,
            respondent_id: respondent_id,
            block_id: "shelf",
        },
    },
};

var reqSumItemsStr = JSON.stringify(reqSumItems);

var resultAPIcall3 = $.parseJSON(
    $.ajax({
        url: "https://public-survey-data-api.rose.conceptsauce.io/api",
        type: "POST",
        data: reqSumItemsStr,
        dataType: "json",
        async: false,
        success: function (result) {
            console.log("success api call Summary Items");
            console.log(result);
        },
        error: function (error) {
            console.log(error);
        },
    }).responseText
);

//console.log("Summary Items looked OUT");
//console.log(resultAPIcall3);

//recode all items looked at(bought and not bought, abe vsi4ki)
var itemsLookedAt = resultAPIcall3.data.items_looked_at;

var P1look = Confirmit.page.getQuestion("P1looked");
P1look.setValue(null);

var P1lookArr = [];

for (var p = 0; p < itemsLookedAt.length; p++) {
    P1lookArr.push(itemsLookedAt[p].sku);
}
//console.log(P1lookArr);
P1look.setValue(P1lookArr);

// Get Details Looked at

var reqDetLooked = {
    event_type: "survey_data_request",
    action: "get_shop_shelf_detail_items_looked_at",
    data: {
        target: {
            survey_id: survey_id,
            respondent_id: respondent_id,
            block_id: "shelf",
        },
    },
};

var resultDetLookedStr = JSON.stringify(reqDetLooked);

var resultAPIcall4 = $.parseJSON(
    $.ajax({
        url: "https://public-survey-data-api.rose.conceptsauce.io/api",
        type: "POST",
        data: resultDetLookedStr,
        dataType: "json",
        async: false,
        success: function (result) {
            console.log("success api call Details looked");
            console.log(result);
        },
        error: function (error) {
            console.log(error);
        },
    }).responseText
);

//console.log("Details looked Items OUT");
//console.log(resultAPIcall4);

//Get Findability details
var reqFindability = {
    event_type: "survey_data_request",
    action: "get_findability_details",
    data: {
        target: {
            survey_id: survey_id,
            respondent_id: respondent_id,
            block_id: "shelf",
        },
    },
};

var reqFrindabilityStr = JSON.stringify(reqFindability);

var resultAPIcall5 = $.parseJSON(
    $.ajax({
        url: "https://public-survey-data-api.rose.conceptsauce.io/api",
        type: "POST",
        data: reqFrindabilityStr,
        dataType: "json",
        async: false,
        success: function (result) {
            console.log("success api call Findability");
            console.log(result);
        },
        error: function (error) {
            console.log(error);
        },
    }).responseText
);

//console.log("Findability OUT");
//console.log(resultAPIcall5);



$(document).ready(function () {
    $(".cf-navigation-next").click();
});
  • No labels