RawtohRawtoh/Docs
Documentation

Modules

Les modules font le lien entre Rawtoh et le monde extérieur — découvrez comment ils fonctionnent.

Les modules font le lien entre Rawtoh et le monde extérieur. Ils se connectent à des services externes et permettent à vos automatisations d’interagir avec eux.

Module (définition)

Un module (aussi appelé définition de module ou groupe de modules) décrit une intégration. Il définit :

Modules privés et modules publics

Une définition de module peut être :

Le manifeste

Le manifeste est le contrat d’API du module, rédigé sous la forme d’un document OpenRPC. Il répertorie :

Le manifeste est fourni par l’auteur du module et renseigné sur la définition de module. Il alimente l’autocomplétion de l’éditeur de scripts et vous permet de voir ce qui est disponible. Tous les noms utilisent la notation pointée — par ex. chat.message, chat.say.

Instance de module

Une instance de module est une connexion réelle et active. Là où un module est une définition, une instance est un déploiement.

Exemple :

Chaque instance est authentifiée par sa propre paire de clés Ed25519, que le module génère lui-même — Rawtoh n’en conserve jamais que la partie publique. La paire est liée à l’instance une seule fois, en consommant un jeton d’enrôlement. Après cela, il n’y a plus aucun secret à copier, à renouveler ou à laisser fuiter : à chaque connexion, le module prouve qu’il détient la clé privée en signant un défi émis par le serveur.

Jeton d’enrôlement

Le jeton (rth_e_…) est la seule chose qu’un humain ait jamais à copier. Il est :

Tant qu’aucun jeton n’a été consommé, l’instance apparaît comme Non enrôlée et ne peut pas se connecter. Consommer un jeton pour une instance déjà enrôlée remplace sa clé : c’est ainsi que vous récupérez une clé privée perdue ou déplacez un module vers une autre machine, et tout processus encore connecté avec l’ancienne clé est déconnecté. Supprimer l’instance révoque la clé et ferme aussitôt la connexion.

Pourquoi des instances ?

Vous pouvez avoir besoin de plusieurs connexions au même service. Par exemple deux bots Twitch, ou plusieurs instances d’OBS sur des machines différentes. Chaque instance fonctionne indépendamment et peut émettre ses propres événements.

Comment les modules se connectent

Les modules se connectent à Rawtoh par une connexion WebSocket. Une fois connecté, un module peut :

  1. S’enregistrer — signer avec sa clé privée un défi émis par le serveur
  2. Émettre des événements — envoyer à Rawtoh des données auxquelles les déclencheurs peuvent réagir
  3. Recevoir des appels de méthode — Rawtoh envoie des requêtes au module lorsqu’une action appelle l’une de ses méthodes

Rawtoh gère automatiquement les abonnements — lorsque vous créez, modifiez ou supprimez des déclencheurs, les modules connectés restent synchronisés sans aucune intervention manuelle.

Appeler des modules depuis les scripts

Dans le code de votre action, utilisez la fonction module() pour appeler des méthodes sur les modules connectés :

import { module } from "rawtoh"

// By group only (picks the most recently connected instance)
await module("twitch").request("chat.say", { message: "Hello!" })

// By group and instance name (targets a specific instance)
await module("twitch", "main-bot").request("chat.say", { message: "Hello!" })

// Fire-and-forget (doesn't wait for the module's response)
await module("obs").notify("scene.set_current", { sceneName: "BRB" })

Modes de communication

ModeDescription
.request(method, params)Attend la réponse du module avant de continuer
.notify(method, params)Envoi sans attente de réponse — continue immédiatement

Configurer un module

Modules hébergés : Installer avec Rawtoh

Les modules officiels (Twitch, OBS, Tableau) sont des applications web hébergées sur le domaine de Rawtoh. Connectez-vous-y avec votre compte Rawtoh et cliquez sur Installer avec Rawtoh : le module crée l’instance dans votre organisation, enrôle sa paire de clés et se connecte — aucun jeton à copier. Vous devez avoir le rôle propriétaire dans l’organisation. Chaque module accepte aussi un jeton d’enrôlement collé à la main, sous Jeton d’enrôlement (avancé), si vous préférez créer l’instance vous-même.

Tout autre module : jeton d’enrôlement

  1. Allez dans Module → Définitions et vérifiez que la définition du module existe (ou créez-en une)
  2. Allez dans Module → Instances, cliquez sur Ajouter une instance, choisissez la définition et donnez un nom à l’instance
  3. Copiez le jeton d’enrôlement — il n’est affiché qu’une seule fois et expire au bout de 15 minutes
  4. Collez-le dans votre module (pour les modules sans interface, il s’agit en général de la variable RAWTOH_ENROLL_TOKEN ou d’une option --enroll au premier lancement). Le module génère sa paire de clés et consomme le jeton
  5. L’instance passe de Non enrôlée à « en ligne » dès que le module établit sa connexion WebSocket

Clé privée perdue, ou réinstallation sur une autre machine ? Choisissez Réenrôler sur l’instance pour obtenir un nouveau jeton. Le module en cours d’exécution continue de fonctionner tant que le nouveau jeton n’a pas été réellement consommé.