Re: [rt-users] Limiting rt-crontool notifications to every n days?
On Tue, Jan 17, 2017 at 1:24 PM, Alex Hallwrote: > Did your JSON-like syntax for > updating fields ever make it into core for 4.4.1? Not yet. -m
Re: [rt-users] Limiting rt-crontool notifications to every n days?
Just download the .bin and move it into /opt/rt4/lib/RT/Action/ModifyCustomField.pm -m On Tue, Jan 17, 2017 at 1:24 PM, Alex Hallwrote: > Thank you, that looks like it'll work. Did your JSON-like syntax for > updating fields ever make it into core for 4.4.1? I found the attachment in > your linked message, but it's a bin file and I'm not sure what to do with > it. > > On Tue, Jan 17, 2017 at 11:17 AM, Matt Zagrabelny > wrote: >> >> Hey Alex, >> >> On Mon, Jan 16, 2017 at 8:18 AM, Alex Hall wrote: >> > Hi all, >> > RT is sending out notifications for old tickets just like we want it to. >> > If >> > a ticket hasn't been updated in seven days and the status is open or >> > new, >> > the owner gets an email every weekday until the ticket is updated. What >> > I'd >> > like to do, though, is have a way of changing that "every weekday" bit >> > for >> > stalled tickets. >> > >> > Instead of warning users every weekday about tickets that are stalled >> > and >> > haven't been touched in a while, I'd like to warn them once or twice a >> > week. >> > I can't run the cron job that seldom, though, or a ticket could go days >> > longer than it should without being picked up. Is there any way to only >> > send >> > an email to a user if the system has not emailed them in N days? I could >> > add >> > a column to the Tickets table for this, or add a new table, but I always >> > like to stay clear of database schema modifications if I can. Besides, I >> > don't know how to interface with a custom table using RT SQL. >> >> I wouldn't alter the schema. >> >> > Is there any way of doing this? >> >> You could use a custom field. Something like "Last Email Notification >> Sent At" or something equally verbose. ;) >> >> Then add that CF to your query about which tickets need to get email >> notifications. >> >> We do essentially what you are asking about. We leverage two things: >> >> 1. rt-crontool can take multiple --action arguments >> 2. A custom (but it could be "cored") scrip action. The scrip action >> is ModifyCustomField. Here is a link to it: >> >> >> http://lists.bestpractical.com/pipermail/rt-devel/2016-December/012601.html >> >> Here is one of our cron jobs that keeps track of when it sent an email >> and also sends the email: >> >> 0 12 * * * /opt/rt4/bin/rt-crontool --log=warning --search >> RT::Search::FromSQL --search-arg ' Queue = "Access Requests" AND >> Status = "activated" AND ( ( "CF.{Renewal Verified At}" IS NULL AND >> Created <= "1 year ago" ) OR ( "CF.{Renewal Verified At}" IS NOT NULL >> AND "CF.{Renewal Verified At}" <= "1 year ago" ) ) AND ( "CF.{Renewal >> Verification Sent At}" IS NULL OR "CF.{Renewal Verification Sent At}" >> <= "20 days ago" ) ' --transaction-type Create --transaction last >> --template "Access Request Renewal Verification" --action >> RT::Action::MailRequestors --action-arg "" --action >> RT::Action::ModifyCustomField --action-arg '{ "name": "Renewal >> Verification Sent At", "operation": "set", "value": "now" }' >> >> -m > > > > > -- > Alex Hall > Automatic Distributors, IT department > ah...@autodist.com
Re: [rt-users] Limiting rt-crontool notifications to every n days?
Thank you, that looks like it'll work. Did your JSON-like syntax for updating fields ever make it into core for 4.4.1? I found the attachment in your linked message, but it's a bin file and I'm not sure what to do with it. On Tue, Jan 17, 2017 at 11:17 AM, Matt Zagrabelnywrote: > Hey Alex, > > On Mon, Jan 16, 2017 at 8:18 AM, Alex Hall wrote: > > Hi all, > > RT is sending out notifications for old tickets just like we want it to. > If > > a ticket hasn't been updated in seven days and the status is open or new, > > the owner gets an email every weekday until the ticket is updated. What > I'd > > like to do, though, is have a way of changing that "every weekday" bit > for > > stalled tickets. > > > > Instead of warning users every weekday about tickets that are stalled and > > haven't been touched in a while, I'd like to warn them once or twice a > week. > > I can't run the cron job that seldom, though, or a ticket could go days > > longer than it should without being picked up. Is there any way to only > send > > an email to a user if the system has not emailed them in N days? I could > add > > a column to the Tickets table for this, or add a new table, but I always > > like to stay clear of database schema modifications if I can. Besides, I > > don't know how to interface with a custom table using RT SQL. > > I wouldn't alter the schema. > > > Is there any way of doing this? > > You could use a custom field. Something like "Last Email Notification > Sent At" or something equally verbose. ;) > > Then add that CF to your query about which tickets need to get email > notifications. > > We do essentially what you are asking about. We leverage two things: > > 1. rt-crontool can take multiple --action arguments > 2. A custom (but it could be "cored") scrip action. The scrip action > is ModifyCustomField. Here is a link to it: > > http://lists.bestpractical.com/pipermail/rt-devel/2016- > December/012601.html > > Here is one of our cron jobs that keeps track of when it sent an email > and also sends the email: > > 0 12 * * * /opt/rt4/bin/rt-crontool --log=warning --search > RT::Search::FromSQL --search-arg ' Queue = "Access Requests" AND > Status = "activated" AND ( ( "CF.{Renewal Verified At}" IS NULL AND > Created <= "1 year ago" ) OR ( "CF.{Renewal Verified At}" IS NOT NULL > AND "CF.{Renewal Verified At}" <= "1 year ago" ) ) AND ( "CF.{Renewal > Verification Sent At}" IS NULL OR "CF.{Renewal Verification Sent At}" > <= "20 days ago" ) ' --transaction-type Create --transaction last > --template "Access Request Renewal Verification" --action > RT::Action::MailRequestors --action-arg "" --action > RT::Action::ModifyCustomField --action-arg '{ "name": "Renewal > Verification Sent At", "operation": "set", "value": "now" }' > > -m > -- Alex Hall Automatic Distributors, IT department ah...@autodist.com
Re: [rt-users] Limiting rt-crontool notifications to every n days?
Hey Alex, On Mon, Jan 16, 2017 at 8:18 AM, Alex Hallwrote: > Hi all, > RT is sending out notifications for old tickets just like we want it to. If > a ticket hasn't been updated in seven days and the status is open or new, > the owner gets an email every weekday until the ticket is updated. What I'd > like to do, though, is have a way of changing that "every weekday" bit for > stalled tickets. > > Instead of warning users every weekday about tickets that are stalled and > haven't been touched in a while, I'd like to warn them once or twice a week. > I can't run the cron job that seldom, though, or a ticket could go days > longer than it should without being picked up. Is there any way to only send > an email to a user if the system has not emailed them in N days? I could add > a column to the Tickets table for this, or add a new table, but I always > like to stay clear of database schema modifications if I can. Besides, I > don't know how to interface with a custom table using RT SQL. I wouldn't alter the schema. > Is there any way of doing this? You could use a custom field. Something like "Last Email Notification Sent At" or something equally verbose. ;) Then add that CF to your query about which tickets need to get email notifications. We do essentially what you are asking about. We leverage two things: 1. rt-crontool can take multiple --action arguments 2. A custom (but it could be "cored") scrip action. The scrip action is ModifyCustomField. Here is a link to it: http://lists.bestpractical.com/pipermail/rt-devel/2016-December/012601.html Here is one of our cron jobs that keeps track of when it sent an email and also sends the email: 0 12 * * * /opt/rt4/bin/rt-crontool --log=warning --search RT::Search::FromSQL --search-arg ' Queue = "Access Requests" AND Status = "activated" AND ( ( "CF.{Renewal Verified At}" IS NULL AND Created <= "1 year ago" ) OR ( "CF.{Renewal Verified At}" IS NOT NULL AND "CF.{Renewal Verified At}" <= "1 year ago" ) ) AND ( "CF.{Renewal Verification Sent At}" IS NULL OR "CF.{Renewal Verification Sent At}" <= "20 days ago" ) ' --transaction-type Create --transaction last --template "Access Request Renewal Verification" --action RT::Action::MailRequestors --action-arg "" --action RT::Action::ModifyCustomField --action-arg '{ "name": "Renewal Verification Sent At", "operation": "set", "value": "now" }' -m
[rt-users] Limiting rt-crontool notifications to every n days?
Hi all, RT is sending out notifications for old tickets just like we want it to. If a ticket hasn't been updated in seven days and the status is open or new, the owner gets an email every weekday until the ticket is updated. What I'd like to do, though, is have a way of changing that "every weekday" bit for stalled tickets. Instead of warning users every weekday about tickets that are stalled and haven't been touched in a while, I'd like to warn them once or twice a week. I can't run the cron job that seldom, though, or a ticket could go days longer than it should without being picked up. Is there any way to only send an email to a user if the system has not emailed them in N days? I could add a column to the Tickets table for this, or add a new table, but I always like to stay clear of database schema modifications if I can. Besides, I don't know how to interface with a custom table using RT SQL. Is there any way of doing this? I wouldn't mind lowering active ticket warnings to every other day as well, if I could, so this would help multiple places. Thanks for any thoughts. -- Alex Hall Automatic Distributors, IT department ah...@autodist.com