npm install @trkit-app-pack/smsKullanı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