# Kogno

## Kogno

- [Introduction](https://docs.kogno.io/master.md): Kogno is an open source framework running on the Ruby programming language for developing chatbots.
- [Getting Started](https://docs.kogno.io/getting-started.md): This section explains how to install Kogno and create a new project.
- [Configuration](https://docs.kogno.io/getting-started/configuration.md)
- [Starting the Server](https://docs.kogno.io/getting-started/starting-the-server.md)
- [Messenger Configuration](https://docs.kogno.io/getting-started/messenger-configuration.md)
- [Telegram Configuration](https://docs.kogno.io/getting-started/telegram-configuration.md)
- [WhatsApp Configuration](https://docs.kogno.io/getting-started/whatsapp-configuration.md)
- [NLP Configuration](https://docs.kogno.io/getting-started/nlp-configuration.md)
- [Conversation Class](https://docs.kogno.io/conversation.md)
- [Contexts](https://docs.kogno.io/contexts.md): Contexts are the skeleton of an application developed with Kogno, since in these, a large part of the logic of capturing, processing and replying to an incoming message is developed.
- [Blocks](https://docs.kogno.io/contexts/blocks.md): The action blocks make it possible for a contexts to digest an incoming message or event with certain characteristics that matches with the execution criteria of a given block.
- [before\_anything](https://docs.kogno.io/contexts/blocks/before_anything.md): If it's called in the current context of the conversation, it will always be executed, at the beginning of the block matching process.
- [postback](https://docs.kogno.io/contexts/blocks/postback.md): Captures a click event that contains one or more payloads configured.
- [deep\_link](https://docs.kogno.io/contexts/blocks/deep_link.md): If it's defined, this action block will be executed if the chat was opened through a link that contains a deep-link query string parameter.
- [command](https://docs.kogno.io/contexts/blocks/command.md): Catches a Telegram command, which  has been specified as an argument.
- [any\_attachment](https://docs.kogno.io/contexts/blocks/any_attachment.md): This block will catch any attachment file like a document, audio, image, sticker or video.
- [regular\_expression](https://docs.kogno.io/contexts/blocks/regular_expression.md): This block will be executed if the regular expression provided matches with a pattern against the incoming message.
- [keyword](https://docs.kogno.io/contexts/blocks/keyword.md): This block will be executed if the message is one of the defined keywords.
- [any\_number](https://docs.kogno.io/contexts/blocks/any_attachment-1.md): It going to be executed if the incoming message contains at least one number (integer or float) and  it will return as a parameter an array with the numbers found.
- [any\_text](https://docs.kogno.io/contexts/blocks/any_attachment-2.md)
- [intent](https://docs.kogno.io/contexts/blocks/intent.md): This block will be executed if the intent provided as argument matches with the incoming message intent and if it was previously created and trained in the NLP engine.
- [entity](https://docs.kogno.io/contexts/blocks/entity.md): This block captures an NLP entity regardless of the incoming message intention.
- [membership](https://docs.kogno.io/contexts/blocks/nlp_entity.md): This block will be executed when the chatbot has been added or removed from a group or channel from Telegram.
- [recurring\_notification](https://docs.kogno.io/contexts/blocks/recurring_notification.md): This block will be executed when a user has granted or removed permissions to receive recurring notifications from Messenger.
- [everything\_else](https://docs.kogno.io/contexts/blocks/everything_else.md): It will be executed as long as none of the declared blocks in the current context have been executed. In other words, If the match doesn't occurs.
- [after\_all](https://docs.kogno.io/contexts/blocks/nlp_entity-1.md): If it was called, this block will always be executed at the end of the matching process, even if another block was executed previously.
- [Sub Contexts](https://docs.kogno.io/contexts/sub-contexts.md): It's a kind of action block that creates a context within another, making posible to call within this any action block and even another sub context.
- [Routing](https://docs.kogno.io/contexts/routing.md): Route an incoming message or event to a specific context of the conversation.
- [Sequences](https://docs.kogno.io/contexts/sequences.md): Configure and execute a serie of actions or sending messages, based on an event that occurred in the conversation.
- [Conversational Forms](https://docs.kogno.io/contexts/conversational-forms.md): This feature, which includes two methods ask() and answer() allows you to create conversational forms.
- [Replies / Notifications](https://docs.kogno.io/replies-notifications.md): This chapter talks about the different formats used when replying to or sending an on-demand notification to a user.
- [text](https://docs.kogno.io/replies-notifications/text.md): Simple text message.
- [button](https://docs.kogno.io/replies-notifications/button.md): A text followed by one or more buttons.
- [quick\_reply](https://docs.kogno.io/replies-notifications/quick_reply.md): A text message followed by one or more buttons that disappear after being clicked.
- [raw](https://docs.kogno.io/replies-notifications/raw.md): Creates messages or making calls to the each platform API, by sending specific raw parameters for each of them.
- [list](https://docs.kogno.io/replies-notifications/list.md): A list with multiple options, the click event on one of them, sends a payload that can be captured by a postback action block.
- [carousel](https://docs.kogno.io/replies-notifications/carousel.md): Messenger Generic Templates Carousel.
- [url](https://docs.kogno.io/replies-notifications/url.md): Creates a message that includes a link to a website, as well as a title, subtitle, photo and a button label.
- [typing](https://docs.kogno.io/replies-notifications/typing.md): Makes a delay between messages simulating a typing.
- [image](https://docs.kogno.io/replies-notifications/image.md): Creates a message with an image provided via a url.
- [video](https://docs.kogno.io/replies-notifications/video.md): Creates a message with a video provided via a url.
- [html](https://docs.kogno.io/replies-notifications/html.md): This method creates a message in HTML format.
- [markdown](https://docs.kogno.io/replies-notifications/markdown.md): This method creates a message in Makrdown format.
- [contact](https://docs.kogno.io/replies-notifications/contact.md): Creates a message with contact information.
- [location](https://docs.kogno.io/replies-notifications/location.md): A message with a location.
- [recurring\_notification\_request](https://docs.kogno.io/replies-notifications/recurring_notification_request.md): Sends a subscription request for recurring notifications in Messenger, which can be: daily, weekly and monthly.
- [messenger\_generic\_template](https://docs.kogno.io/replies-notifications/messenger_generic_template.md): Allows the creation of messages from Messenger Generic Templates.
- [whatsapp\_template](https://docs.kogno.io/replies-notifications/whatsapp_template.md): Allows the creation of messages from WhatApp Templates.
- [Templates](https://docs.kogno.io/templates.md): It calls a template with extension ".erb" and executes it. There may be just one or a serie of replies.
- [Models](https://docs.kogno.io/models.md): Models are classes, They talk to the database, store and validate data.
- [User model](https://docs.kogno.io/models/user-model.md): It is one of the models that is predefined in a new project and is associated with the users table in the database.
- [Scheduled Messages](https://docs.kogno.io/scheduled-messages.md): Schedule and send messages in the future.
- [Telegram Inline Query](https://docs.kogno.io/telegram-inline-query.md): Allows you to receive and answer an inline query  from Telegram.
- [Command Line](https://docs.kogno.io/command-line.md)
- [Global Methods](https://docs.kogno.io/global-methods.md)
- [Internationalization](https://docs.kogno.io/internationalization.md): The I18n library is already integrated in Kogno, so the development of a multi-language chatbot is relatively easy.
