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