Ana içeriğe geç

Özel Fonksiyon Node'u

Özel Fonksiyon node'u, akışın içinde kendi JavaScript'inizi çalıştırır. Diğer node'ların kapsamadığı mantık için kullanın — veriyi yeniden şekillendirme, bir hesaplama yapma, metin biçimlendirme veya bir servisi özel bir şekilde çağırma. Fonksiyon, ona geçirdiğiniz girdileri alır ve akışın geri kalanının kullanabileceği bir değer döndürmelidir.

Bir akışa ekleme​

Canvas üzerine bir Özel Fonksiyon node'u sürükleyin ve önceki node'u ona bağlayın. Herhangi bir girdi değişkeni tanımlayın, ardından JavaScript gövdesini yazın.

Kod editöründe bir JavaScript fonksiyonu bulunan Özel Fonksiyon node'u

Girdiler​

ParametreAçıklamaZorunlu
Giriş DeğişkenleriFonksiyonunuza geçirilen adlandırılmış değerler. Her birinin bir değişken adı ve bir değeri (bir flow değişkeni olabilir) vardır. Kodun içinde bunları $ önekiyle okursunuz — örn. $foo.Hayır
Javascript FonksiyonuÇalıştırılacak kod. Flowera'da mevcut olan kütüphaneleri kullanabilir ve bir dize döndürmelidir (veya bir dizeye dönüşen bir nesne).Evet
Akış DeğişkenleriBu node'un çalıştıktan sonra güncellediği durum anahtarları, her biri bir değer ve isteğe bağlı bir "block empty updates" koruması ile.Hayır
Çıktıyı Sohbette GösterBu node'un çıktısının sohbet geçmişinde görünüp görünmeyeceği. Varsayılan olarak kapalı.Hayır

Çıktılar​

Özel Fonksiyon node'unun tek bir çıktısı vardır: fonksiyonunuzun döndürdüğü değer. Bir sonraki bağlı node'a akar ve daha sonra kullanmak üzere bir Flow Variable'a yakalanabilir.

Fonksiyonu yazma​

Kodunuz bir async fonksiyonunun gövdesi olarak çalışır, bu nedenle await kullanabilirsiniz. Birkaç şey otomatik olarak kullanılabilir:

  • Giriş Değişkenleri — her birine $ önekiyle referans verin. foo adlı bir girdi $foo olarak okunur.
  • Flow config — $flow.sessionId, $flow.chatId, $flow.chatflowId, $flow.input ve $flow.state.
  • Custom Değişkenler — çalışma alanı değişkenleriniz için $vars.<name>.
  • Libraries — Flowera ile paketlenmiş kütüphaneler require edilebilir, örn. const fetch = require('node-fetch').

Fonksiyon bir değer döndürmelidir (bir dize veya bir dizeye dönüşen bir şey). Hiçbir şey döndürmezse, bir sonraki node boş bir sonuç alır.

Sınırlar​

Fonksiyonunuzun her çalışmasının sabit sınırları vardır:

SınırDeğerAşılınca ne olur
Çalışma süresi30 saniye (harici API'leri bekleme süresi dahil)Çalışma durdurulur ve node Code execution timed out after 30 seconds hatasıyla başarısız olur
Bellek256 MBÇalışma durdurulur ve node Code execution exceeded the 256 MB memory limit hatasıyla başarısız olur
Paralel çalışmaWorkspace'ler arasında adil paylaşılır: her workspace kendi payını her zaman alır, sunucu boşken daha fazlasını kullanabilirFazlası boş yer bekler; 30 saniye içinde yer açılmazsa node Code execution is busy, please try again shortly hatasıyla başarısız olur

Kodunuz diğer akışlardan ayrı çalışır; yavaş veya takılan bir fonksiyon yalnızca kendi çalışmasını etkiler. 30 saniyeden uzun sürebilecek bir API çağırıyorsanız bunun yerine HTTP node'unu kullanın — 5 dakikaya kadar bekler ve yeniden dener.

Örnekler​

Bir ismi biçimlendirin:

// Input Variable: rawName = {{$flow.state.name}}
return $rawName.trim().replace(/\b\w/g, c => c.toUpperCase());

Durumdan bir özet dizesi oluşturun:

return `Order ${$flow.state.orderId} for ${$flow.state.name} is confirmed.`;

Harici bir API çağırın ve metnini döndürün:

const fetch = require('node-fetch');
try {
const res = await fetch('https://api.example.com/status');
return await res.text();
} catch (error) {
console.error(error);
return '';
}

Bir değer döndüren yapılandırılmış Özel Fonksiyon node&#39;u

İpuçları​

  • Her zaman bir şey döndürün. return olmadan sonuna ulaşan bir fonksiyon, bir sonraki node'a boş bir değer verir.
  • Girdileri $ önekiyle ($foo) okuyun ve flow durumuna $flow.state.<key> ile referans verin.
  • Oluştururken console.log / console.error kullanın — çıktı yürütme izinde görünür.
  • Basit bir web isteği için, HTTP node'u fetch'i elle yazmaktan daha basittir.
  • Fonksiyonları kısa tutun: 30 saniyeden uzun süren bir çalışma durdurulur (bkz. Sınırlar).

İlgili​