如何跟踪unomi服务器中的事件,并访问其余的API

时间:2018-03-01 13:12:26

标签: apache apache-karaf karaf

我是Unomi的新手,

  • 我安装了unomi-1.2.0-incubating并启动了成功运行的karaf服务器。

  • 我有弹性搜索安装并在群集名称contextElasticSearch。

  • 下工作
  • 我在我的前端网站中集成了context.js以从unomi加载它, 并通过使用如下的contectParams成功调用unomi context.json来触发页面访问事件作为主页:

    function contextRequest(successCallback,errorCallback,payload){     var data = JSON.stringify(payload);     //如果我们还没有会话ID,请生成一个     var sessionId = cxs.sessionId || generateUUID();     var url ='http://localhost:8181/context.json?sessionId='+ sessionId;     var xhr = new XMLHttpRequest();     var isGet = data.length< 100;     if(isGet){         xhr.withCredentials = true;         xhr.open(“GET”,url +“& payload =”+ encodeURIComponent(data),true);     } else if(xhr中的“withCredentials”){         xhr.open(“POST”,url,true);         xhr.withCredentials = true;     } else if(typeof XDomainRequest!=“undefined”){         xhr = new XDomainRequest();         xhr.open(“POST”,url);     }     xhr.onreadystatechange = function(){         if(xhr.readyState!= 4){             返回;         }         if(xhr.status == 200){             var response = xhr.responseText? JSON.parse(xhr.responseText):undefined;             if(response){                 cxs.sessionId = response.sessionId;                 successCallback(响应);             }         } else {             console.log(“contextserver:”+ xhr.status +“ERROR:”+ xhr.statusText);             if(errorCallback){                 errorCallback(XHR);             }         }     }; } var scope ='unomipages'; var itemId = btoa(window.location.href); var source = {   itemType:'page',   范围:范围,   itemId:itemId,   属性:{       url:window.location.href   } }; var contextPayload:any = {   来源:来源,   事件:[     {       eventType:'pageVisitEvent',       范围:范围,       来源:来源     }   ]   requiredProfileProperties:[
      ] };

    contextRequest(函数(响应:任何){
    的console.log(JSON.stringify(响应)); },function(){},contextPayload);

我的问题是:

  • 如何跟踪unomi服务器中的事件,并访问其余的api?

如果您想要我的更多信息,或者我遗失任何东西,请告诉我。

1 个答案:

答案 0 :(得分:2)

我们刚刚在Unomi网站上发布了一个教程,可能会对您有所帮助,请查看here。而且,我实际上问了一个与邮件列表类似的问题,您可以查看here。我将尝试在网站上添加一个事件示例。

要访问您的REST API,您想使用http://localhost:8181/cxs。您可以阅读REST API文档here,并使用上面的URL作为这些端点的基础。您还需要进行基本身份验证(默认用户名和密码为karaf和karaf)。

要跟踪事件,您将需要创建一个配置文件和一个会话。这是一些证明这一点的Python:

from requests import post
from datetime import datetime
"""
Make a request to Unomi to create a profile with ID = 10
"""
profile = {
    "itemId":"10",
    "itemType":"profile",
    "version":None,
    "properties": {
        "firstName": "John",
        "lastName": "Smith"
    },
    "systemProperties":{},
    "segments":[],
    "scores":{},
    "mergedWith":None,
    "consents":{}
}

session = {
    "itemId": "10",
    "itemType":"session",
    "scope":None,
    "version":1,
    "profileId":profile_id,
    "profile": profile,
    "properties":{},
    "systemProperties":{},
    "timeStamp": datetime.now().strftime("%Y-%m-%dT%H:%M:%SZ")
}

# Create or update profile
r = post('http://localhost:8181/cxs/profiles/',
auth=('karaf','karaf'),
json =profile)
print(r)
print(r.content)


# Create session
r = post('http://localhost:8181/cxs/profiles/sessions/10',
    auth=('karaf', 'karaf'),
    json=session)

print(r)
print(r.content)

关于跟踪事件本身,请考虑使用REST API(实际上在Unomi中有一个“事件收集器”)的Python示例:

j

son = {
    "eventType": "view",
    "scope": "ACMESPACE",
    "source": {
        "itemType": "site",
        "scope": "ACMESPACE",
        "itemId": "c4761bbf-d85d-432b-8a94-37e866410375"
    },
    "target": {
        "itemType": "page",
        "scope": "ACMESPACE",
        "itemId": "b6acc7b3-6b9d-4a9f-af98-54800ec13a71",
        "properties": {
            "pageInfo": {
            "pageID": "b6acc7b3-6b9d-4a9f-af98-54800ec13a71",
            "pageName": "Home",
            "pagePath": "/sites/ACMESPACE/home",
            "destinationURL": "http://localhost:8080/sites/ACMESPACE/home.html",
            "referringURL": "http://localhost:8080/",
            "language": "en"
        },
        "category": {},
        "attributes": {}
      }
    }
}

session_id = "aSessionId"
session_id = "aProfileId"

r = requests.post('{endpoint}/eventcollector?sessionId={session_id}'\
            .format(endpoint=ENDPOINT, profile_id=profile_id),
        auth=('karaf', 'karaf'),
        json=json)

花一点时间来了解配置文件,会话和事件之间的关系。活动实际上与会话和与配置文件相关的会话有关。因此,要使用REST API跟踪事件,还必须弄清楚如何跟踪会话。有点令人困惑,但是一旦您明白了,它就会变得有意义。