Un hook permet à l'utilisateur de définir une commande shell qui sera exécutée à un moment précis du programme.
Ils sont accessibles via le menu Settings.

Voici quels sont les hooks qui seront disponible avec cette première version:

Chaque hook est un script shell qui peut-être modifié directement depuis le menu ci-dessus. Certains hooks recoivent un ou plusieurs arguments que vous pouvez utiliser, voir tableau ci-dessous:
| Hook | Moment de déclenchement | Valeur de $1 | Exemple d'utilisation |
| Program startup | Lancement de Jarvis | ||
| Start listening | Jarvis écoute une commande de l'utilisateur | Allumer une led | |
| Stop listening | Jarvis arrête d'écouter (silence entendu, timeout, ...) | Eteindre une led | |
| Listening timeout | Jarvis attendait une commande mais rien n'a été entendu | ||
| Entering command mode | Hotword entendu, Jarvis entre en mode conversation et va écouter / exécuter une ou plusieurs commandes | Mettre en pause la musique / TV | |
| Start speaking | Jarvis commencer à parler | Phrase énoncée | |
| Stop speaking | Jarvis a fini de parler | ||
| Exiting command mode | Jarvis sort du mode conversation, et se remet en attende du hotword | Remettre la musique / TV | |
| Program exit | Jarvis est quité ou si une erreur est rencontrée Pour quitter Jarvis depuis une commande et déclencher ce hook, utiliser `jv_exit` et non pas `exit` |
Code retour |
Utilisation
La grande majorité de ces hooks sont utilisé par le plugin Jarvis-Face qui affiche un visage animé à l'écran en fontion des différents états de Jarvis.
Vous pouvez par exemple utiliser une diode pour indiquer l'état de Jarvis:

- Diode éteinte: Jarvis n'est pas lancé (ou a planté)
- Diode clignotante: Jarvis attend que le mot clé soit prononcé
- Diode allumée: Jarvis est en écoute d'une commande
Disons que vous avez un script my_led.sh qui vous permet de contrôler une diode en lui passant off on ou blink en paramètre.
Il suffirait de configurer les hooks suivants:
- program startup:
my_led.sh blink - entering command mode:
my_led.sh on - exiting command mode:
my_led.sh blink - program exit:
my_led.sh off
Ce post explique comment contrôler 3 LED et donner un visage à Jarvis:

Ce post explique comment contrôler la diode d'un Kinect pour indiquer l'état de Jarvis.