export type MsgContext = { Body?: string; From?: string; To?: string; MessageSid?: string; MediaPath?: string; MediaUrl?: string; MediaType?: string; Transcript?: string; ChatType?: string; GroupSubject?: string; GroupMembers?: string; SenderName?: string; SenderE164?: string; Surface?: string; }; export type TemplateContext = MsgContext & { BodyStripped?: string; SessionId?: string; IsNewSession?: string; }; // Simple {{Placeholder}} interpolation using inbound message context. export function applyTemplate(str: string | undefined, ctx: TemplateContext) { if (!str) return ""; return str.replace(/{{\s*(\w+)\s*}}/g, (_, key) => { const value = ctx[key as keyof TemplateContext]; return value ?? ""; }); }