Difference between revisions of "Generate Notifications Only for Employee Comments"
m (New page: __NOTOC__ Category:Customizations Category:Incidents Category:Notifications Category:Problems Category:r6 Category:r11 Category:Requests [[Category:Schema Chang...) |
m (Script has been simplified to a 1 step process.) |
||
| Line 20: | Line 20: | ||
{{Create Spell Script}} | {{Create Spell Script}} | ||
| − | + | This script is triggered on the Act_Log table and attaches an event to the ticket. The script assumes that the Employee Access Type is associated with the Employee Interface and that it is also set as the default Access Type. | |
| − | <source lang="javascript">alg:: | + | <source lang="javascript">alg::zemp_comment(...) { |
if (analyst.access_type == 2405 || is_null(analyst.access_type)) { | if (analyst.access_type == 2405 || is_null(analyst.access_type)) { | ||
| − | send_wait(0, | + | object attached_events_table_record, group_leader; |
| − | + | string z_evt; | |
| − | + | ||
| − | + | z_evt = "evt:400005"; | |
| − | + | ||
| − | + | if (!is_null(call_req_id.assignee)) { | |
| + | send_wait(0, top_object(), "get_co_group"); | ||
| + | if (msg_error()) { | ||
| + | logf(ERROR, "%s %s - %s", call_req_id.type.sym, call_req_id.ref_num, msg[0]); | ||
| + | } | ||
| + | group_leader = msg[0]; | ||
| + | send_wait(0, top_object(), "call_attr", "atev", "get_new_dob", NULL, NULL, group_leader); | ||
| + | if (msg_error()) { | ||
| + | logf(ERROR, "%s %s - %s", call_req_id.type.sym, call_req_id.ref_num, msg[0]); | ||
| + | } | ||
| + | attached_events_table_record = msg[0]; | ||
| + | attached_events_table_record.obj_id = call_req_id; | ||
| + | attached_events_table_record.event_tmpl = z_evt; | ||
| + | send_wait(0, group_leader, "checkin"); | ||
| + | if (msg_error()) { | ||
| + | logf(ERROR, "error attaching event %s to %s %s - %s", z_evt, call_req_id.type.sym, call_req_id.ref_num, msg[0]); | ||
| + | } else { | ||
| + | logf(SIGNIFICANT, "successfully attached event %s to %s %s", z_evt, call_req_id.type.sym, call_req_id.ref_num); | ||
| + | } | ||
} | } | ||
} | } | ||
| Line 80: | Line 98: | ||
=== Step 2. Create the triggers === | === Step 2. Create the triggers === | ||
| − | This step is to create the | + | This step is to create the trigger that will initiate the script. The methods used to implement the trigger vary based on the Service Desk release. |
''For r11.x releases'' triggers are created via the [[Schema Designer]] utility. Add the following code as a [[Site-Defined Trigger]] to the '''[[Act Log Table|alg (Request Activity Log)]]''' table. | ''For r11.x releases'' triggers are created via the [[Schema Designer]] utility. Add the following code as a [[Site-Defined Trigger]] to the '''[[Act Log Table|alg (Request Activity Log)]]''' table. | ||
| − | <source lang="javascript">POST_VALIDATE | + | <source lang="javascript">POST_VALIDATE zemp_comment() 113 FILTER(type{-> 'LOG'});</source> |
| − | + | ||
| − | + | ||
| − | + | ||
| Line 92: | Line 107: | ||
<source lang="javascript">alg { | <source lang="javascript">alg { | ||
TRIGGERS { | TRIGGERS { | ||
| − | POST_VALIDATE | + | POST_VALIDATE zemp_comment() 113 FILTER(type{-> 'LOG'}); |
}; | }; | ||
| − | }; | + | };</source> |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | </source> | + | |
| − | + | ||
=== Step 3. Publish the Schema changes === | === Step 3. Publish the Schema changes === | ||
{{Publish Schema Change}} | {{Publish Schema Change}} | ||
Revision as of 15:52, 5 November 2008
To discuss or ask questions about this article, select the discussion tab above.
Overview
This article provides instructions for generating a notification when an Employee adds a comment to a Request, Incident, or Problem. It requires two sets of triggers and scripts, an event, and at least one Multiple Notification Macro.
If implementing this customization it is recommended that you disable the Log Comment Activity Notification.
Procedures
Step 1. Create the scripts
A script is created as an .spl file and placed in the $NX_ROOT/site/mods/majic directory. When the Service Desk service starts, the contents of the majic directory are processed and cached. You can use any naming scheme you like for your .spl file, but it is recommended that the file be preceded with a 'z' for easy identification as a custom file (eg zMyCompany.spl, zcr_scripts.spl, zMyScripts.spl).
This script is triggered on the Act_Log table and attaches an event to the ticket. The script assumes that the Employee Access Type is associated with the Employee Interface and that it is also set as the default Access Type. <source lang="javascript">alg::zemp_comment(...) { if (analyst.access_type == 2405 || is_null(analyst.access_type)) { object attached_events_table_record, group_leader; string z_evt;
z_evt = "evt:400005";
if (!is_null(call_req_id.assignee)) { send_wait(0, top_object(), "get_co_group"); if (msg_error()) { logf(ERROR, "%s %s - %s", call_req_id.type.sym, call_req_id.ref_num, msg[0]); } group_leader = msg[0]; send_wait(0, top_object(), "call_attr", "atev", "get_new_dob", NULL, NULL, group_leader); if (msg_error()) { logf(ERROR, "%s %s - %s", call_req_id.type.sym, call_req_id.ref_num, msg[0]); } attached_events_table_record = msg[0]; attached_events_table_record.obj_id = call_req_id; attached_events_table_record.event_tmpl = z_evt; send_wait(0, group_leader, "checkin"); if (msg_error()) { logf(ERROR, "error attaching event %s to %s %s - %s", z_evt, call_req_id.type.sym, call_req_id.ref_num, msg[0]); } else { logf(SIGNIFICANT, "successfully attached event %s to %s %s", z_evt, call_req_id.type.sym, call_req_id.ref_num); } } } }</source>
The second script is triggered when the update to the string2 field is initiated by the previous script. Again, you can change this to any stringX field as needed. Once the condition for notification is met, an event is attached. The event will trigger the macro that will send the notification. <source lang="javascript">cr::myscript2(...){ send_wait( 0, this, "get_attr_vals",1,"string2"); if (msg_error()) { logf(ERROR, "error getting string2 for %s %s - %s", type.sym, ref_num, msg[0]); return; } string z_string2; z_string2 = msg[3]; if (z_string2 == 'LOG') { string z_evt; // Enter the persid of the event to get attached to the ticket. z_evt = "evt:400001"; // Clear string2 send_wait(0, this, "call_attr", "string2", "set_val", "", "SURE_SET"); if (msg_error()) { logf(ERROR, "error clearing string2 on %s %s - %s", type.sym, ref_num, msg[0]); return; } else { logf(SIGNIFICANT, "successfully cleared string2 on %s %s", type.sym, ref_num); } // Attach event that generates notication object group_leader; object attached_events_table_record; send_wait(0, top_object(), "get_co_group"); if (msg_error()) { logf(ERROR, "%s %s - %s", type.sym, ref_num, msg[0]); } group_leader = msg[0]; send_wait(0, top_object(), "call_attr", "atev", "get_new_dob", NULL, NULL, group_leader); if (msg_error()) { logf(ERROR, "%s %s - %s", type.sym, ref_num, msg[0]); } attached_events_table_record = msg[0]; attached_events_table_record.obj_id = persistent_id; attached_events_table_record.event_tmpl = z_evt; send_wait(0, group_leader, "checkin"); if (msg_error()) { logf(ERROR, "error attaching event %s to %s %s - %s", z_evt, type.sym, ref_num, msg[0]); return; } else { logf(SIGNIFICANT, "successfully attached event %s to %s %s", z_evt, type.sym, ref_num); } } }</source>
Step 2. Create the triggers
This step is to create the trigger that will initiate the script. The methods used to implement the trigger vary based on the Service Desk release.
For r11.x releases triggers are created via the Schema Designer utility. Add the following code as a Site-Defined Trigger to the alg (Request Activity Log) table. <source lang="javascript">POST_VALIDATE zemp_comment() 113 FILTER(type{-> 'LOG'});</source>
For older releases triggers are made by creating a .mod file and placing it in the $NX_ROOT/site/mods/majic directory. Name the .mod anything you like, but it is recommended that it be preceded with a 'z'.
<source lang="javascript">alg {
TRIGGERS {
POST_VALIDATE zemp_comment() 113 FILTER(type{-> 'LOG'});
};
};</source>
Step 3. Publish the Schema changes
The methods used to publish schema changes vary based on the Service Desk release.
For r11.x releases, follow these steps:
- Save your Schema changes
- Stop the Service Desk service
- Run pdm_publish from a command line (Applicable if you made changes via WSP)
- Start the Service Desk service
For older releases recycle the Service Desk service.