[Eg-newdevs] Action trigger for Hemlock push notifications

Morgan, Michele mmorgan at noblenet.org
Thu Jan 23 11:31:23 EST 2025


Thanks for the video, Dan! I was finally able to watch it through to the
end. It's really great reference material!

As I reported earlier, I *did *have success using the opt-in setting in an
action trigger definition using the checkout.due hook.

The difference in my test was the value field in actor.usr_setting was set
to the string *true*.

SELECT * FROM actor.usr_setting WHERE name =
'hemlock.push_notification_data'

idusrnamevalue

732934
2639287
hemlock.push_notification_data true

I had added the opt-in setting to the user in the staff client. The
screenshot below shows all the opt-in action trigger settings on the system
where I tested:

[image: image.png]

Adding the setting this way assigns the string *true *as the setting value.

Executing this snippet from the query shown at 19:35 in your screencast:

SELECT
 "aus".id AS "id",
 "aus".name AS "name",
 "aus".usr AS "usr",
 "aus".value AS "value"
FROM
 actor.usr_setting AS "aus"
WHERE
 "aus".name = 'hemlock.push_notification_data'
 --AND ("aus".usr = ("circ".usr))
 AND "aus".value = 'true'

returns the row for user 2639287 from actor.usr_setting.

So setting the value for the hemlock.push_notification_data to the string *true
*should work for action triggers using passive hooks.

I have not tested an active hook like hold notifications, but I don't
believe the opt-in setting will work there. If I'm reading this right,
opt-in is ignored for active hooks:

https://git.evergreen-ils.org/?p=Evergreen.git;a=blob;f=Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger.pm;h=816410a7ccb393c132c2658dd89a2bfbef7cdfc3;hb=HEAD#l127

--
Michele M. Morgan, Systems Support Specialist
North of Boston Library Exchange, Danvers Massachusetts
mmorgan at noblenet.org



On Wed, Jan 22, 2025 at 5:48 PM Terran McCanna via Eg-newdevs <
eg-newdevs at list.evergreen-ils.org> wrote:

