Mengaktifkan pg_net

 --- cara mengecek pg_net
 select * from pg_available_extensions where name = 'pg_net';
  --- cara mengaktifkan pg_net
--- create extension if not exists pg_net;

Trigger + Function (AFTER INSERT)

create or replace function trg_send_wa_on_booking_insert()
returns trigger
language plpgsql
as $$
declare
  wa_url text;
  pesan_raw text;
  pesan_encoded text;
  penerima text;
begin
  if new.nomor_wa is null then
    return new;
  end if;

  -- Pesan asli
  pesan_raw := format(
    'Assalamu’alaikum warahmatullahi wabarakatuh.%s' ||
    'Pengajuan peminjaman aula untuk kegiatan "%s" telah kami terima dan saat ini sedang menunggu proses persetujuan.%s%s' ||
    'Mohon menunggu konfirmasi selanjutnya — informasi resmi akan disampaikan oleh Admin Aula melalui nomor berikut:%s' ||
    '📞 +62 858-5573-1575.%s%s' ||
    'Status saat ini: %s.',
    E'\\n\\n',
    new.event_name,
    E'\\n\\n',
    E'\\n\\n',
    E'\\n',
    E'\\n\\n',
    E'\\n',
    new.status
  );

  -- Encode karakter agar aman di URL
  pesan_encoded := replace(pesan_raw, ' ', '%20');
  pesan_encoded := replace(pesan_encoded, E'\\n', '%0A');
  pesan_encoded := replace(pesan_encoded, '''', '%27');
  pesan_encoded := replace(pesan_encoded, '’', '%27');
  pesan_encoded := replace(pesan_encoded, '“', '%22');
  pesan_encoded := replace(pesan_encoded, '”', '%22');
  pesan_encoded := replace(pesan_encoded, ',', '%2C');
  pesan_encoded := replace(pesan_encoded, '.', '%2E');

  -- Nomor penerima
  penerima := new.nomor_wa || '|6285855731575';

  -- Buat URL final
  wa_url := '<https://sender.digilunar.com/send-message>'
            || '?api_key=tq1t9SX4udY7gwDGkdFsKlBP03J103'
            || '&sender=6285708249267'
            || '&number=' || penerima
            || '&message=' || pesan_encoded;

  -- Debug opsional: bisa diaktifkan dulu untuk tes
  -- raise notice 'WA URL: %', wa_url;

  perform net.http_get(url := wa_url);

  return new;
end;
$$;

drop trigger if exists trg_booking_send_wa on bookings;
create trigger trg_booking_send_wa
after insert on bookings
for each row
execute function trg_send_wa_on_booking_insert();