Home / మార్గదర్శకులు / ఆస్ట్రో కాంటాక్ట్ ఫారమ్ ఇంటిగ్రేషన్ (స్టాటిక్ & SSR)
ఇంటిగ్రేషన్ గైడ్ · ఆస్ట్రో & జామ్‌స్టాక్

ఆస్ట్రో కాంటాక్ట్ ఫారమ్ ఇంటిగ్రేషన్ (స్టాటిక్ & SSR)

ఇమెయిల్ సర్వర్‌లు లేదా డేటాబేస్‌లను నిర్వహించకుండా Lugatu ఎండ్‌పాయింట్‌లను ఉపయోగించి ఆస్ట్రో స్టాటిక్ సైట్‌లు (SSG) మరియు హైబ్రిడ్ సర్వర్ రూట్‌లకు సంప్రదింపు ఫారమ్‌లను ఎలా జోడించాలి.

1. ప్యూర్ స్టాటిక్ సైట్ (SSG) ఫారమ్ ఇంజెషన్

ఆస్ట్రో డిఫాల్ట్‌గా జీరో-జావాస్క్రిప్ట్‌కు ప్రసిద్ధి చెందింది. Lugatuతో, మీరు ప్రామాణిక HTML ఫారమ్‌లు మరియు తేలికైన క్లయింట్ సైడ్ ఫెచ్‌తో విచారణలను సేకరించేటప్పుడు మీ ఆస్ట్రో సైట్‌ను 100% స్థిరంగా ఉంచవచ్చు.

src/pages/contact.astro astro
---
// src/pages/contact.astro
---
<form id="astro-contact-form" class="space-y-4 max-w-md">
  <div>
    <label class="block text-sm font-semibold mb-1">Your Name</label>
    <input type="text" name="name" required class="w-full border rounded-xl p-2.5" />
  </div>
  <div>
    <label class="block text-sm font-semibold mb-1">Email Address</label>
    <input type="email" name="email" required class="w-full border rounded-xl p-2.5" />
  </div>
  <div>
    <label class="block text-sm font-semibold mb-1">Message</label>
    <textarea name="message" rows="4" required class="w-full border rounded-xl p-2.5"></textarea>
  </div>

  <input type="text" name="_gotcha" style="display:none !important" tabindex="-1" autocomplete="off" />

  <button type="submit" class="btn-primary-editorial py-2.5 px-6">Send Message</button>
</form>

<script>
  const form = document.getElementById('astro-contact-form') as HTMLFormElement;
  form?.addEventListener('submit', async (e) => {
    e.preventDefault();
    const formData = new FormData(form);

    const payload = {
      fields: {
        name: formData.get('name'),
        email: formData.get('email'),
        message: formData.get('message'),
      },
      honeypot: formData.get('_gotcha') || '',
    };

    const res = await fetch('https://www.lugatu.com/api/v1/public/forms/YOUR_PUBLIC_FORM_ID/submissions', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
      body: JSON.stringify(payload),
    });

    if (res.ok) {
      alert('Thank you! Message delivered.');
      form.reset();
    }
  });
</script>

2. సర్వర్ API కీతో ఆస్ట్రో హైబ్రిడ్ / SSR API రూట్

క్లౌడ్‌ఫ్లేర్ పేజీలు, నెట్‌లిఫై లేదా వెర్సెల్‌లో మీ ఆస్ట్రో సైట్ హైబ్రిడ్ లేదా SSR మోడ్‌లో నడుస్తుంటే, Astro API మార్గం ద్వారా సమర్పణలను సురక్షితంగా ఫార్వార్డ్ చేయండి.

src/pages/api/contact.ts typescript
import type { APIRoute } from 'astro';

export const POST: APIRoute = async ({ request }) => {
  const data = await request.formData();
  const fields = {
    name: data.get('name')?.toString(),
    email: data.get('email')?.toString(),
    message: data.get('message')?.toString(),
  };

  const res = await fetch(`https://www.lugatu.com/api/v1/forms/${import.meta.env.LUGATU_FORM_ID}/submissions`, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${import.meta.env.LUGATU_API_KEY}`,
      'Content-Type': 'application/json',
      'Idempotency-Key': crypto.randomUUID(),
    },
    body: JSON.stringify({ fields }),
  });

  return new Response(JSON.stringify({ success: res.ok }), {
    status: res.status,
    headers: { 'Content-Type': 'application/json' },
  });
};

భద్రత & ప్రమాణీకరణ మార్పులేనిది

భద్రతా సూచన: Astro క్లయింట్ వైపు స్క్రిప్ట్ ట్యాగ్‌లలో import.meta.env.LUGATU_API_KEYని ఎప్పుడూ బహిర్గతం చేయవద్దు. క్లయింట్ స్క్రిప్ట్‌లు తప్పనిసరిగా పబ్లిక్ ఎండ్ పాయింట్‌ని మాత్రమే ఉపయోగించాలి.

ట్రబుల్షూటింగ్ & సాధారణ తీసుకోవడం లోపాలు

ఫారమ్ స్థానికంగా పనిచేస్తుంది కానీ ఉత్పత్తి క్లౌడ్‌ఫ్లేర్ / నెట్‌లిఫై బిల్డ్‌లో విఫలమవుతుంది

మీ హోస్టింగ్ డాష్‌బోర్డ్‌లో మీ ప్రొడక్షన్ ఎన్విరాన్‌మెంట్ వేరియబుల్స్ (LUGATU_FORM_ID మరియు LUGATU_API_KEY) కాన్ఫిగర్ చేయబడిందని నిర్ధారించుకోండి.

తరచుగా అడిగే ప్రశ్నలు

నేను లుగాటుతో నా ఆస్ట్రో సైట్‌ను 100% స్టాటిక్‌గా ఉంచవచ్చా?

అవును. ప్యూర్ స్టాటిక్ (SSG) సైట్‌లు మీ హోస్టింగ్ ప్రొవైడర్‌లో ఎలాంటి సర్వర్ కంప్యూట్ అవసరం లేకుండా నేరుగా లుగాటు పబ్లిక్ ఎండ్‌పాయింట్‌కు సమర్పించబడతాయి.

మీ ఫారమ్ ముగింపు బిందువుని సృష్టించడానికి సిద్ధంగా ఉన్నారా?

సెకన్లలో ఉచితంగా ప్రారంభించండి. క్రెడిట్ కార్డ్ అవసరం లేదు.

ఉచితంగా ప్రారంభించండి →