|
@@ -0,0 +1,76 @@
|
|
|
+# Brain
|
|
|
+
|
|
|
+The brain is where you create your personal assistant, your own configuration.
|
|
|
+
|
|
|
+Brain is the link between input and output actions.
|
|
|
+
|
|
|
+An input action can be:
|
|
|
+- **an order:** Something that has been spoke out loud by the user.
|
|
|
+- **an event:** A date
|
|
|
+
|
|
|
+An output action is
|
|
|
+- a neuron: A module that will perform some actions like simply talking, run a script, run a command or a complex Ansible playbook.
|
|
|
+
|
|
|
+Brain is expressed in YAML format (see YAML Syntax) and have a minimum of syntax, which intentionally tries to not be a programming language or script,
|
|
|
+but rather a model of a configuration or a process.
|
|
|
+
|
|
|
+Let's look a basic brain:
|
|
|
+
|
|
|
+```
|
|
|
+---
|
|
|
+ - name: "Say hello"
|
|
|
+ neurons:
|
|
|
+ - say:
|
|
|
+ message: "Hello, sir"
|
|
|
+ when:
|
|
|
+ - order: "say hello"
|
|
|
+```
|
|
|
+
|
|
|
+Let's break this down in sections so we can understand how these files are built and what each piece means.
|
|
|
+
|
|
|
+The file starts with:
|
|
|
+```
|
|
|
+---
|
|
|
+```
|
|
|
+This is a requirement for YAML to interpret the file as a proper document.
|
|
|
+
|
|
|
+Items that begin with a ```-``` are considered list items. Items that have the format of ```key: value``` operate as hashes or dictionaries.
|
|
|
+
|
|
|
+At the top level we have a "name"
|
|
|
+```
|
|
|
+- name: "Say hello"
|
|
|
+```
|
|
|
+This is the identifier of the task. This one must be unique as it will be used by the event handler based on crontab.
|
|
|
+
|
|
|
+Then we have the neurons declaration that contain a list (because it starts with a "-") which contains neurons
|
|
|
+```
|
|
|
+neurons:
|
|
|
+ - neuron_name
|
|
|
+ - neuron_2
|
|
|
+ - another_neuron
|
|
|
+```
|
|
|
+
|
|
|
+Neurons are modules that will be executed when the input action is triggered.
|
|
|
+Some neuron need parameters that can be passed as argument following the syntax bellow:
|
|
|
+```
|
|
|
+neurons:
|
|
|
+ - neuron_name:
|
|
|
+ parameter1: "value1"
|
|
|
+ parameter2: "value2"
|
|
|
+```
|
|
|
+
|
|
|
+In this example, the neuron say will make Jarvis speak out loud the phrase in parameter **message**.
|
|
|
+
|
|
|
+The last part, called **when** is a list of input action. This last works exactly the same way as neurons. You must place here at least one action.
|
|
|
+```
|
|
|
+when:
|
|
|
+ - order: "say hello"
|
|
|
+```
|
|
|
+
|
|
|
+In this example, the task is launched when the captured order contains "say hello". This means the order would start if you say
|
|
|
+- "say hello jarvis"
|
|
|
+- "jarvis, say hello"
|
|
|
+- "I want you to say hello"
|
|
|
+- "i say goodbye you say hello"
|
|
|
+- "whatever I say as long it contains say hello"
|
|
|
+
|