Kogno
Search
K

postback

Captures a click event that contains one or more payloads configured.
The click event that is performed by a user can come from a button, quick_reply or list.

postback(payload=String|Array, &block)

Platforms

Platform
Supported
Messenger
WhatsApp
Telegram

Usage

The example below shows how 3 different click events will be handled:
  • postback"get_started": Click event on Messenger's Get Started button.
  • postback"yes": Click event on "Of course!" button that has been sent as reply in the previous block.
  • postback"no": Click event on "Not really 🤷🏻‍♂️" button that has been sent as reply in the first block.
class MainContext < Conversation
def blocks
postback "get_started" do
@reply.text("Hello!")
@reply.quick_reply(
"Is it clear to you how postbacks work?",
[
{
title: "Of course!",
payload: "yes"
},
{
title: "Not really 🤷🏻‍♂️",
payload: "no"
}
]
)
end
postback "yes" do
@reply.text "Awesome!"
@reply.text "We've put a lot of effort into writing this documentation 💪"
end
postback "no" do
@reply.text "No problem, continue reading and you will got it..."
end
end
end

Reading params

The postback block can receive parameters that are sent as part of the payload.
Next we will implement the same example as above, but using parameters:
class MainContext < Conversation
def blocks
postback "get_started" do
@reply.text("Hello!")
@reply.quick_reply(
"Is it clear to you how postbacks work?",
[
{
title: "Of course!",
payload: set_payload("understood", {response: "yes"})
},
{
title: "Not really 🤷🏻‍♂️",
payload: set_payload("understood", {response: "no"})
}
]
)
end
postback "understood" do |params|
response = params[:response]
if response == 'yes'
@reply.text "Awesome!"
@reply.text "We've put a lot of effort into writing this documentation 💪"
elsif response == 'no'
@reply.text "No problem, continue reading and you will got it..."
end
end
end
end

set_payload()

It is a global method of the framework, it is used to generate a payload with parameters. Read more.

any_postback block

Catch any postback received by a context and returns two parameters payload and payload_params.

Usage

class MainContext < Conversation
def blocks
any_postback do |payload, payload_params|
if payload == "get_started"
@reply.text("Hello!")
@reply.quick_reply(
"Is it clear to you how postbacks work?",
[
{
title: "Of course!",
payload: "yes"
},
{
title: "Not really 🤷🏻‍♂️",
payload: "no"
}
]
)
elsif payload == "yes"
@reply.text "Awesome!"
@reply.text "We've put a lot of effort into writing this documentation 💪"
elsif payload == "no"
@reply.text "No problem, continue reading and you will got it..."
end
end
end
end

Route to context

A payload can include a route to a postback located in a different context than the current context.
The format of a payload containing a route is as follows:
"context_name/payload"
Read more about this in Context Routing chapter.