AI 상품 추천: 데이터 호출형(수협몰)
Last updated
groobee.getGroobeeRecommendAsync("캠페인키", 타임아웃).then( data => { console.log(data); } );//추천 필터링 정보
let queryObj = {
"grbChannelCode" : "10100"
};
groobee.getGroobeeRecommendAsync("캠페인키", 3000, queryObj).then(data =< { console.log(data); }); {
"campaignKey": "캠페인키",
"algorithmCd": "ST02",
"goodsList": [
{
"serviceKey": "서비스 키",
"goodsNm": "[무료배송]조미구이 대천김(선물상자20봉)",
"goodsCd": "G0000650",
"goodsImg": "https://image.shshopping.co.kr/api/data001/shcy-uploads/file/shcy/b2c/UPLOAD/images/goods/G0/00/06/50/G0000650_01_500.gif"
"goodsCateNm": "돌김",
"goodsCate": "100105100101",
"goodsPrc": 54000,
"goodsSalePrc": 49000
}, ...
]
}
groobeeObj = {
algorithmCd : "알고리즘코드",
campaignKey : "추천캠페인키",
campaignTypeCd : "RE", //고정
goods: [
{goodsCd: "노출된 상품코드1"},
{goodsCd: "노출된 상품코드2"},
...
]
groobee.send("DI", groobeeObj);groobeeObj = {
algorithmCd : "알고리즘코드",
campaignKey : "추천캠페인키",
campaignTypeCd : "RE", //고정
goods: [
{goodsCd: "고객이 클릭한 상품코드1"}
]
}
groobee.send("CL", groobeeObj);//작성 예시일 뿐 고객사의 코드에 맞게 수정해 주시면 됩니다.
//아래 코드가 정답이 아닙니다. 참고만 부탁드립니다.
function groobeeRecommendCall () {
let queryObj = {
"grbChannelCode" : "10100"
};
//함수가 존재하는지 체크
if (groobee && groobee.getGroobeeRecommendAsync) {
//groobee.getGroobeeRecommendAsync 함수를 정상적으로 호출이 될 경우
groobee.getGroobeeRecommendAsync('RE6b33946d7add471dbd33f35347b5c06f', 3000, queryObj)
.then(data => {
고객사처리함수(data);
})
} else {
//groobee.getGroobeeRecommendAsync 함수가 정상적으로 호출이 되지 않을 경우
let tryCnt = 0;
let _timer = setInterval(()=> {
// 3회 넘어갈시 중지
if(tryCnt==3){
clearInterval(_timer);
$('#지정된ID').hide();
return;
}
tryCnt++;
// function 존재시에만 실행
if(groobee.getGroobeeRecommendAsync && typeof groobee.getGroobeeRecommendAsync == 'function') {
groobee.getGroobeeRecommendAsync('RE6b33946d7add471dbd33f35347b5c06f', 3000, queryObj)
.then(data =< {
고객사처리함수(data);
})
clearInterval(_timer);
}}, 500);
}
}
function 고객사처리함수(data) {
console.log('recommendData :::', data);
if (data && data.goodsList) {
//고객사 추천상품 노출 및 데이터처리
...code
/*
추천 상품 선별 및 노출작업
각 상품 클릭 시 이벤트 연결처리도 필요 아래 clickGroobeeProduct(함수명은 자유)
예시일 뿐 고객사에 맞춰서 코드는 새로 작성할 것
*/
let html = "<ul>";
for (let i = 0; i < data.goodsList.length; i++) {
//--------------groobee 클릭(CL) 처리 START----------------
html += `<li onClick="clickGroobeeProduct(${data.campaignKey}, ${data.algorithmCd}, ${data.goodsList[i].goodsCd})">${data.goodsList[i].goodsNm}</li>`;
//--------------groobee 클릭(CL) 처리 END----------------
}
html += "</ul>";
$('#지정된ID').append(html);
$('#지정된ID').show();
//--------------groobee 노출(DI) 처리 START----------------
groobeeDisplayInsert(data.campaignKey, data.algorithmCd, data.goodsList);
//--------------groobee 노출(DI) 처리 END------------------
} else {
$('#지정된ID').hide();
}
}
function groobeeDisplayInsert(campaignKey, algorithmCd, goodsList) {
//상품목록이 존재하는지 체크
if (!goodsList || goodsList.length == 0) return;
let goods = [];
for (let i = 0; i < goodsList.length; i++) {
let newObj = {goodsCd: goodsList[i].goodsCd};
goods.push(newObj);
}
let groobeeObj = {
algorithmCd: algorithmCd, //알고리즘코드 (추천받을때 받은 algorithmCd)
campaignKey: campaignKey, //캠페인키
campaignTypeCd: 'RE', //고정값
goods: goods
}
groobee.send('DI', groobeeObj);
}
function clickGroobeeProduct(campaignKey, algorithmCd, goodsCd) {
//추천 클릭처리
let groobeeObj = {
algorithmCd: algorithmCd, //알고리즘코드 (추천받을때 받은 algorithmCd)
campaignKey: campaignKey, //캠페인키
campaignTypeCd: 'RE', //고정값
goods: [
{goodsCd: goodsCd}
]
}
groobee.send('CL', groobeeObj);
//고객사 페이지 이동처리
code....
}