Boutons dynamiques et paramètres
Les boutons inline ne sont pas seulement statiques. GetMyBot peut construire un clavier à partir de données — un bouton par élément de liste — et attacher à chaque bouton son propre ensemble de paramètres, figés au moment de l'envoi. C'est la base des scénarios « afficher un catalogue → l'utilisateur choisit un article → on traite exactement celui-là ». Tout se configure dans le bloc message de l'action « Envoyer un message ».
Boutons dynamiques depuis une liste
Le bloc « Boutons dynamiques depuis une liste » développe un tableau depuis ctx en clavier : un bouton par élément du tableau. Quatre éléments à configurer :
- Liste — clé du tableau dans le contexte (
over), par exemplectx.products. Le tableau est généralement placé là par les actions « Requête vers la source », « Requête web » ou un calcul. - Alias de l'élément — nom sous lequel l'élément est disponible dans le modèle (
as, par défautitem). - Boutons par ligne — combien de boutons placer sur une rangée (
columns, par défaut1). - Modèle de bouton — un bouton ordinaire, mais dont le texte et les champs prennent en charge les substitutions via l'alias :
{{item.name}},{{item.price}}, etc.
À l'envoi, le modèle est rendu pour chaque élément, et autant de boutons que d'éléments dans la liste apparaissent. C'est ainsi que sont construits les catalogues, les listes d'enregistrements de collection et les menus issus de données.
Exemple
ctx.products contient un tableau d'objets avec les champs id, name, price. Dans le modèle de bouton, indiquez le texte {{item.name}} — {{item.price}} €, et dans Carry — la clé product_id avec la valeur {{item.id}}. Vous obtenez un bouton par article, et à l'appui, le bot sait exactement quel article a été choisi.
Paramètres dans l'appui (Carry)
Le bloc « Carry — instantané des données dans l'appui du bouton » attache au bouton un ensemble de paires clé → valeur, calculées et figées au moment de l'envoi du message. À l'appui, ces valeurs sont restaurées dans ctx — ainsi chaque bouton porte ses propres paramètres (par invocation), même si des dizaines de boutons sont envoyés dans un seul message.
- Clé carry — nom sous lequel la valeur sera restituée dans
ctxà l'appui. - Valeur carry — modèle avec substitutions (
{{item.id}},{{param.order_id}},{{ctx.x}}), calculé à l'envoi. - Usage unique (
single_use) — le payload est consommé après le premier appui. - Durée de vie du payload (
ttl_seconds) — durée de validité de l'instantané en secondes (0— valeur par défaut).
C'est la fonctionnalité clé « paramètres de lien liés à un bouton spécifique » : la valeur est mémorisée dans le bouton, pas dans l'état général de l'utilisateur, de sorte que des appuis parallèles ne s'écrasent pas mutuellement.
Définition de paramètres par bouton (set_params)
En plus de l'instantané Carry, un bouton peut définir directement des paramètres de l'abonné à l'appui — champ « Paramètres » (set_params). Contrairement à Carry (valeurs temporaires dans ctx), set_params écrit dans les paramètres permanents de l'utilisateur ({{param.clé}}), qui persistent entre les sessions. Un champ similaire existe sur le bloc message — les paramètres sont alors définis à l'envoi, pas à l'appui.
Un bouton peut également ajouter et retirer des étiquettes à l'appui — avec les mêmes champs que le bloc message.
Différence entre les trois mécanismes
- Carry — instantané dans
ctx, valide jusqu'à l'appui, lié à un bouton spécifique, avec TTL et usage unique. - set_params sur le bouton — écrit des paramètres permanents de l'abonné à l'appui.
- set_params sur le bloc — écrit des paramètres permanents à l'envoi du message.
Pour le scénario « a choisi un article — on le traite » : utilisez boutons dynamiques + Carry : la liste d'articles se développe en boutons, et le product_id de chaque article est stocké dans le Carry du bouton correspondant.
Pour aller plus loin
- Messages et boutons — blocs de message, types de boutons et comportement à l'appui.
- Substitutions et formules — variables
{{item.*}},{{ctx.*}},{{param.*}}dans les modèles. - Liens de réactions — vers quoi mènent les boutons et comment visualiser le graphe de transitions.
- Collections et données — d'où proviennent les listes pour les boutons dynamiques.