Home / మార్గదర్శకులు / కోణీయ సంప్రదింపు ఫారమ్ ఇంటిగ్రేషన్ (స్వతంత్ర & సంకేతాలు)
ఇంటిగ్రేషన్ గైడ్ · కోణీయ & SPA

కోణీయ సంప్రదింపు ఫారమ్ ఇంటిగ్రేషన్ (స్వతంత్ర & సంకేతాలు)

SMTP సర్వర్‌ని నిర్వహించకుండానే విశ్వసనీయమైన సంప్రదింపు ఫారమ్ డెలివరీ కోసం స్వతంత్ర భాగాలు, రియాక్టివ్ సిగ్నల్‌లు మరియు HttpClientని ఉపయోగించి Lugatuకి కోణీయ 17/18+ అప్లికేషన్‌లను కనెక్ట్ చేయండి.

1. రియాక్టివ్ సిగ్నల్స్‌తో స్వతంత్ర సంప్రదింపు ఫారమ్ భాగం

ఆధునిక కోణీయ భారీ NgModules కంటే స్వతంత్ర భాగాలు మరియు సంకేతాలకు అనుకూలంగా ఉంటుంది. ఈ అమలు రియాక్టివ్ లోడింగ్, ఎర్రర్ మరియు లుగాటుకు నేరుగా సమర్పించే విజయ స్థితులతో యాక్సెస్ చేయగల సంప్రదింపు ఫారమ్‌ను అందిస్తుంది.

contact-form.component.ts typescript
import { Component, signal, inject } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'app-contact-form',
  standalone: true,
  imports: [CommonModule, FormsModule],
  template: `
    <form (ngSubmit)="onSubmit()" class="space-y-4 max-w-md">
      <div>
        <label for="name" class="block text-sm font-semibold mb-1">Your Name</label>
        <input id="name" type="text" [(ngModel)]="name" name="name" required class="w-full border rounded-xl p-2.5" />
      </div>
      <div>
        <label for="email" class="block text-sm font-semibold mb-1">Email Address</label>
        <input id="email" type="email" [(ngModel)]="email" name="email" required class="w-full border rounded-xl p-2.5" />
      </div>
      <div>
        <label for="message" class="block text-sm font-semibold mb-1">Message</label>
        <textarea id="message" rows="4" [(ngModel)]="message" name="message" required class="w-full border rounded-xl p-2.5"></textarea>
      </div>

      <!-- Honeypot spam defense -->
      <input type="text" [(ngModel)]="gotcha" name="_gotcha" style="display:none !important" tabindex="-1" autocomplete="off" />

      <button type="submit" [disabled]="isSubmitting()" class="btn-primary-editorial py-2.5 px-6">
        {{ isSubmitting() ? 'Sending...' : 'Send Message' }}
      </button>

      <p *ngIf="isSuccess()" class="text-sm text-green-700 font-medium">Thank you! Your message has been received.</p>
      <p *ngIf="errorMessage()" class="text-sm text-red-600">{{ errorMessage() }}</p>
    </form>
  `,
})
export class ContactFormComponent {
  private http = inject(HttpClient);

  name = signal('');
  email = signal('');
  message = signal('');
  gotcha = signal('');

  isSubmitting = signal(false);
  isSuccess = signal(false);
  errorMessage = signal('');

  onSubmit() {
    if (this.gotcha()) return; // Silent discard for automated bot submissions

    this.isSubmitting.set(true);
    this.errorMessage.set('');

    const payload = {
      fields: {
        name: this.name(),
        email: this.email(),
        message: this.message(),
      },
      honeypot: this.gotcha(),
    };

    this.http.post('https://www.lugatu.com/api/v1/public/forms/YOUR_PUBLIC_FORM_ID/submissions', payload)
      .subscribe({
        next: () => {
          this.isSubmitting.set(false);
          this.isSuccess.set(true);
          this.name.set('');
          this.email.set('');
          this.message.set('');
        },
        error: () => {
          this.isSubmitting.set(false);
          this.errorMessage.set('Submission failed. Please try again.');
        },
      });
  }
}

