我是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);
我的问题是:
如果您想要我的更多信息,或者我遗失任何东西,请告诉我。
答案 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跟踪事件,还必须弄清楚如何跟踪会话。有点令人困惑,但是一旦您明白了,它就会变得有意义。