# Message Handler Scripts
As described in section Groovy Scripts, these are scripts executed whenever IntegrationM receives a new message. In the local repository they are stored at /integrationm/scripts
, and in the server machine they are deplyed at /etc/integrationm/scripts
.
In this section we will describe the arguments passed to every script, and we will give a few examples.
# Script Argument
A message script handler will receive an instance of a RecordmMsg (opens new window) java object with the information about the event that generated it. The message has the following format:
{
"product": "recordm",
"user": "admin",
"action": "add",
"type": "Employee",
"instance": {...}
}
A complete list of the methods and operations supported by this message argument can be found at RecordmMsg (opens new window) page.
# product
It is the name of the server which generated this event. The supported string values are:
- recordm
- confm
These values indicate that the messages come from the the servers RecordM and DeviceM respectively.
# user
It is the user that performed the action which generated this message. For example, when a user creates a record on the frontend application, this field will have the string username of the user.
It only allows the username of the users registered in UserM.
# action
The action field indicates the action performed on the server that generated the event. The supported string values are:
- add
- update
- delete
# type
It is the name of the definition on RecordM upon which the operation was made.
# instance
It is a Java object (opens new window) which represent the RecordM record that was created/deleted/updated.
# Example
the file: /integrationm/scripts/changeDate.groovy
if (msg.type != "Countries Series" || msg.product != "recordm" || msg.action != "add") return
log.info("Updating the date if necessary")
long date = msg.value("Year",Long)
long now = System.currentTimeMillis()
def response;
if (date > now) {
def instanceId = msg.getId()
response = recordm.update("Countries Series",instanceId,["Year":now])
log.info("THE RESULT OF THE UPDATE IS: ${response.ok()}")
}
Question to the reader: What is the code doing ?
The following image shows the log of the script, which can be seen using the following commands:
ssh <server_name>@cultofbits.com
im-log