2. SSR & కోణీయ యూనివర్సల్ సర్వర్-టు-సర్వర్ ఫార్వార్డింగ్

మీ కోణీయ అప్లికేషన్ కోణీయ SSR (నోడ్ / ఎక్స్‌ప్రెస్ ఇంజిన్)తో నడుస్తుంటే, మీరు మీ లుగాటు సర్వర్-టు-సర్వర్ API కీని రక్షించడానికి సర్వర్-సైడ్ రూట్ హ్యాండ్లర్ ద్వారా విచారణలను ప్రాక్సీ చేయవచ్చు.

server.ts typescript
// Express / Node backend endpoint in Angular SSR
server.post('/api/contact', async (req, res) => {
  const { name, email, message, _gotcha } = req.body;
  if (_gotcha) return res.status(200).json({ ok: true });

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

    res.status(response.status).json({ ok: response.ok });
  } catch (error) {
    res.status(500).json({ error: 'Failed to deliver message' });
  }
});

3. బోట్ డిఫెన్స్ & హనీపాట్ కాన్ఫిగరేషన్

Lugatu స్వయంచాలకంగా _gotcha ఫీల్డ్‌ని తనిఖీ చేస్తుంది. ప్రదర్శన: none మరియు tabindex="-1"ని ఉపయోగించి మానవ సందర్శకులకు కనిపించకుండా ఉంచండి. ప్రతి DOM ఇన్‌పుట్‌ని నింపే స్పామ్‌బాట్‌లు నిశ్శబ్ద అణచివేతను ప్రేరేపిస్తాయి.

tip

హనీపాట్ ఇన్‌పుట్‌ల కోసం ఫారమ్ లేబుల్‌లను ఎప్పుడూ ఉపయోగించవద్దు. స్వీయపూర్తిని ఆపివేసి, స్క్రీన్ రీడర్ యాక్సెస్ చేయగల పేర్ల నుండి ఫీల్డ్‌ను మినహాయించండి.

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

భద్రత మార్పులేనిది: సర్వర్-టు-సర్వర్ API కీలు (lug_live_...) ఎప్పుడూ క్లయింట్ వైపు కోణీయ ఆస్తులు లేదా environment.ts ఫైల్‌లలోకి బండిల్ చేయబడకూడదు. ప్రత్యక్ష క్లయింట్ సమర్పణల కోసం పబ్లిక్ ఎండ్‌పాయింట్‌ని ఉపయోగించండి లేదా సర్వర్ ఎండ్ పాయింట్‌ల ద్వారా ఫార్వార్డ్ చేయండి.

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

కోణీయ నుండి సమర్పించేటప్పుడు HTTP 403 FORBIDDEN_BROWSER_ORIGIN

పబ్లిక్ ఫారమ్ ఎండ్ పాయింట్‌లు ఏదైనా బ్రౌజర్ నుండి క్రాస్-ఆరిజిన్ సమర్పణలను అనుమతిస్తాయి. మీరు యాంగ్యులర్ నుండి నేరుగా సర్వర్-టు-సర్వర్ ఎండ్ పాయింట్ (POST /api/v1/forms/{id}/submissions)కి కాల్ చేస్తుంటే, పబ్లిక్ ఎండ్ పాయింట్‌కి మారండి (POST /api/v1/public/forms/{id}/submissions) లేదా బ్యాకెండ్ ద్వారా ఫార్వార్డ్ చేయండి.

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

క్లయింట్ హైడ్రేషన్‌తో కోణీయ SSRకి Lugatu మద్దతు ఇస్తుందా?

అవును. Lugatu పబ్లిక్ ఫారమ్ సమర్పణలు వినియోగదారు పరస్పర చర్య తర్వాత క్లయింట్ వైపు పొందడం లేదా HttpClient ద్వారా నిర్వహించబడతాయి, ఇది కోణీయ SSR మరియు క్లయింట్ హైడ్రేషన్‌తో పూర్తిగా అనుకూలంగా ఉంటుంది.

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

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

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