Ana içeriğe geç

Utils

Sdk.utils nesnesi, Server SDK üzerinde MonoChat Custom Fonksiyonlarında backend mantığını destekleyen geniş bir yardımcı metod koleksiyonu sunar. Bu araçlar kodlama/çözme, rol kontrolleri, QR kod üretimi, canvas görsel manipülasyonu ve daha fazlasını kapsar.


Kategoriler​

Kodlama & Çözme​

  • encode(data, format) – Verilen veriyi base64 veya diğer formatlarda kodlar.
  • decode(data, format) – Önceden kodlanmış veriyi çözer.
  • serialize(obj) – JavaScript nesnesini serileştirir.
  • deserialize(string) – Serileştirilmiş string’den nesneyi yeniden oluşturur.

Formatlama​

  • formatDate(date) – Formatlanmış tarih döndürür.
  • formatDateTime(date) – Formatlanmış tarih-saat döndürür.
  • formatDateTimeLocal(date) – Yerel zaman dilimine göre tarih-saat döndürür.
  • currency.priceString(isoCode, price, options) – Formatlanmış fiyat döndürür.

Yol & Slug​

  • absoluteUrl(path) – Tam URL döndürür.
  • absolutePathString(name) – Göreli dosya/fonksiyon yolunu çözer.
  • slugify(string) – String’i URL güvenli bir slug’a dönüştürür.

QR Kod​

  • generateQrCodeAsync({ data }) – Verilen veriden QR kod resmi üretir.

Canvas Yardımcıları​

  • canvas.create(width, height) – Canvas nesnesi oluşturur.
  • canvas.loadImage(path) – Canvas’a resim yükler.

Base64 Yükleme​

  • uploadBase64Async({ base64, mimeType, fileName }) – Base64 kodlu dosyayı yükler ve URL döndürür.

İmzalı Dosya URL’leri​

  • getSignedFileUrl(url, { expiresIn }) – Saklanan bir dosyanın okunacağı URL’yi döndürür. Gizli bir bucket’taki (MonoChat’in kendi depolaması ya da omni-message’ın medyası) URL expiresIn dakikalığına (varsayılan 60) imzalanır; diğer URL’ler olduğu gibi döner.

Saklanan her medya ya da depolama URL’sini, örneğin bir mesajın fileUrl alanını ya da yüklenen bir dosyanın url değerini, indirmeden ya da başka bir yere vermeden önce bu yardımcıdan geçirin:

const fileUrl = await sdk.utils.getSignedFileUrl(message.payload.image.fileUrl)
const response = await sdk.lib.fetch(fileUrl)

Zamanlayıcı Yardımcıları​

  • setTimeout(fn, ms) – İşlemi geciktirir.
  • clearTimeout(id) – Timeout’u iptal eder.
  • setInterval(fn, ms) – Belirli aralıklarla işlemi tekrarlar.
  • clearInterval(id) – Interval’i temizler.

Çeviri​

  • translate('i18n.key') – Verilen anahtarı çevirir.

Rol Kontrol Yardımcıları​

  • roles.userIsInRoleAsync(roles, { userId, slug }) – Kullanıcının, tenant'ın kendisinde rollerden birine sahip olup olmadığını kontrol eder.
  • roles.userIsInParentRole(roles, { userId, slug }) – Tenant'ı ve üstündeki bütün tenant'ları kontrol eder.
  • roles.userIsInRootRole(roles, { userId, slug }) – Root tenant'ı kontrol eder.
  • roles.addRolesToParentAsync(childRoles, parentRole) – Rolleri atar.

roles bir rol veya yetki kimliği ya da bunların listesidir; birine sahip olmak yeterlidir. İkinci parametre isteğe bağlıdır:

  • userId – kontrol edilecek kullanıcı. Verilmezse fonksiyonu çalıştıran kullanıcıdır. Bir akış içinde çalışan fonksiyonda (bir AI aracı, bir akış node'u) bu kullanıcı, konuşmadaki müşteri değil tenant'ın akış botudur; müşteriyi veya temsilciyi kontrol etmek için onun userId'sini verin.
  • slug – kontrolün yapılacağı tenant. Verilmezse fonksiyonun kendi tenant'ıdır. Bu tenant ya da altındaki bir tenant olmalıdır; başka bir tenant roles-slug-not-allowed hatasını fırlatır. Bulunamayan veya arşivlenmiş bir tenant false döner.
const isAllowed = await sdk.utils.roles.userIsInParentRole(['permissions.tenants.billing.balances.read'], { userId, slug })

İkinci parametre yalnızca sunucuda vardır; bir custom view'ın tarayıcı kodunda rol kontrolleri her zaman oturum açmış kullanıcıyı geçerli tenant'ta kontrol eder.

Loglama​

Sunucuda console.log yerine sdk.utils.logger kullanın.

  • logger.info(...args) – Bilgi seviyesinde loglar.
  • logger.warn(...args) – Uyarı logları.
  • logger.error(...args) – Hata logları.
  • logger.debug(...args) – Debug logları.

Örnek: QR Kod ve Loglama​

const qr = await sdk.utils.generateQrCodeAsync({ data: 'https://MonoChat.ai' })
sdk.utils.logger.info('Oluşturulan QR Kod:', qr)