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 veriyibase64veya 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ı) URLexpiresIndakikalığı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 onunuserId'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 tenantroles-slug-not-allowedhatasını fırlatır. Bulunamayan veya arşivlenmiş bir tenantfalsedö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)