Lingara Lingara Documentation Guides API Bibliothèques Applications Créer Application web
Langue: Français

La note au tuteur

Cette page est traduite de l'anglais. En cas de différence, la page anglaise fait foi. Lire la page en anglais

Votre application peut proposer au tuteur de Lingara une ligne de contexte, par exemple les mots que l’apprenant vient de pratiquer, en ajoutant une tutor_note à sa réponse. La note n’atteint le tuteur que si votre manifeste la déclare et que l’apprenant l’a activée lorsqu’il a installé votre application. Pour modifier ce choix, l’apprenant désinstalle votre application puis l’installe à nouveau.

Ce que Lingara en fait

  • Un saut de ligne devient une espace.
  • Les caractères de contrôle et les forçages de direction sont supprimés.
  • Une note de plus de 280 caractères est coupée à 280 et se termine par …. Les caractères sont comptés en valeurs scalaires Unicode, et non en octets ni en glyphes à l’écran.
  • Une note que votre manifeste ne déclare pas, ou que l’apprenant n’a pas autorisée, est abandonnée.

Comment le tuteur la lit

Le tuteur lit votre note comme un texte cité provenant d’un tiers, jamais comme une instruction. Une note que le contrôle de sécurité de Lingara refuse est abandonnée, et le tour de l’apprenant se poursuit sans elle. L’apprenant ne voit jamais la note.

Une bonne note

Une bonne note est un fait simple que le tuteur peut utiliser, comme « L’apprenant vient de réviser 5 mots de son plan de japonais. » Elle dit ce que fait l’apprenant, pas ce que le tuteur doit faire. Laissez de côté les instructions, les jugements sur l’apprenant et tout ce que l’apprenant n’a pas vu sur votre carte.

Langage de l'exemple de code

TypeScript

function withNote(request: AppRenderRequest) {
  const note = planLine(request);
  // Plain text, at most 280 characters; the tutor reads it, the learner does not.
  return note === "" ? todayCard(0) : reply(todayCard(0)).tutorNote(note);
}

Rust

async fn render(seen: Seen, request: AppRenderRequest) -> Result<Reply, BoxError> {
    let (lang, progress) = shared_plan(&request);
    let count = seen.lock().map_err(|_| "poisoned")?.get(&request.subject).copied().unwrap_or(0);
    let card = today_card("Today's five", &lang)?;
    // Plain text the learner's tutor can read: at most 280 characters.
    let note = match progress {
        Some((done, total)) => format!("The learner has reviewed {count} words with this app today; {done} of {total} sets done."),
        None => format!("The learner has reviewed {count} words with this app today."),
    };
    Ok(reply(card).tutor_note(note)?)
}

Go

card, err := lingaraapps.NewCard().Heading("Daily five", 1).Text("雨 · 雪 · 风 · 云 · 雷").Build()
if err != nil {
	return nil, err
}
// Plain text, at most 280 characters, for Lingara's tutor to use.
return lingaraapps.Reply(card).
	TutorNote("The learner is reviewing weather words today."), nil

Java

import com.getlingara.apps.Card;
import com.getlingara.apps.Reply;

Card card = Card.card().heading("Today's five", 1).term("雨", "yǔ", "rain", "zh").build();
// Plain text, at most 280 characters; the tutor reads it beside the card.
return Reply.reply(card).tutorNote("The learner is reviewing weather words today.");

Kotlin

import com.getlingara.apps.kotlin.Reply
import com.getlingara.apps.kotlin.card
import com.getlingara.apps.kotlin.reply

val c =
    card {
        heading("Today's five", 1)
        term("雨", reading = "yǔ", gloss = "rain", lang = "zh")
    }
// Plain text, at most 280 characters; the tutor reads it beside the card.
return reply(c).tutorNote("The learner is reviewing weather words today.")

Ruby

note = plan_line(request)
# Plain text, at most 280 characters; the tutor reads it, the learner does not.
note.empty? ? today_card(0) : Lingara::Apps.reply(today_card(0)).tutor_note(note)

PHP

use Lingara\Apps\Reply;

function withNote(AppRenderRequest $request): CardModel|Reply
{
    $note = planLine($request);
    // Plain text, at most 280 characters; the tutor reads it, the learner does not.
    return $note === '' ? todayCard(0) : Reply::of(todayCard(0))->tutorNote($note);
}