Creating custom notifications

Hi!

I want to create a custom notification when something happens in my plugin. I can see there is a custom notification type but I’m unsure about how to use it.

Something like:

data = {title: 'some custom event happened'}
Notification.create!(user_id: 1, notification_type: 14, data: data.to_json)

I can create them but they show ‘undefined’:

Can someone please point me in the right direction? Any help much appreciated…

My first guess is that you haven’t defined the Notification type and throws an undefined error somewhere:

https://github.com/discourse/discourse/blob/master/app/models/notification.rb#L31

Guess #2 is that the I18n text hasn’t been defined in client.en.yml.

Depending on what you want to share with the user, I’ve found it’s sometimes better to send a PM and then spell out what happened in more detail.

PostCreator.create(
    Discourse.system_user,
    target_usernames: new_user.username,
    archetype: Archetype.private_message,
    subtype: TopicSubtype.system_message,
    title: I18n.t('translations.location'}),
    raw: I18n.t('translations.location'})
)

Edit: Just realized there’s a custom notification type (14) which you are using. So #1 is out.

8 Likes

I was thinking a private message would be a good idea also. Thanks for that!

1 Like