Ana içeriğe geç

Veri İşlemleri

Pi v2'de veri dönüştürme ve işleme için kullanılan fonksiyonlar.

str2JSON(str)

String formatındaki JSON verisini objeye dönüştürür.

Parametreler:

  • str (string) - JSON formatındaki string

Dönüş Değeri:

  • any - Obje/array/primitive değer

Örnek:

// JSON string'i objeye dönüştürme
const jsonString = '{"name":"Ahmet","age":30,"city":"İstanbul"}';
const obj = str2JSON(jsonString);
await addLog(obj.name); // "Ahmet"
await addLog(obj.age); // 30

// API yanıtını işleme
const response = await get("https://api.example.com/user");
const userData = str2JSON(response);
if (userData.status === "active") {
await tts(`Hoş geldiniz ${userData.name}`);
}

// Array işleme
const arrayString = '[{"id":1,"name":"Ürün 1"},{"id":2,"name":"Ürün 2"}]';
const products = str2JSON(arrayString);
products.forEach(product => {
await addLog(`Ürün: ${product.name}`);
});

// Hata yönetimi
try {
const data = str2JSON(invalidJsonString);
} catch (error) {
console.error("JSON parse hatası:", error);
await tts("Veri işleme hatası oluştu");
}

JSON2str(json)

Objeyi JSON string formatına dönüştürür.

Parametreler:

  • json (any) - Obje/array/primitive değer

Dönüş Değeri:

  • string - JSON formatında string

Örnek:

// Objeyi JSON string'e dönüştürme
const user = {
name: "Mehmet",
phone: $arayan,
timestamp: new Date().toISOString()
};
const jsonString = JSON2str(user);
await addLog(jsonString); // '{"name":"Mehmet","phone":"...","timestamp":"..."}'

// API'ye veri gönderme
const requestData = {
action: "create_ticket",
caller: $arayan,
description: "Teknik destek talebi"
};
const response = await post(
"https://api.example.com/tickets",
JSON2str(requestData),
{ "Content-Type": "application/json" }
);

// Array'i string'e dönüştürme
const items = ["item1", "item2", "item3"];
const itemsJson = JSON2str(items);
await addLog(itemsJson); // '["item1","item2","item3"]'

// Nested obje
const complexData = {
user: {
id: 123,
profile: {
name: "Ali",
preferences: ["option1", "option2"]
}
},
metadata: {
version: "1.0",
timestamp: Date.now()
}
};
const complexJson = JSON2str(complexData);

numberToWords(num)

Sayıyı Türkçe kelimelerle ifade eder.

Parametreler:

  • num (number) - Dönüştürülecek sayı

Dönüş Değeri:

  • string - Sayının Türkçe kelime karşılığı

Hata:

  • TypeError - Parametre sayı değilse

Örnek:

// Basit sayılar
await addLog(numberToWords(5)); // "beş"
await addLog(numberToWords(23)); // "yirmi üç"
await addLog(numberToWords(100)); // "yüz"

// TTS ile kullanım
const amount = 1250;
const amountText = numberToWords(amount);
await tts(`Toplam tutarınız ${amountText} lira`);

// Kullanıcı girişini kelimeye çevirme
const digits = await getDigits("amount_voice", 10000, 4);
if (digits.digits) {
const number = parseInt(digits.digits);
const numberText = numberToWords(number);
await tts(`Girdiğiniz sayı: ${numberText}`);
}

// Hata yönetimi
try {
const result = numberToWords("123"); // Hata: string parametre
} catch (error) {
console.error("Sayı dönüştürme hatası:", error.message);
await tts("Geçersiz sayı formatı");
}

// Dinamik kullanım
const userInput = await getDigitsWithTTS(
"Lütfen bir sayı girin",
8000,
3
);

if (userInput.digits) {
const num = parseInt(userInput.digits);
if (!isNaN(num)) {
const words = numberToWords(num);
await tts(`${num} sayısının okunuşu: ${words}`);
}
}

getVariable(variableName)

Sistem değişkenini alır.

Parametreler:

  • variableName (string) - Değişken adı

Dönüş Değeri:

  • Promise<any> - Değişken değeri

Örnek:

// Sistem değişkenini alma
const channelVar = await getVariable("CHANNEL");
await addLog("Kanal bilgisi:", channelVar);

// Özel değişken alma
const customVar = await getVariable("CUSTOM_SETTING");
if (customVar) {
await tts(`Ayar değeri: ${customVar}`);
}

// Koşullu işlem
const debugMode = await getVariable("DEBUG_MODE");
if (debugMode === "true") {
await addLog("Debug modu aktif");
addLog("Debug: Uygulama başlatıldı");
}

// Hata yönetimi
try {
const value = await getVariable("NON_EXISTENT_VAR");
await addLog("Değişken değeri:", value);
} catch (error) {
await addLog("Değişken alınamadı:", error);
}

Yaygın Kullanım Örnekleri

API Yanıtı İşleme

// API'den veri al ve işle
const response = await get("https://api.example.com/customer/" + $arayan);
const customer = str2JSON(response);

if (customer.vip) {
await tts("VIP müşterimiz, öncelikli hizmete aktarılıyorsunuz");
} else {
const waitTime = numberToWords(customer.estimated_wait_minutes);
await tts(`Tahmini bekleme süreniz ${waitTime} dakika`);
}

Veri Toplama ve Gönderme

// Kullanıcıdan veri topla
const rating = await getDigitsWithTTS(
"Hizmetimizi 1 ile 5 arasında değerlendirin",
10000,
1
);

// Veriyi hazırla ve gönder
const feedbackData = {
caller: $arayan,
rating: parseInt(rating.digits),
timestamp: new Date().toISOString(),
app_id: $uygulamaId
};

const result = await post(
"https://feedback.example.com/api/submit",
JSON2str(feedbackData),
{ "Content-Type": "application/json" }
);

const response = str2JSON(result);
if (response.success) {
await tts("Değerlendirmeniz kaydedildi, teşekkürler");
}

Dinamik Menü Oluşturma

// Menü verilerini API'den al
const menuResponse = await get("https://api.example.com/menu");
const menuItems = str2JSON(menuResponse);

// Dinamik menü oluştur
let menuText = "Lütfen seçiminizi yapın: ";
menuItems.forEach((item, index) => {
const optionNumber = numberToWords(index + 1);
menuText += `${optionNumber} için ${item.name}, `;
});

const choice = await getDigitsWithTTS(menuText, 15000, 1);
const selectedIndex = parseInt(choice.digits) - 1;

if (selectedIndex >= 0 && selectedIndex < menuItems.length) {
const selectedItem = menuItems[selectedIndex];
await tts(`${selectedItem.name} seçildi`);
}