Kogno
Search
⌃K

Conversation Class

The Conversation class is located at app/conversation.rb file.
Every message that arrives and every reply sent can be handled and accessed via callbacks defined here and all the Contexts should inherit this class.
For those who are familiar with Ruby on Rails, this class is the equivalent to ApplicationController.
class Conversation < Kogno::Context
before_blocks :do_something_before_blocks
after_blocks :do_something_after_blocks
def do_something_before_blocks
# This will be called before the blocks method in the current context will be executed
end
def do_something_after_blocks
# This will be called after the blocks method in the current context will be executed
end
end
Callback
Description
before_blocks
This callback will be executed before the blocks() method from a Context class is called.
after_blocks
This callback will be executed after the blocks() method from a Context class is called.
before_exit
This callback will be executed before the conversation context is changed. Specifically in the call of methods change_to() or context_exit().
In this callback, the method halt() can be implemented, to prevent the conversation context finally changes or exit.

Accessible Instances and methods

These instances and methods are accessible from the Conversation class and also from any Context class defined in a project.

@user

It is an instance of the User model (ActiveRecord::Base) that corresponds to the user who sent the incoming message.

Usage

class Conversation < Kogno::Context
before_blocks :log_user_platform
def log_user_platform
logger.info "The user's platform is #{@user.platform}"
end
end

@message

It is the instance of the user's incoming message.

Usage

  • To see the message content: @message.text
  • Catch a button click event: @message.postback_payload and if includes parameters @message.postback_params. Read more about postbacks.
  • Check if the message is empty: @message.empty?
See the full list of methods here.

@reply

It is an instance of the Kogno::Notification class, which contains a wide variety of reply messages like text, button, url, carousel, etc. Full list here.
In Kogno, we try to unify almost all reply types for all supported platforms, so that a single code can be written for all of them.

Usage

class Conversation < Kogno::Context
after_blocks :send_a_final_message
def send_a_final_message
@reply.text "I'll respond this mesage all the time."
end
end
For more information and examples, check the Replies section.

Methods

Also methods like change_to(), delegate_to() and halt().