The CreatorCon Call for Content is officially open! Get started here.

How to Manage Subscriptions to Notifications in Service Portal

Community Alums
Not applicable

Hi community,

we are currently trying to develop a service portal widget where the user can change the notifications preferences.

We have found solutions to integrate or link to the ServiceNow Notification Preferences page (/notification_preferences.do), but our need is to create a new design that is fully integrated into our Service Portal.

Here you see our solution:

The user just has a checkbox to register or not to a notification preference.

If the check box is checked, it calls the server-side function "enableNotifications (userSysId, notificationSysId, true)"

Otherwise, it calls the server-side function "enableNotifications (userSysId, notificationSysId, false)"

Service script

function enableNotifications(userSysId, notificationSysId, value){

  var notif_message = new GlideRecord("cmn_notif_message");

  notif_message.addQuery("user", userSysId);

  notif_message.addQuery("notification", notificationSysId);

  notif_message.query();

  if (notif_message.getRowCount() == 1) {

      notif_message.next();

      notif_message.send_email = value;

      notif_message.update();

  }

}

The cmn_notif_message.send_email field is correctly updated but the toggle button in Notification Preferences page (/notification_preferences.do) don't change. The notifications are always sent regardless of the stored value 😕

Do you have any idea to resolve our problem ?

Is the modification of table cmn_notif_message a good solution or is there a best way ?

Thanks in advance

Christophe

1 ACCEPTED SOLUTION

Community Alums
Not applicable

Hi Laxmikanth,


thanks for your answer.


In fact, I have take a look in the UI Page "notification_preferences" and found the used field : notification_filter .



Now, we change the value of the notification_filter field in our custom widget and it works fine.


if notification_filter = '', the user receives the email notification.


if notification_filter = 'c1bfa4040a0a0b8b001eeb0f3f5ee961', the user doesn't receive the email notification.



function enableNotifications(userSysId, notificationSysId, value){  


  var notif_message = new GlideRecord("cmn_notif_message");  


  notif_message.addQuery("user", userSysId);  


  notif_message.addQuery("notification", notificationSysId);  


  notif_message.query();  


  if (notif_message.getRowCount() == 1) {  


      notif_message.next();


      if(value)


            notif_message.notification_filter = '';


      else


            notif_message.notification_filter = 'c1bfa4040a0a0b8b001eeb0f3f5ee961';



      notif_message.update();  


  }  


}  



Best Regards


Christophe


View solution in original post

5 REPLIES 5

Thousif S N2
Tera Contributor

@christophes. 

I am looking for similar requirement could you please share the widget?

Regards,

Thousif