Files
yara724api/src/sms-orchestration/provider/parsian-template-messages.ts
SepehrYahyaee 94bde88cb6 YARA-941
2026-05-23 14:05:11 +03:30

66 lines
2.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { VerifyLookUpMessage } from "./sms-gateway.types";
const TOKEN_KEYS = ["token", "token2", "token3", "token10"] as const;
/** Kavenegar template name → plain-text body for Parsian (placeholders: {token}, {token2}, …). */
const PARSIAN_TEMPLATE_BODIES: Record<string, string> = {
"yara724-invite-link":
"کاربر محترم، لینک ورود به پرونده یارا724:\nشناسه: {token}\n{token2}",
"yara-field-expert-link":
"کارشناس میدانی بیمه {token} ({token2}) پرونده شما را بررسی می‌کند.\nلینک: {token3}",
"yara-blame-agreement":
"پرونده تصادف شما ({token}) آماده امضاست.\nلینک: {token2}",
"yara-claim-link":
"پرونده خسارت شما ({token}) آماده ثبت است.\nلینک: {token2}",
"yara-expert-lock":
"کارشناس ({token3}) پرونده {token} ({token2}) را در حال بررسی دارد.",
"yara-resend-documents":
"لطفاً مدارک پرونده {token} ({token2}) را مجدداً ارسال کنید.\nلینک: {token3}",
"yara-signature":
"امضای پرونده {token} ({token2}) توسط کارشناس {token3} بررسی شد.\nلینک: {token10}",
};
function applyTokens(
pattern: string,
data: Pick<
VerifyLookUpMessage,
"token" | "token2" | "token3" | "token10"
>,
): string {
let out = pattern;
for (const key of TOKEN_KEYS) {
const value = data[key];
if (value != null && value !== "") {
out = out.split(`{${key}}`).join(value);
}
}
return out.replace(/\{token\d*\}/g, "").trim();
}
export function buildParsianTemplateMessage(
data: VerifyLookUpMessage,
): string {
const authTemplate = process.env.AUTH_SMS_TEMPLATE?.trim();
if (authTemplate && data.template === authTemplate) {
const authMessage =
process.env.AUTH_SMS_MESSAGE?.trim() ??
"کاربر محترم رمز یکبار مصرف شما:\nCode: {token}";
return applyTokens(authMessage, data);
}
const body = PARSIAN_TEMPLATE_BODIES[data.template];
if (body) {
return applyTokens(body, data);
}
const parts = [
`پیام سیستم (${data.template})`,
data.token ? `کد: ${data.token}` : "",
data.token2 ?? "",
data.token3 ?? "",
data.token10 ?? "",
].filter(Boolean);
return parts.join("\n");
}