Lingara Lingara Ohjeet Oppaat API Kirjastot Sovellukset Rakenna Verkkosovellus
Kieli: Suomi

Tutorin muistiinpano

Tämä sivu on käännetty englannista. Jos ne eroavat toisistaan, englanninkielinen sivu on oikea. Lue englanninkielinen sivu

Sovelluksesi voi antaa Lingaran tutorille yhden rivin kontekstia, kuten mitä sanoja oppija juuri harjoitteli, lisäämällä vastaukseensa tutor_note-kentän. Muistiinpano tavoittaa tutorin vain, kun manifestisi ilmoittaa sen ja oppija otti sen käyttöön asentaessaan sovelluksesi. Muuttaakseen tätä valintaa oppija poistaa sovelluksesi asennuksen ja asentaa sen uudelleen.

Mitä Lingara tekee sille

  • Rivinvaihdosta tulee välilyönti.
  • Ohjausmerkit ja suunnanohitukset poistetaan.
  • Yli 280 merkin muistiinpano lyhennetään 280 merkkiin ja päättyy merkkiin …. Merkit lasketaan Unicode-skalaariarvoina, ei tavuina eikä näytöllä näkyvinä glyyfeinä.
  • Muistiinpano, jota manifestisi ei ilmoita tai jota oppija ei sallinut, pudotetaan pois.

Miten tutor lukee sen

Tutor lukee muistiinpanosi kolmannen osapuolen lainattuna tekstinä, ei koskaan ohjeena. Muistiinpano, jonka Lingaran turvallisuustarkistus hylkää, pudotetaan pois, ja oppijan vuoro jatkuu ilman sitä. Oppija ei koskaan näe muistiinpanoa.

Hyvä muistiinpano

Hyvä muistiinpano on yksi selkeä tosiasia, jota tutor voi käyttää, kuten “Oppija kertasi juuri 5 sanaa japanin suunnitelmastaan.” Se kertoo, mitä oppija tekee, ei sitä, mitä tutorin pitäisi tehdä. Jätä pois ohjeet, arviot oppijasta ja kaikki, mitä oppija ei nähnyt kortillasi.

Koodiesimerkin kieli

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