Alur Notifikasi WA dari Template:
- Ambil template dari
login.otp_template_wa.
- Replace placeholder:
@{{otp}}, @{{expired}}, @{{app_name}}, @{{username}}.
- Kirim ke endpoint WA gateway menggunakan
wa_base_url + wa_api_key.
- Gunakan parameter opsional
delay, retry, dan retry_delay.
Contoh implementasi kirim OTP WA (sesuaikan endpoint resmi FlowKirim di akun Anda):
$settings = fn(string $key, string $default = '') =>
(string) (\App\Modules\LoginSettings\Models\AppSetting::query()->where('key', $key)->value('value') ?? $default);
$otpMessage = str_replace(
['@{{otp}}', '@{{expired}}'],
[$otpCode, (string) $expiredMinutes],
$settings('login.wa_otp_template', 'Kode OTP Anda: @{{otp}}')
);
$payload = [
'phone' => $phoneNumber,
'message' => $otpMessage,
'sender' => $settings('login.wa_sender'),
'device_id' => $settings('login.wa_device_id'),
'delay' => (int) $settings('login.wa_delay_seconds', '0'),
'retry' => (int) $settings('login.wa_retry_count', '0'),
];
$response = \Illuminate\Support\Facades\Http::withToken($settings('login.wa_api_key'))
->post(rtrim($settings('login.wa_base_url'), '/') . '/send', $payload);
Contoh reusable function untuk controller lain:
private function sendWaTemplateNotification(string $phone, array $vars = []): void
{
$settings = fn(string $key, string $default = '') =>
(string) (\App\Modules\LoginSettings\Models\AppSetting::query()->where('key', $key)->value('value') ?? $default);
$template = $settings('login.otp_template_wa', 'Kode OTP Anda: @{{otp}}');
$message = str_replace(
['@{{otp}}', '@{{expired}}', '@{{app_name}}', '@{{username}}'],
[
(string) ($vars['otp'] ?? ''),
(string) ($vars['expired'] ?? ''),
(string) ($vars['app_name'] ?? config('app.name')),
(string) ($vars['username'] ?? ''),
],
$template
);
\Illuminate\Support\Facades\Http::withToken($settings('login.wa_api_key'))
->post(rtrim($settings('login.wa_base_url'), '/') . '/send', [
'phone' => $phone,
'message' => $message,
'sender' => $settings('login.wa_sender'),
'device_id' => $settings('login.wa_device_id'),
'delay' => (int) $settings('login.wa_delay_seconds', '0'),
'retry' => (int) $settings('login.wa_retry_count', '0'),
'retry_delay' => (int) $settings('login.wa_retry_delay_seconds', '5'),
]);
}
OTP login masih nonaktif (sesuai setting saat ini). Guide ini untuk pemakaian notifikasi WA di controller/modul lain.
Parameter delay/retry/template mengacu pada konsep artikel FlowKirim. Endpoint final ikuti dokumentasi resmi akun FlowKirim Anda.