trkit
Menü

Paketler

@trkit-app-pack/sms

Netgsm ve geliştirme sağlayıcısı, İYS filtresi, güvenli OTP.

.mdChatGPT'de açClaude'da aç
npm install @trkit-app-pack/sms

Kullanım rehberi: SMS ve OTP.

İstemci

import { createSms, createSmsFromEnv } from "@trkit-app-pack/sms";

const sms = createSms({ provider: "netgsm", usercode: "850…", password: "…", header: "MARKA" });
const dev = createSms({ provider: "dev" }); // konsola yazar, gönderilenler dev.outbox'ta
const fromEnv = createSmsFromEnv();         // TRKIT_SMS_PROVIDER, NETGSM_*

Gönderim

const r = await sms.send({
  to: ["0532 123 45 67", "+905551234567"],  // tekrarlar ayıklanır
  text: "Siparişiniz kargoda",
  kind: "transactional",                    // | "commercial-individual" | "commercial-merchant"
  header: "MARKA",                          // isteğe bağlı
});
// { success: true, messageId: "...", raw }

Sabit hatlar reddedilir (SmsError, kod INVALID_NUMBER).

OTP

import { createOtp, memoryOtpStore, type OtpStore } from "@trkit-app-pack/sms";

const otp = createOtp({
  sms,
  store: memoryOtpStore(),   // üretimde Redis/DB
  secret: process.env.OTP_SECRET!,
  length: 6,
  ttlSeconds: 180,
  maxAttempts: 5,
  resendSeconds: 60,
  message: (kod, dk) => `Doğrulama kodunuz: ${kod}. ${dk} dakika geçerlidir.`,
});

await otp.send("0532 123 45 67");   // { sent: true, expiresAt } | { sent: false, retryAfter }
await otp.verify("05321234567", "123456"); // { ok: true } | { ok: false, reason }

reason: invalid, expired, too_many_attempts, invalid_number.

Yardımcılar

toTrMsisdn("+90 532 123 45 67");   // "5321234567"
countSmsSegments("Türkçe metin…");  // Türkçe karakterli SMS 155, diğerleri 160 karakter