Usage

Create custom internal actions and functions

You must to overload the add_custom_actions method and to use the add_function or add (for actions) decorator. This custom method receives always the actions parameter:

import spade_bdi

class MyCustomBDIAgent(BDIAgent):

    def add_custom_actions(self, actions):
        @actions.add_function(".my_function", (int,))
        def _my_function(x):
            return x * x

        @actions.add(".my_action", 1)
        def _my_action(agent, term, intention):
            arg = agentspeak.grounded(term.args[0], intention.scope)
            print(arg)
            yield

Hint

Adding a function requires to call the add_function decorator with two parameters: the name of the function (starting with a dot) and a tuple with the types of the parameters (e.g. (int, str)).

Hint

Adding an action requires to call the add decorator with two parameters: the name of the action (starting with a dot) and the number of parameters. Also, the method being decorated receives three parameters: agent, term, and intention.