This repository has been archived by the owner on May 3, 2022. It is now read-only.
forked from segmentio/functions-library
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhandler.js
75 lines (70 loc) · 1.9 KB
/
handler.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/**
* Please do not delete [used for Intellisense]
* @param {ServerRequest} request The incoming webhook request
* @param {Object.<string, any>} settings Custom settings
* @return void
*/
async function onRequest(request, settings) {
let event = request.json()
if (event.name == 'Completed Challenge') {
createChallengeCompletedEvent(event)
} else if(event.name == 'Earned Badge') {
createEarnedBadgeEvent(event)
} else if(event.name == 'Joined AdvocateHub Group') {
createJoinedGroupEvent(event)
} else if (event.name == 'Advocate Joined') {
createAdvocateJoinedEvent(event)
} else {
console.log("Unsupported Event: " + event.name);
}
}
function createChallengeCompletedEvent(event) {
Segment.track({
event: 'Challenge Completed',
userId: event.contact.email,
properties: {
name: event.challenge.name,
company: event.contact.company,
points: event.points,
challengeId: event.challenge.id,
challengeType: event.challenge.challenge_type
}
})
}
function createEarnedBadgeEvent(event) {
Segment.track({
event: 'Badge Earned',
userId: event.contact.email,
properties: {
name: event.parameters.name,
description: event.parameters.description,
points: event.points,
sourceName: event.source_name,
sourceType: event.source_type
}
})
}
function createJoinedGroupEvent(event) {
Segment.track({
event: 'Group Joined',
userId: event.contact.email,
properties: {
group: event.parameters.group,
groupId: event.parameters.group_id,
groupType: event.parameters.type,
points: event.points
}
})
}
function createAdvocateJoinedEvent(event) {
Segment.track({
event: 'Advocated Joined',
userId: event.contact.email,
properties: {
type: event.type,
sourceName: event.source_name,
points: event.points,
sourceType: event.source_type
}
})
}