Ana içeriğe geç

Yardımcı Fonksiyonlar

Pi v2'de genel amaçlı yardımcı işlemler için kullanılan fonksiyonlar.

addLog(...args)

Uygulama loglarına mesaj ekler.

Parametreler:

  • ...args (any[]) - Loglanacak değerler (değişken sayıda parametre)

Dönüş Değeri:

  • Promise<void> - İşlem sonucu

Örnek:

// Basit log mesajı
await addLog("Uygulama başlatıldı");

// Birden fazla parametre
await addLog("Kullanıcı girişi:", $arayan, "Zaman:", new Date());

// Değişkenlerle log
const userChoice = "1";
const timestamp = new Date().toISOString();
await addLog("Seçim yapıldı:", userChoice, "Zaman:", timestamp);

// Hata loglama
try {
// Riskli işlem
const result = await someRiskyOperation();
await addLog("İşlem başarılı:", result);
} catch (error) {
await addLog("Hata oluştu:", error.message, "Kullanıcı:", $arayan);
}

// Debug loglama
const debugMode = await getVariable("DEBUG_MODE");
if (debugMode === "true") {
await addLog("Debug - Kanal:", $kanal, "ID:", $id);
await addLog("Debug - Parametreler:", $uygulamaId);
}

// Obje loglama
const userData = {
caller: $arayan,
called: $aranan,
app: $uygulamaId
};
await addLog("Kullanıcı verisi:", JSON2str(userData));

sleep(ms)

Belirtilen süre kadar bekler.

Parametreler:

  • ms (number) - Bekleme süresi (milisaniye)

Dönüş Değeri:

  • Promise<boolean> - Her zaman true döner

Örnek:

// 2 saniye bekle
await sleep(2000);
await tts("2 saniye beklendi");

// Kademeli mesajlar
await tts("İlk mesaj");
await sleep(1000);
await tts("İkinci mesaj");
await sleep(1500);
await tts("Üçüncü mesaj");

// İşlemler arası bekleme
const digits = await getDigitsWithTTS("Seçiminizi yapın", 5000, 1);
if (!digits.digits) {
await tts("Seçim yapılmadı, tekrar deneyiniz");
await sleep(1000); // Kısa bekleme
// Tekrar dene
}

// Sistem yükünü azaltma
for (let i = 0; i < 5; i++) {
await tts(`Sayı: ${i + 1}`);
await sleep(800); // Her sayı arasında bekleme
}

// API istekleri arası bekleme
try {
await post("https://api.example.com/start", data);
await sleep(500); // API'nin işlemesi için bekleme
const status = await get("https://api.example.com/status");
} catch (error) {
await addLog("API hatası:", error.message);
}

sendSMS(credentials, messages)

SMS mesajı gönderir.

Parametreler:

  • credentials (object) - SMS servis kimlik bilgileri
  • messages (array) - Gönderilecek mesajlar listesi

Dönüş Değeri:

  • Promise<object> - SMS gönderim sonucu

Örnek:

// SMS kimlik bilgileri
const smsCredentials = {
username: "sms_user",
password: "sms_pass",
sender: "COMPANY"
};

// Tek mesaj gönderme
const messages = [{
to: $arayan,
text: "Aramanız için teşekkürler. Destek ekibimiz en kısa sürede dönüş yapacaktır."
}];

try {
const result = await sendSMS(smsCredentials, messages);
if (result.success) {
await addLog("SMS gönderildi:", $arayan);
await tts("Size SMS ile bilgilendirme gönderildi");
}
} catch (error) {
await addLog("SMS hatası:", error.message);
await tts("SMS gönderiminde hata oluştu");
}

// Birden fazla mesaj
const multipleMessages = [
{
to: $arayan,
text: "Randevunuz onaylandı. Tarih: 15.03.2024 Saat: 14:00"
},
{
to: "+905551234567", // Yönetici numarası
text: `Yeni randevu: ${$arayan} - 15.03.2024 14:00`
}
];

const multiResult = await sendSMS(smsCredentials, multipleMessages);
await addLog("Çoklu SMS sonucu:", JSON2str(multiResult));

// Dinamik SMS içeriği
const ticketNumber = Math.floor(Math.random() * 100000);
const smsText = `Destek talebiniz oluşturuldu. Ticket No: ${ticketNumber}. Takip için: https://support.example.com/ticket/${ticketNumber}`;

