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`);
}