2. The Incentive Server (IS) offers smart incentivizations
framework for sending incentives to single and multiple
users, across all of the applications of the SmartSociety
project.
The IS uses SmartCom Communication API in order to send
the incentives to the peers and the collectives, using
different communication channels.
Functionality
2
3. Usage Example
3
You can find a nice exercise that you can use in order to
create “Hello World” program here.
This will give you a better understanding about the usage of
the Incentive Server, and some of its features.
4. Features
4
There are three types of incentives you can send:
Message – for incentive with message of your choice.
Preconfigured – for sending a predefined incentives.
Reminder – for sending a reminder for a collective, with the
option of invalidating peers from it.
Incentives can be sent to single peers and whole collectives
(Message & Preconfigured) or even to only a part of a
collective (Reminder only).
The incentives can be sent at one or more moments of
your choice, or at a time which the IS decides for you.
5. Interfaces, endpoints and resources
exposed
5
Get all existing incentives
Postfix: /api/incentive/
Method: HTTP GET or using the web GUI.
Description: This call returns all the incentives that was
created in the Incentive Server (IS).
Add new incentive
Postfix: /api/incentive/
Method: HTTP POST or using the web GUI.
Description: Adds new incentive to the IS.
6. Interfaces, endpoints and resources
exposed (cont.)
6
Collective reminder
Postfix: /collectiveReminder/
Method: HTTP POST or using the web GUI.
Description: Generates reminder request for a collective with a
given id, that will be sent at given time with a given message.
Invalidate from collective
Postfix: /invalidate/:collective_id/
Method: HTTP POST or using the web GUI.
Description: Invalidate peers from collective that is about to be
reminder. This call has a parameter 'collective_id' that should
be replaced with the collective's identifier.
7. Interfaces, endpoints and resources
exposed (cont.)
7
Send incentive to a collective or a peer
Postfix: /sendIncentive/
Method: HTTP POST or using the web GUI.
Description: This call is generalization of the collective
reminder call, however it supports other types of messages
and does not support invalidation from collectives.
This call generates incentive request for a collective or a
peer, with a certain id.
You can send an incentive of your own or use a preconfigured
one. You can also choose at what time(s) you want the
incentive to be sent, or let the IS choose it for you.
8. Interfaces, endpoints and resources
exposed (cont.)
8
Change timeout
Postfix: /timeout/
Method: Using the web GUI.
Description: Changes the timeout value defined in the IS.
Get incentive for a specific user
Postfix: /getIncUser/
Method: HTTP POST or using the web GUI.
Description: This call is independent and relies on a stream of
events. It can return 'Staying' if the IS thinks the user is going
to stay or an incentive message otherwise.
The full API of the Incentive Server can be found here.
9. Implementation
9
We are using Python as our main programming language,
in order to perform the major tasks and the data analysis
efficiently.
We are using Django framework as the front-end for our
Incentive Server, which is also providing our REST API.
We are using Java in a program that our server uses, that
uses the SmartCom library and acts as a communication
adapter between the IS which is written in Python and the
users of the SmartSociety applications.
10. Repository
10
The source code of the Incentive Server can be found in the
GitLab Repository:
https://gitlab.com/smartsociety/IncentiveServer