Lingara Lingara Documentación Guías API Bibliotecas Apps Crear Aplicación web
Idioma: Español

La nota para el tutor

Esta página está traducida del inglés. Si ambas difieren, la página en inglés es la correcta. Leer la página en inglés

Tu app puede ofrecer al tutor de Lingara una línea de contexto, como qué palabras acaba de practicar el estudiante, añadiendo una tutor_note a su respuesta. La nota llega al tutor solo cuando tu manifiesto la declara y el estudiante la activó al instalar tu app. Para cambiar esa elección, el estudiante desinstala tu app y la vuelve a instalar.

Qué hace Lingara con ella

  • Un salto de línea se convierte en un espacio.
  • Los caracteres de control y las anulaciones de dirección se eliminan.
  • Una nota de más de 280 caracteres se recorta a 280 y termina en …. Los caracteres se cuentan como valores escalares Unicode, no como bytes ni como glifos en pantalla.
  • Se descarta una nota que tu manifiesto no declara o que el estudiante no permitió.

Cómo la lee el tutor

El tutor lee tu nota como texto citado de un tercero, nunca como una instrucción. Una nota que el control de seguridad de Lingara rechaza se descarta, y el turno del estudiante continúa sin ella. El estudiante nunca ve la nota.

Una buena nota

Una buena nota es un hecho sencillo que el tutor puede usar, como «El estudiante acaba de repasar 5 palabras de su plan de japonés.» Dice qué está haciendo el estudiante, no qué debe hacer el tutor. Deja fuera las instrucciones, los juicios sobre el estudiante y cualquier cosa que el estudiante no haya visto en tu tarjeta.

Lenguaje del ejemplo de código

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);
}