const ticketSMS = [{
to: $arayan,
text: smsText
}];

await sendSMS(smsCredentials, ticketSMS);

// Koşullu SMS gönderimi
const userPreference = await getVariable("SMS_NOTIFICATIONS");
if (userPreference === "enabled") {
const notificationSMS = [{
to: $arayan,
text: "İşleminiz tamamlandı. Detaylar için web sitemizi ziyaret edin."
}];
await sendSMS(smsCredentials, notificationSMS);
}

Yaygın Kullanım Örnekleri

Detaylı Log Sistemi

// Uygulama başlangıcı
await addLog("=== Uygulama Başlatıldı ===");
await addLog("Arayan:", $arayan);
await addLog("Aranan:", $aranan);
await addLog("Uygulama ID:", $uygulamaId);
await addLog("Kanal:", $kanal);
await addLog("Çağrı ID:", $id);
await addLog("Zaman:", new Date().toISOString());

// İşlem adımları
await addLog("Adım 1: Kullanıcı kimlik doğrulama");
const authResult = await authenticateUser($arayan);
await addLog("Kimlik doğrulama sonucu:", authResult ? "Başarılı" : "Başarısız");

if (authResult) {
await addLog("Adım 2: Ana menü gösteriliyor");
const choice = await showMainMenu();
await addLog("Kullanıcı seçimi:", choice);
}

// Uygulama sonu
await addLog("=== Uygulama Sonlandırıldı ===");

Zamanlı İşlemler

// Geri sayım
for (let i = 5; i >= 1; i--) {
await tts(`${i}`);
await sleep(1000);
}
await tts("Başlıyoruz!");

// Aşamalı bilgilendirme
await tts("Lütfen bekleyiniz");
await sleep(2000);
await tts("İşleminiz devam ediyor");
await sleep(3000);
await tts("Neredeyse tamamlandı");
await sleep(2000);
await tts("İşleminiz tamamlandı");

SMS Bildirimi Sistemi

// Çağrı sonrası SMS bildirimi
const callEndTime = new Date().toLocaleString('tr-TR');
const callDuration = "5 dakika 30 saniye"; // Hesaplanmış süre

const callSummaryMessages = [{
to: $arayan,
text: `Çağrı Özeti:\nTarih: ${callEndTime}\nSüre: ${callDuration}\nİşlem: Tamamlandı\n\nTeşekkürler!`
}];

const smsCredentials = {
username: await getVariable("SMS_USERNAME"),
password: await getVariable("SMS_PASSWORD"),
sender: "SUPPORT"
};

try {
await sendSMS(smsCredentials, callSummaryMessages);
await addLog("Çağrı özeti SMS'i gönderildi");
} catch (error) {
await addLog("SMS gönderim hatası:", error.message);
}

Hata Yönetimi ve Loglama

async function safeOperation(operationName, operation) {
await addLog(`${operationName} başlatılıyor...`);
const startTime = Date.now();

try {
const result = await operation();
const duration = Date.now() - startTime;
await addLog(`${operationName} başarılı (${duration}ms)`);
return result;
} catch (error) {
const duration = Date.now() - startTime;
await addLog(`${operationName} hatası (${duration}ms):`, error.message);
throw error;
}
}

// Kullanım
const apiData = await safeOperation("API Veri Çekme", async () => {
return await get("https://api.example.com/data");
});

const smsResult = await safeOperation("SMS Gönderimi", async () => {
return await sendSMS(credentials, messages);
});

findCustomer(number)

Sherlock sisteminde mevcut müşteriyi telefon numarası ile arar.

Parametreler:

  • number (string) - Aranacak telefon numarası

Dönüş Değeri:

  • Promise<any> - Müşteri bilgileri veya arama sonucu

Örnek:

try {
const customer = await findCustomer("+905551234567");
if (customer) {
await addLog("Müşteri bulundu:", customer);
await tts(`Hoş geldiniz ${customer.name}`);
} else {
await addLog("Müşteri bulunamadı");
await tts("Müşteri kaydınız bulunamadı");
}
} catch (error) {
await addLog("Müşteri arama hatası:", error);
await tts("Müşteri bilgilerine erişimde bir hata oluştu");
}

// Arayan numarası ile otomatik arama
const customerInfo = await findCustomer($arayan);
if (customerInfo) {
await tts(`Merhaba ${customerInfo.name}, size nasıl yardımcı olabilirim?\`);
}