2014-05-09 3 views
0

Sitecore의 참여 계획에 사용자를 등록 할 수 있음을 알고 있습니다. 캠페인 URL을 방문 할 때 계획의 특정 상태에 추가하고 웹 양식을 제출할 때 추가합니다 마케팅 담당자 양식을 작성한 후 수퍼바이저 인터페이스에 수동으로 추가하십시오.참여 계획의 익명 사용자 등록

또한, 나는 여기에 설명 된대로 사용자를 추가하기 위해 API를 사용할 수 있다는 것을 알고 : http://briancaos.wordpress.com/2013/06/03/programming-for-sitecore-dms-engagement-plans/

그러나,이 방법은 사용자 이름이 필요합니다.

Sitecore의 특정 템플릿 (예 : 제품 템플릿 페이지)이 나타내는 페이지를 방문 할 때 참여 계획에 익명 사용자를 등록하고 싶습니다. API 사용이 가능합니까?

답변

1

Sitecore 지원 당 현재 가능하지 않습니다. 그러나 jQuery AJAX 호출을 캠페인 URL에 추가하여 문제의 페이지 유형에서 사용되는 하위 레이아웃에 추가 할 수있었습니다. 물론 이것은 JS가 활성화 된 클라이언트에서만 작동하지만, 제 목적으로는 문제가되지 않습니다. 편집 2014년 5월 19일

<script type="text/javascript">$(function() { $.get('/?sc_camp=[campaignid]'); });</script> 

은 내가 Sitecore API를 통해이 작업을 수행 할 수있는 방법을 발견했다. 이 거친 등 null 값, 예외를 확인하기 위해 필요하지만, 작업을 수행합니다

string cookieVal = Request.Cookies["SC_ANALYTICS_GLOBAL_COOKIE"].Value; 
List<Guid> guids = new List<Guid>() { 
    new Guid(cookieVal) 
}; 
Guid automationStateId = new Guid("{24963AE9-1C8C-4E18-8EEE-01BC249D1F1B}"); 
Guid automationId = Sitecore.Context.Database.GetItem(new Sitecore.Data.ID(automationStateId)).ParentID.ToGuid(); 
Sitecore.Analytics.Automation.Data.AutomationManager.Provider.CreateAutomationStatesFromBulk(guids, automationId, automationStateId); 
+4

또한 서버 측에서 템플릿 요청이있는 페이지로 모든 요청을 리디렉션 할 수 있습니다. 그건 자바 스크립트에 대한 필요성을 제거합니다. –

+0

그 또한 좋은 제안입니다 - 감사합니다! –

+0

좋은 제안 TwentyGotoTen! – Younes

1

내 위의 의견을 확장하기 위해, 그리고 자신의 대답을 보완하기를, 여기에 프로세서는 당신이 할 수 있어요 원하는 결과를 얻을 수있는 httpRequestBegin 파이프 라인의 ItemResolver 이후에 추가하십시오. 그것은 당신이 당신이 프로세서를 추가 익숙하지 않은 경우

class CampaignRedirect 
{ 
    public void Process(HttpRequestArgs args) 
    { 
     var request = HttpContext.Current.Request; 

     // must not already have the querystring in the URL   
     if(request.QueryString["sc_camp"] != null && 
      request.QueryString["sc_camp"] != "XXXXXXXX") 
      return; 

     // must have a context item 
     if(Sitecore.Context.Item == null) 
      return; 

     var item = Sitecore.Context.Item; 

     // must be the right template 
     if(item.TemplateID.ToString() != "{XXXXXXXXX-XXXX-XXXXXX}") 
      return; 

     var basicUrl = LinkManager.GetItemUrl(item); 

     var response = HttpContext.Current.Response; 

     response.Redirect(basicUrl + "?sc_camp=XXXXXXX"); 
    } 
} 

맞는 볼 당신이 만들어 낸 수있는 아주 기본적인 버전,보고 here을.

+0

고마워요. ISAPI_Rewrite 나 IIS URL Rewrite에 의존하지 않는 좋은 솔루션입니다. 따라서 믹스에 추가하지 않으려는 사람들에게는 도움이 될 것입니다. 내가이 방법을 사용하지 않는 유일한 이유는 페이지의 모든 URL에 sc_camp =를 추가하고 싶지 않기 때문입니다. 하지만 ... 우리는 DMS 세션 쿠키와 그 값을 잡고 프로세서의 URL에 대한 새 HTTP 요청을 구성하고 AJAX 요청 아이디어와 동일한 결과를 얻을 수있는 것처럼 보였습니다. 그런 다음 소수의 사람들에게 효과적이었습니다. 누가 JS를 끈다. –

+0

물론입니다. 귀하의 솔루션은 완벽하게 유효합니다. 난 그냥 과거에 살고, 항상 비 JS 방식으로 올라 오도록 노력 :-) –