> Excellent video, Dan! Thank you so much for that! I hope you don't mind, I
> added it to the relevant New Devs meeting page so that it's easy to refer
> back to.
>
>
> On Fri, Jan 17, 2025 at 2:05 PM Dan Briem via Eg-newdevs <
> eg-newdevs at list.evergreen-ils.org> wrote:
>
>> I tested the action trigger with the opt-in feature and a custom filter
>> (recording here: https://youtu.be/n--asMO61g8).
>>
>> Granted, I haven't been at the meetings, so hopefully I didn't
>> misunderstand what we were trying to do (or how the Hemlock setting works).
>>
>> The opt-in setting feature didn't work for me because I used a string
>> (I'm assuming it is) and Evergreen checks for a "true" boolean value. When
>> I ran it as a custom filter, it worked.
>>
>> As an alternative, maybe Hemlock can create another user setting that's a
>> boolean in addition to the token so we can use the opt-in setting feature
>> instead? This would be good for active hooks, like hold.available. Or,
>> maybe on the Evergreen side, the opt-in setting feature could be expanded
>> to include conditions or something like that (not sure if that's the way to
>> go, though).
>>
>> On Thu, Jan 16, 2025 at 10:52 AM Gina Monti via Eg-newdevs <
>> eg-newdevs at list.evergreen-ils.org> wrote:
>>
>>> Thanks so much, Michele!  I'll give this a shot and will report back.
>>>
>>> On Thu, Jan 16, 2025 at 10:13 AM Morgan, Michele <mmorgan at noblenet.org>
>>> wrote:
>>>
>>>> After Gina shared their experiences with setting up a Hemlock push
>>>> notifications action trigger at the meeting yesterday, I wondered again
>>>> about using the opt-in functionality built into the action triggers to
>>>> limit which patrons receive the notifications, rather than a custom filter.
>>>> We have several action triggers running successfully in production using
>>>> user settings to allow patrons to opt-in to certain notices, so I wasn't
>>>> sure what would be different with this one.
>>>>
>>>> I took a little time to try setting one up on one of our test systems
>>>> using the user setting type in the '*Opt-in Setting Type*' field in
>>>> the event definition. Long story short, it worked for me! No custom filter
>>>> was necessary, and events were only created for the patron with the user
>>>> setting set.
>>>>
>>>> To set up the definition, I cloned one of our existing overdue
>>>> notification triggers, saying *Yes to cloning the Environment.* Then I
>>>> edited the definition to use the Hemlock push notifications user setting.
>>>>
>>>> These are the fields from the event definition that worked:
>>>>
>>>> Owning Library: NOBLE *(Consortium)*
>>>> Name: Hemlock push notifications
>>>> Hook: checkout.due
>>>> Enabled: true
>>>> Processing Delay: 1 day
>>>> Processing Delay Context Field: due_date
>>>> Processing Group Context Field: usr
>>>> Reactor: *ProcessTemplate* *(for testing, so the event_output will be
>>>> generated, but nothing else will happen. For production, this would be
>>>> CallHTTP)*
>>>> Validator: CircIsOpen
>>>> Event Repeatability Delay: *00:01:00* *(for testing, allowing
>>>> duplicate events to be created after 1 minute for subsequent runs of the
>>>> trigger)*
>>>> Granularity: *hemlock_push* *(for testing: to control when the trigger
>>>> runs, can be used for production as well)*
>>>> Max Event Validity Delay: 10 days
>>>> Opt-In Setting Type: *hemlock.push_notification_data*
>>>> Opt-In User Field: *usr*
>>>> Retention Interval: 6 mons
>>>> *Template:* *(from Ken's
>>>> documentation: https://github.com/kenstir/hemlock-docs/blob/main/docs/pn-setup-guide/configure-evergreen.md#sample-template
>>>> <https://github.com/kenstir/hemlock-docs/blob/main/docs/pn-setup-guide/configure-evergreen.md#sample-template>)*
>>>> Context Bib Path: target_copy.call_number.record
>>>> Context Item Path: target_copy
>>>> Context Library Path: circ_lib
>>>> Context User Path: usr
>>>>
>>>> This command will run only this trigger based on its granularity:
>>>>
>>>> /openils/bin/action_trigger_runner.pl --osrf-config
>>>> /openils/conf/opensrf_core.xml --process-hooks --run-pending --granularity
>>>> hemlock_push --granularity-only
>>>>
>>>> Running this trigger will look at circulations due between one day and
>>>> ten days ago. On my test system, there are seven open circulations due in
>>>> this time period. I set the user setting hemlock.push_notification_data for
>>>> one user linked to two of those checkouts. Only two events were created,
>>>> linked to one row that was created in event_output.
>>>>
>>>> I removed the user setting from the patron and ran the trigger again
>>>> after one minute. No events were created. Here is the log entry showing the
>>>> criteria for gathering the circs:
>>>>
>>>> [2025-01-16 14:35:46] open-ils.trigger
>>>> [INFO:307910:CStoreEditor.pm:155:173703694530637333] editor[1|0] request
>>>> en-US open-ils.cstore.direct.action.circulation.id_list.atomic
>>>> [{"checkin_time":null,"-and":[{"+atev":{"id":null}},
>>>> *{"-exists":{"from":"aus","where":{"name":"hemlock.push_notification_data","value":"true","usr":{"=":{"+circ":"usr"}}}}}*],"due_date":{"between":["2025-01-06
>>>> 14:35:46+0000","2025-01-15
>>>> 14:35:46+0000"]},"circ_lib":{"in":{"where":{"id":1},"select":{"aou":[{"transform":"actor.org_unit_descendants","column":"id","result_field":"id"}]},"from":"aou"}},"-or":[{"stop_fines":["MAXFINES"]},{"stop_fines":null}]},{"join":{"atev":{"type":"left","fkey":"id","filter":{"event_def":585,"start_time":{">":"2025-01-16
>>>> 14:34:46+0000"}},"field":"target"}}}]
>>>>
>>>> So the opt-in setting should definitely work to limit events to patrons
>>>> with the setting, there should be no need for a custom filter.
>>>>
>>>> I hope this is helpful! We're definitely interested in this feature
>>>> also!
>>>>
>>>> Michele
>>>>
>>>> --
>>>> Michele M. Morgan, Systems Support Specialist
>>>> North of Boston Library Exchange, Danvers Massachusetts
>>>> mmorgan at noblenet.org
>>>>
>>>>
>>>
>>> --
>>>
>>> Gina Monti (she/her)
>>> Evergreen Systems Manager
>>> Bibliomation, Inc.
>>> (203) 577-4070 ext. 109
>>> English, American Sign Language
>>> _______________________________________________
>>> Eg-newdevs mailing list
>>> Eg-newdevs at list.evergreen-ils.org
>>> http://list.evergreen-ils.org/cgi-bin/mailman/listinfo/eg-newdevs
>>>
>>
>>
>> --
>> Dan Briem
>> Harrison Public Library
>> 2 Bruce Ave. Harrison, NY 10528
>> (914) 835-0324
>> harrisonpl.org <https://www.harrisonpl.org>
>> _______________________________________________
>> Eg-newdevs mailing list
>> Eg-newdevs at list.evergreen-ils.org
>> http://list.evergreen-ils.org/cgi-bin/mailman/listinfo/eg-newdevs
>>
> _______________________________________________
> Eg-newdevs mailing list
> Eg-newdevs at list.evergreen-ils.org
> http://list.evergreen-ils.org/cgi-bin/mailman/listinfo/eg-newdevs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.evergreen-ils.org/pipermail/eg-newdevs/attachments/20250123/c7c7822f/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 31139 bytes
Desc: not available
URL: <http://list.evergreen-ils.org/pipermail/eg-newdevs/attachments/20250123/c7c7822f/attachment-0001.png>


More information about the Eg-newdevs mailing list