Lingara Lingara مستندات راهنماها API کتابخانه‌ها برنامه‌ها ساخت نسخهٔ وب
زبان: فارسی

جریان‌ها

این صفحه از انگلیسی ترجمه شده است. اگر این دو با هم تفاوت داشته باشند، صفحهٔ انگلیسی درست است. خواندن صفحهٔ انگلیسی

چهار عملیات نتایج خود را به شکل رویدادهای ارسالی از سرور جریان می‌دهند: تولید واژگان، فرستادن پیام به معلم، ساختن برنامه درسی و دنبال کردن یک برنامه درسی. هر کتابخانه جریان رویدادها را به نوع پیمایشگر خود آن زبان تبدیل می‌کند و هر رویداد را از پیش رمزگشایی‌شده به مقداری با نوع مشخص به شما می‌دهد.

یک جریان چگونه پایان می‌یابد

  • وقتی کار تمام شود. پیمایش در آخرین رویداد جریان خودبه‌خود متوقف می‌شود. در برنامه درسی، همان رویداد پایانی نتیجه را در خود دارد، پس پیش از پایان حلقه آن را دریافت می‌کنید.
  • وقتی API خطایی گزارش کند. خطایی که درون جریان برسد به‌صورت خطای API برگردانده می‌شود، از همان نوعی که پیش از جریان می‌رسد.
  • وقتی اتصال شکست بخورد. جریانی که پیش از رویداد پایانی‌اش تمام شود، یا به مدت 120 ثانیه هیچ چیزی نفرستد، به‌صورت خطای انتقال برگردانده می‌شود.
  • وقتی خودتان متوقف کنید. فراخوانی را به روش معمول زبان خود لغو کنید، یا خواندن را متوقف کنید، و اتصال بی‌درنگ بسته می‌شود.

توضیحات زنده‌نگه‌داری و انواع رویدادی که کتابخانه هنوز نمی‌شناسد نادیده گرفته می‌شوند، پس یک API جدیدتر هرگز کتابخانه قدیمی‌تر را از کار نمی‌اندازد.

هرگز بازپخش نمی‌شود

جریانی که حتی یک رویداد تحویل داده باشد هرگز از سوی کتابخانه دوباره امتحان نمی‌شود، چون تکرار آن ممکن است سهمیه شما را دو بار مصرف کند. اگر جریان یک برنامه درسی پس از آغاز قطع شد، همان برنامه را با streamLessonPlan و plan_id از نخستین رویدادش دنبال کنید.

زبان نمونه‌کد

TypeScript

const stream = client.generateVocabulary({ level: 2, source_lang: "en", target_lang: "zh", count: 8 });
for await (const ev of stream) {
  if (ev.event === "item") console.log(ev.data.word, ev.data.translation);
}

Rust

use lingara::models::{GenerateVocabularyEvent, VocabRequest};
use std::num::NonZeroU8;

let request = VocabRequest { level: 2, source_lang: "en".into(), target_lang: "zh".into(), count: NonZeroU8::new(8) };
let mut stream = client.generate_vocabulary(&request).await?;
while let Some(event) = stream.next().await {
    if let GenerateVocabularyEvent::Item(item) = event? {
        println!("{} {}", item.word, item.translation);
    }
}

Go

count := uint8(8)
s, err := client.GenerateVocabulary(ctx, lingara.VocabRequest{Level: 2, SourceLang: "en", TargetLang: "zh", Count: &count})
if err != nil {
	return err
}
defer s.Close()
for ev, err := range s.Events() {
	if err != nil {
		return err
	}
	if item, ok := ev.(lingara.GenerateVocabularyEventItem); ok {
		fmt.Println(item.Data.Word, item.Data.Translation)
	}
}

Java

import com.getlingara.client.model.GenerateVocabularyEvent;
import com.getlingara.client.model.VocabRequest;

VocabRequest request = new VocabRequest().level(2).sourceLang("en").targetLang("zh").count(8);
try (EventStream<GenerateVocabularyEvent> stream = client.generateVocabulary(request)) {
  for (GenerateVocabularyEvent event : stream) {
    if (event instanceof GenerateVocabularyEvent.Item item) {
      System.out.println(item.data().getWord() + " " + item.data().getTranslation());
    }
  }
}

Kotlin

import com.getlingara.kotlin.LingaraClient
import com.getlingara.kotlin.model.GenerateVocabularyEvent
import com.getlingara.kotlin.model.VocabRequest

val request = VocabRequest(level = 2, sourceLang = "en", targetLang = "zh", count = 8)
// The request is sent here; collect the stream once, inside use {}.
client.generateVocabulary(request).use { stream ->
    stream.collect { event ->
        when (event) {
            is GenerateVocabularyEvent.Item -> println("${event.data.word} ${event.data.translation}")
            is GenerateVocabularyEvent.Started -> Unit
        }
    }
}

Ruby

client.generate_vocabulary(level: 2, source_lang: "en", target_lang: "zh", count: 8) do |event|
  case event
  in Lingara::GenerateVocabularyEventItem => item then puts "#{item.data.word}: #{item.data.translation}"
  else nil
  end
end

PHP

use Lingara\Model\VocabRequest;
use Lingara\Stream\GenerateVocabularyEvent;

$request = new VocabRequest(['level' => 2, 'source_lang' => 'en', 'target_lang' => 'zh', 'count' => 8]);
foreach ($client->generateVocabulary($request) as $event) {
    if ($event instanceof GenerateVocabularyEvent\Item) {
        echo $event->data->getWord(), ': ', $event->data->getTranslation(), "\n";
    }
}

آنچه این صفحه دربر می‌گیرد