bot#

class besser.bot.core.bot.Bot(name)[source]#

Bases: object

The bot class.

Parameters:

name (str) – The bot’s name

_name#

The bot name

Type:

str

_platforms#

The bot platforms

Type:

list[Platform]

_platforms_threads#

The threads where the platforms are run

Type:

list[threading.Thread]

_nlp_engine#

The bot NLP engine

Type:

NLPEngine

_config#

The bot configuration parameters

Type:

ConfigParser

_sessions#

The bot sessions

Type:

dict[str, Session]

_trained#

Weather the bot has been trained or not. It must be trained before it starts its execution.

Type:

bool

states#

The bot states

Type:

list[State]

intents#

The bot intents

Type:

list[Intent]

entities#

The bot entities

Type:

list[Entity]

global_initial_states#

List of tuples of initial global states and their triggering intent

Type:

list[State, Intent]

global_state_component#

Dictionary of global state components, where key is initial global state and values is set of states in corresponding global component

Type:

dict[State, list[State]]

_init_global_states()[source]#

Initialise the global states and add the necessary transitions.

Go through all the global states and add transitions to every state to jump to the global states. Also add the transition to jump back to the previous state once the global state component has been completed.

_run_platforms()[source]#

Stop the execution of the bot platforms

_stop_platforms()[source]#
add_entity(entity)[source]#

Add an entity to the bot.

Parameters:

entity (Entity) – the entity to add

Returns:

the added entity

Return type:

Entity

add_intent(intent)[source]#

Add an intent to the bot.

Parameters:

intent (Intent) – the intent to add

Returns:

the added intent

Return type:

Intent

property config#

The bot configuration parameters.

Type:

ConfigParser

delete_session(session_id)[source]#

Delete an existing bot session.

Parameters:

session_id (str) – the session id

get_property(prop)[source]#

Get a bot property’s value

Parameters:

prop (Property) – the property to get its value

Returns:

the property value, or None

Return type:

Any

get_session(session_id)[source]#

Get a bot session.

Parameters:

session_id (str) – the session id

Returns:

the session, if exists, or None

Return type:

Session or None

initial_state()[source]#

Get the bot’s initial state. It can be None if it has not been set.

Returns:

the initial state of the bot, if exists

Return type:

State or None

load_properties(path)[source]#

Read a properties file and store its properties in the bot configuration.

An example properties file, config.ini:

[websocket_platform]
websocket.host = localhost
websocket.port = 8765
streamlit.host = localhost
streamlit.port = 5000

[telegram_platform]
telegram.token = YOUR-BOT-TOKEN

[nlp]
nlp.language = en
nlp.region = US
nlp.timezone = Europe/Madrid
nlp.stemmer = True
nlp.intent_threshold = 0.4
Parameters:

path (str) – the path to the properties file

property name#

The bot name.

Type:

str

new_entity(name, base_entity=False, entries=None)[source]#

Create a new entity in the bot.

Parameters:
  • name (str) – the entity name. It must be unique in the bot

  • base_entity (bool) – weather the entity is a base entity or not (i.e. a custom entity)

  • entries (dict[str, list[str]] or None) – the entity entries

Returns:

the entity

Return type:

Entity

new_intent(name, training_sentences, parameters=None)[source]#

Create a new intent in the bot.

Parameters:
  • name (str) – the intent name. It must be unique in the bot

  • training_sentences (list[str]) – the intent’s training sentences

  • parameters (list[IntentParameter] or None) –

Returns:

the intent

Return type:

Intent

new_session(session_id, platform)[source]#

Create a new session for the bot.

Parameters:
  • session_id (str) – the session id

  • platform (Platform) – the platform where the session is to be created and used

Returns:

the session

Return type:

Session

new_state(name, initial=False)[source]#

Create a new state in the bot.

Parameters:
  • name (str) – the state name. It must be unique in the bot.

  • initial (bool) – weather the state is initial or not. A bot must have 1 initial state.

Returns:

the state

Return type:

State

property nlp_engine#

The bot NLP engine.

Type:

NLPEngine

receive_message(session_id, message)[source]#

Receive a message from a specific session.

Receiving a message starts the process of inferring the message’s intent and acting properly (e.g. transition to another state, store something in memory, etc.)

Parameters:
  • session_id (str) – the session that sends the message to the bot

  • message (str) – the message sent to the bot

reset(session_id)[source]#

Reset the bot current state and memory for the specified session. Then, restart the bot again for this session.

Parameters:

session_id (str) – the session to reset

Returns:

the reset session

Return type:

Session

run(train=True, sleep=True)[source]#

Start the execution of the bot.

Parameters:
  • train (bool) – weather to train the bot or not

  • sleep (bool) – weather to sleep after running the bot or not, which means that this function will not return

set_global_fallback_body(body)[source]#

Set the fallback body for all bot states.

The fallback body is a state’s callable function that will be run whenever necessary to handle unexpected scenarios (e.g. when no intent is matched, the current state’s fallback is run). This method simply sets the same fallback body to all bot states.

See also: set_fallback_body()

Parameters:

body (Callable[[Session], None]) – the fallback body

set_property(prop, value)[source]#

Set a bot property.

Parameters:
  • prop (Property) – the property to set

  • value (Any) – the property value

stop()[source]#

Stop the bot execution.

train()[source]#

Train the bot.

The bot training is done before its execution.

use_telegram_platform()[source]#

Use the TelegramPlatform on this bot.

Returns:

the telegram platform

Return type:

TelegramPlatform

use_websocket_platform(use_ui=True)[source]#

Use the WebSocketPlatform on this bot.

Parameters:

use_ui (bool) – if true, the default UI will be run to use this platform

Returns:

the websocket platform

Return type:

WebSocketPlatform