Cartes
Cette page est traduite de l'anglais. En cas de différence, la page anglaise fait foi. Lire la page en anglais
Une carte est une courte liste d’éléments que Lingara dessine dans son propre style. Il n’y a ni champs de saisie, ni images, ni scripts, ni balisage. Une application ne peut placer ni son propre code ni sa propre apparence sur l’écran d’un apprenant : chaque carte se lit donc comme le reste de Lingara. Votre réponse est du JSON : une card contenant ses elements, et éventuellement une tutor_note (voir La note au tuteur).
Les éléments
Chaque élément a un type, qui est l’un de ces huit :
| Élément | Champs | Ce qu’il affiche |
|---|---|---|
heading | text, level | Un titre. level vaut 1 ou 2, et toute autre valeur devient 2. Son texte fait au plus 80 caractères. |
text | text, lang | Un paragraphe d’au plus 600 caractères. C’est le seul endroit où un saut de ligne est conservé. |
term | word, reading, gloss, lang | Un mot à apprendre. Seul word est obligatoire. Le mot fait au plus 60 caractères, la lecture 120 et la glose 160. |
list | items | Jusqu’à 20 entrées. Chaque entrée est un text ou un term, avec les mêmes champs que l’élément de ce nom. |
progress | value, label | Une barre de progression. value va de 0 à 1, et le libellé fait au plus 60 caractères. |
divider | Une ligne entre les parties de la carte. | |
button | label, action, style | Un bouton qui envoie son action à votre serveur. style vaut primary ou secondary, et le libellé fait au plus 32 caractères. |
link | label, url | Un lien que l’apprenant ouvre dans son navigateur, après que Lingara le lui a demandé. Le libellé fait au plus 60 caractères. |
Un lang est une étiquette de langue comme ja, afin que Lingara dessine la bonne écriture. Une valeur qui n’est pas une étiquette de langue est supprimée.
Les limites
- Une carte contient au plus 24 éléments. Les éléments au-delà du 24e sont abandonnés.
- Une liste contient au plus 20 entrées. Les entrées au-delà de la 20e sont abandonnées, et une liste vide est abandonnée.
- Une carte contient au plus 4 boutons. Les boutons au-delà du 4e sont abandonnés.
- Un texte plus long que sa limite est coupé pour tenir et se termine par
…. Les caractères sont comptés en valeurs scalaires Unicode. - Les caractères de contrôle et les forçages de direction sont supprimés de chaque chaîne.
- Un lien dont l’adresse n’est pas en HTTPS, contient un nom d’utilisateur ou pointe vers une adresse IP est abandonné.
- Un bouton dont l’
actiondépasse 64 caractères, ou utilise autre chose que des lettres, des chiffres,_,.,:et-, est abandonné. - Un élément sans texte restant après ces règles est abandonné.
Ces règles sont tolérantes : Lingara coupe ou abandonne ce qui ne tient pas et dessine le reste. Les kits appliquent les mêmes règles avant que vous ne répondiez, pour que vous voyiez ce qui changerait.
Analyse stricte
Le vocabulaire est fermé. Un type d’élément inconnu, un champ qu’un élément ne possède pas, une valeur du mauvais type JSON, ou une réponse qui n’est pas du JSON du tout transforme toute la réponse en carte de repli. Lingara ne dessine jamais une partie d’une carte qu’il n’a pas pu lire.
Taille et délai
Une réponse peut faire au plus 32 KiB. Lingara laisse à votre serveur 3 secondes pour répondre à un rendu et 5 secondes pour répondre à une action, et ne réessaie ni l’un ni l’autre. Une réponse doit avoir le statut 200 et un type de contenu JSON. Les redirections ne sont pas suivies.
Boutons et actions
Quand l’apprenant appuie sur un bouton, Lingara envoie à votre serveur une requête d’action portant l’action de ce bouton. Votre serveur répond avec une nouvelle carte, qui remplace l’ancienne. Le même appui peut arriver deux fois : rendez donc chaque action sûre à répéter.
Quand une carte échoue
Quand Lingara ne parvient pas à obtenir une carte qu’il peut dessiner, l’apprenant voit la carte de Lingara « Cette application n’a pas répondu » dans sa langue, ou votre dernière carte valide marquée « Pas à jour ». On ne dit jamais à l’apprenant pourquoi. Vous seul, en tant que propriétaire de l’application, voyez la raison :
- Votre réponse :
invalid(pas une carte que Lingara peut lire),empty(plus rien à afficher après les limites) outoo_large(plus de 32 KiB). - L’accès à votre serveur :
timeout,http_error(tout statut autre que 200),transport(un échec de connexion ou de TLS, comme un certificat expiré) oublocked(unrender_urlqui mène à une adresse privée ou à une adresse IP littérale). - Du côté de Lingara :
unavailable(Lingara n’a pas pu signer la requête) oubusy(trop de requêtes déjà en cours).