Skip to main content
Voir en Markdown

Actions réutilisables

La même étape revient généralement dans plusieurs automatisations. Une alerte Slack, une écriture dans un journal d'audit, un appel à une API interne. Copier cette étape dans chaque automatisation oblige à répercuter chaque changement futur dans chaque copie.

app.actions est une bibliothèque de modèles nommés. Définissez l'étape une seule fois, avec des espaces réservés $variable là où les entrées diffèrent :

app.yaml
actions:
  - name: notify-slack
    action:
      type: http
      operator: post
      props:
        url: $env.SLACK_WEBHOOK_URL
        body: { text: '$message' }

Invoquez-la ensuite depuis n'importe quelle automatisation avec une action ref, en passant les valeurs :

app.yaml
automations:
  - name: order-alert
    trigger: { type: record, table: orders, events: [create] }
    actions:
      - name: alert
        $ref: notify-slack
        $vars: { message: 'New order recorded.' }

Propriétés d'un modèle

Propriété Description
name Identifiant kebab-case unique utilisé par $ref. Commence par une lettre minuscule, 100 caractères maximum. Requis.
action L'étape que le modèle exécute : n'importe quel couple type / operator accepté par une étape d'automatisation. Requis.
variables Valeurs par défaut des espaces réservés du modèle. Chaque site d'appel peut les remplacer avec $vars.
aiAccess Expose le modèle aux clients IA comme outil MCP {app}_action_{name}, dont les paramètres dérivent de variables.

Invoquer un modèle

L'action ref est la seule action sans operator. Elle transporte une référence et, si besoin, les valeurs propres à ce site d'appel :

Propriété Description
$ref Nom du modèle à invoquer. Doit correspondre à un modèle déclaré dans app.actions.
$vars Valeurs pour cette invocation. Fusionnées par-dessus les valeurs par défaut variables, qu'elles remplacent.
name Nom d'étape enregistré dans l'historique d'exécution. C'est le nom du site d'appel qui est retenu, pas celui du modèle.

Écrire type: ref reste facultatif. Un $ref est déjà sans ambiguïté : { name: alert, $ref: notify-slack } et la forme explicite { name: alert, type: ref, $ref: notify-slack } désignent la même action.

Variables

Un espace réservé est un $ suivi d'un nom alphanumérique ($message, $channel). À l'invocation, les variables fusionnées fournissent les valeurs :

Règle Détail
Où elles se résolvent Dans toute valeur de chaîne, à n'importe quelle profondeur du bloc action du modèle.
Priorité Les $vars du site d'appel l'emportent sur les valeurs par défaut variables du modèle.
Noms inconnus Laissés intacts : $env.SLACK_WEBHOOK_URL et {{trigger.data.id}} survivent donc à la substitution.

Cette dernière règle est ce qui permet à un modèle de mêler les trois familles de références. Déclarez les valeurs par défaut qui vous intéressent, et laissez les références d'environnement et les variables de gabarit d'automatisation être résolues plus tard par leurs propres moteurs.

Le même modèle avec des variables différentes produit des étapes différentes :

app.yaml
actions:
  - name: notify-team
    variables:
      channel: general
      message: Something happened.
    action:
      type: http
      operator: post
      props:
        url: $env.SLACK_WEBHOOK_URL
        body: { channel: '$channel', text: '$message' }

automations:
  - name: order-alert
    trigger: { type: record, table: orders, events: [create] }
    actions:
      - { name: alert, $ref: notify-team, $vars: { message: 'New order.' } }
      - { name: escalate, $ref: notify-team, $vars: { channel: ops, message: 'Check stock.' } }

Exposer un modèle à l'IA

Un modèle doté d'un bloc aiAccess devient un outil MCP directement invocable. Ses variables deviennent les paramètres de l'outil : la déclaration qui rend une étape réutilisable la rend donc aussi appelable.

app.yaml
actions:
  - name: archive-order
    variables:
      reference: ''
    action:
      type: record
      operator: update
      props:
        table: orders
        filter:
          conditions: [{ field: reference, operator: equals, value: '$reference' }]
        data: { archived: true }
    aiAccess:
      description: Archive one order by its reference.
      annotations: { readOnly: false, destructive: false, idempotent: true }

Le fait que le serveur monte réellement ces outils relève de l'exploitant, via MCP_ENABLED. Voir Serveur MCP.

Validation

Règle Détail
Noms uniques Un doublon rendrait un $ref ambigu, et il est rejeté au décodage de la configuration.
ref est réservé Ce nom entre en collision avec la méthode context.actions.ref() exposée aux actions de code, et il est rejeté.
Références résolues Un $ref désignant un modèle inexistant est détecté au démarrage, avant que l'automatisation ne puisse s'exécuter.

Pages connexes

Dernière mise à jour 11 août 2026

Cette documentation a été rédigée avec de l'IA : des erreurs ou du contenu obsolète sont donc possibles. Sovrium est en bêta. Les contributions et corrections sont les bienvenues.

Construit avec Sovrium