Kogno
Search
⌃K

recurring_notification

This block will be executed when a user has granted or removed permissions to receive recurring notifications from Messenger.

recurring_notification(event=Enum(:granted, :removed), &block)

Platforms

Platform
Supported
Messenger
WhatsApp
Telegram

Recurring notification request

In order to make this event occurs, a notification request must be send to the user by calling the method recurring_notification_request().
Read more about Messenger recurring notifications in the official documentation.

Usage

class MainContext < Conversation
def actions
recurring_notification :granted do |data|
@reply.text "Thanks for subscribing to #{data[:frecuency]} notifications" end
recurring_notification :removed do |data|
# Here you can handle the removed permission event
end
payload :get_started do
@reply.text "Welcome!"
@reply.notification.recurring_notification_request(
{
title: "Whould you like to receive weekly notifications from us?",
image_url: "https://previews.123rf.com/images/aquir/aquir1909/aquir190907932/129839413-bot%C3%B3n-de-suscripci%C3%B3n-suscr%C3%ADbete-letrero-rojo-redondeado-suscribir.jpg?fj=1",
payload: :subscribe,
frequency: :weekly,
reoptin: true
}
)
end
end
end

Data param example

On permissions granted

{
token: "XXXXXXXXXXXXXXXXXXXXXX",
frecuency: "WEEKLY",
expires_at: "2023-03-21 12:27:09 UTC",
token_status: "NOT_REFRESHED",
timezone: "UTC",
status: "active"
}

On permissions removed

{
token: "XXXXXXXXXXXXXXXXXXXXXX",
frecuency: "WEEKLY",
expires_at: "2023-03-21 12:27:09 UTC",
token_status: "NOT_REFRESHED",
timezone: null,
status: "stopped"
}

User's Subscription Status

The user's subscription status can be verified by calling the messenger_recurring_notification_data() method in the User model.

Sending Notifications

To send a notification using the recurring notification token, just call send_using_token() method instead of send().
user = u = User.where(platform: "messenger").first
user.notification.text "Hello World!"
user.notification.send_using_token()