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();