mock (pengembangan, tanpa jaringan), plivo (API Suara + transfer XML +
ucapan GetInput), telnyx (Call Control v2), twilio (Suara Terprogram +
Media Streams).
Plugin Panggilan Suara berjalan di dalam proses Gateway. Jika Anda menggunakan
Gateway jarak jauh, instal dan konfigurasikan plugin pada mesin yang menjalankan
Gateway, lalu mulai ulang Gateway untuk memuatnya.
Mulai cepat
1
Instal plugin
- Dari npm
- Dari folder lokal (pengembangan)
2
Konfigurasikan penyedia dan webhook
Atur konfigurasi di bawah
plugins.entries.voice-call.config (lihat
Konfigurasi di bawah). Setidaknya: provider, kredensial
penyedia, fromNumber, dan URL webhook yang dapat dijangkau secara publik.3
Verifikasi penyiapan
streaming atau realtime) yang aktif.4
Uji cepat
--yes untuk melakukan panggilan
notifikasi keluar singkat:Konfigurasi
Jikaenabled: true tetapi penyedia yang dipilih tidak memiliki kredensial, proses awal
Gateway mencatat peringatan penyiapan belum lengkap beserta kunci yang hilang dan melewati
inisialisasi runtime. Perintah, panggilan RPC, dan alat agen tetap mengembalikan
konfigurasi tepat yang hilang saat digunakan.
Kredensial panggilan suara menerima SecretRef.
plugins.entries.voice-call.config.twilio.authToken, plugins.entries.voice-call.config.realtime.providers.*.apiKey, plugins.entries.voice-call.config.streaming.providers.*.apiKey, dan plugins.entries.voice-call.config.tts.providers.*.apiKey diselesaikan melalui permukaan SecretRef standar; lihat permukaan kredensial SecretRef.Referensi konfigurasi
Kunci tingkat atas di bawahplugins.entries.voice-call.config yang tidak ditampilkan di atas:
Twilio secara default menggunakan endpoint REST US1-nya. Untuk memproses panggilan di
Wilayah non-AS yang didukung, atur
twilio.region ke ie1 atau au1 dan gunakan kredensial dari
Wilayah tersebut. Lihat
panduan REST API non-AS Twilio.
Catatan eksposur dan keamanan penyedia
Catatan eksposur dan keamanan penyedia
- Twilio, Telnyx, dan Plivo semuanya memerlukan URL webhook yang dapat dijangkau secara publik.
mockadalah penyedia pengembangan lokal (tanpa panggilan jaringan).- Telnyx memerlukan
telnyx.publicKey(atauTELNYX_PUBLIC_KEY) kecualiskipSignatureVerificationbernilai true. skipSignatureVerificationhanya untuk pengujian lokal.- Pada tingkat gratis ngrok, atur
publicUrlke URL ngrok yang tepat; verifikasi tanda tangan selalu diterapkan. tunnel.allowNgrokFreeTierLoopbackBypass: truemengizinkan webhook Twilio dengan tanda tangan tidak valid hanya saattunnel.provider="ngrok"danserve.bindmerupakan loopback (agen lokal ngrok). Hanya untuk pengembangan lokal.- URL tingkat gratis ngrok dapat berubah atau menambahkan perilaku interstisial; jika
publicUrlbergeser, tanda tangan Twilio gagal. Produksi: pilih domain stabil atau funnel Tailscale.
Batas koneksi streaming
Batas koneksi streaming
streaming.preStartTimeoutMs(default5000) menutup soket yang tidak pernah mengirim bingkaistartyang valid.streaming.maxPendingConnections(default32) membatasi total soket pra-mulai yang belum diautentikasi.streaming.maxPendingConnectionsPerIp(default4) membatasi soket pra-mulai yang belum diautentikasi per alamat IP sumber.streaming.maxConnections(default128) membatasi semua soket aliran media yang terbuka (tertunda + aktif).
Migrasi konfigurasi lama
Migrasi konfigurasi lama
Penguraian konfigurasi menormalkan kunci lama ini secara otomatis dan mencatat
peringatan yang menyebutkan jalur pengganti; shim dihapus dalam rilis mendatang
(
2026.6.0), jadi jalankan openclaw doctor --fix untuk menulis ulang konfigurasi
yang telah di-commit ke bentuk kanonis:provider: "log"→provider: "mock"twilio.from→fromNumberstreaming.sttProvider→streaming.providerstreaming.openaiApiKey→streaming.providers.openai.apiKeystreaming.sttModel→streaming.providers.openai.modelstreaming.silenceDurationMs→streaming.providers.openai.silenceDurationMsstreaming.vadThreshold→streaming.providers.openai.vadThresholdrealtime.agentContext.includeSystemPromptdihapus (konteks waktu nyata sekarang menggunakan prompt agen yang dihasilkan)
Cakupan sesi
Secara default, Panggilan Suara menggunakansessionScope: "per-phone" sehingga panggilan berulang dari
penelepon yang sama mempertahankan memori percakapan. Atur sessionScope: "per-call" ketika
setiap panggilan operator harus dimulai dengan konteks baru, misalnya alur resepsionis,
pemesanan, IVR, atau jembatan Google Meet, saat nomor telepon yang sama dapat
mewakili rapat yang berbeda.
Panggilan Suara menyimpan kunci sesi yang dihasilkan di bawah namespace agen yang dikonfigurasi
(agent:<agentId>:voice:*). Kunci integrasi eksplisit mentah diselesaikan ke dalam
namespace yang sama: kunci agent:<configuredAgentId>:* kanonis mempertahankan
pemilik tersebut dan mematuhi alias cakupan global/session.mainKey inti; masukan
agent:* asing atau cacat dicakup sebagai kunci opak di bawah agen yang
dikonfigurasi; global dan unknown tetap menjadi sentinel global.
Percakapan suara waktu nyata
realtime memilih penyedia suara waktu nyata dupleks penuh untuk audio panggilan langsung.
Ini terpisah dari streaming, yang hanya meneruskan audio ke penyedia
transkripsi waktu nyata.
Perilaku runtime saat ini:
realtime.enableddidukung untuk Twilio dan Telnyx.realtime.providerbersifat opsional. Jika tidak diatur, Voice Call menggunakan penyedia suara waktu nyata pertama yang terdaftar.- Penyedia suara waktu nyata bawaan: Google Gemini Live (
google) dan OpenAI (openai), yang didaftarkan oleh plugin penyedianya. - Konfigurasi mentah milik penyedia berada di bawah
realtime.providers.<providerId>. - Voice Call menyediakan alat waktu nyata bersama
openclaw_agent_consultsecara default. Model waktu nyata dapat memanggilnya ketika penelepon meminta penalaran yang lebih mendalam, informasi terkini, atau alat OpenClaw biasa. realtime.consultPolicysecara opsional menambahkan panduan mengenai kapan model waktu nyata harus memanggilopenclaw_agent_consult.realtime.agentContext.enableddinonaktifkan secara default. Saat diaktifkan, Voice Call menyisipkan identitas agen yang dibatasi dan kapsul file ruang kerja terpilih ke dalam instruksi penyedia waktu nyata saat penyiapan sesi.realtime.fastContext.enableddinonaktifkan secara default. Saat diaktifkan, Voice Call terlebih dahulu mencari konteks memori/sesi yang telah diindeks untuk pertanyaan konsultasi dan mengembalikan cuplikan tersebut kepada model waktu nyata dalam batasrealtime.fastContext.timeoutMs, sebelum beralih ke agen konsultasi lengkap hanya jikarealtime.fastContext.fallbackToConsultbernilai true.- Jika
realtime.providermengarah ke penyedia yang tidak terdaftar, atau sama sekali tidak ada penyedia suara waktu nyata yang terdaftar, Voice Call mencatat peringatan dan melewati media waktu nyata alih-alih menggagalkan seluruh plugin. inboundPolicytidak boleh berupa"disabled"ketikarealtime.enabledbernilai true;validateProviderConfigmenolak kombinasi tersebut.- Kunci sesi konsultasi menggunakan kembali sesi panggilan tersimpan jika tersedia, lalu beralih ke
sessionScopeyang dikonfigurasi (per-phonesecara default, atauper-calluntuk panggilan terisolasi).
Kebijakan alat
realtime.toolPolicy mengendalikan proses konsultasi:
realtime.consultPolicy hanya mengendalikan instruksi model waktu nyata:
Konteks suara agen
Aktifkanrealtime.agentContext ketika jembatan suara harus terdengar seperti
agen OpenClaw yang dikonfigurasi tanpa menanggung perjalanan bolak-balik konsultasi agen penuh pada
interaksi biasa. Kapsul konteks ditambahkan satu kali saat sesi waktu nyata
dibuat, sehingga tidak menambah latensi per interaksi. Panggilan ke
openclaw_agent_consult tetap menjalankan agen OpenClaw lengkap dan sebaiknya digunakan
untuk pekerjaan alat, informasi terkini, pencarian memori, atau status ruang kerja.
Contoh penyedia waktu nyata
- Google Gemini Live
- OpenAI
Default: kunci API dari
realtime.providers.google.apiKey, GEMINI_API_KEY,
atau GOOGLE_API_KEY; model gemini-3.1-flash-live-preview;
suara Kore. sessionResumption dan contextWindowCompression aktif secara default
untuk panggilan yang lebih panjang dan dapat disambungkan kembali. Gunakan silenceDurationMs,
startSensitivity, dan endSensitivity untuk menyesuaikan pergantian giliran yang lebih cepat pada
audio telepon.Transkripsi streaming
streaming menghubungkan Twilio Media Streams ke penyedia transkripsi waktu nyata.
Jalur streaming klasik memerlukan provider: "twilio"; konfigurasi dengan
Telnyx, Plivo, atau mock ditolak. Audio langsung Telnyx menggunakan jalur
realtime.enabled yang diautentikasi secara terpisah.
Perilaku runtime saat ini:
streaming.providerbersifat opsional. Jika tidak diatur, Voice Call menggunakan penyedia transkripsi waktu nyata pertama yang terdaftar.- Penyedia transkripsi waktu nyata bawaan: Deepgram (
deepgram), ElevenLabs (elevenlabs), Mistral (mistral), OpenAI (openai), dan xAI (xai), yang didaftarkan oleh plugin penyedianya. - Konfigurasi mentah milik penyedia berada di bawah
streaming.providers.<providerId>. - Setelah Twilio mengirim pesan stream
startyang diterima, Voice Call segera mendaftarkan stream tersebut, mengantrekan media masuk melalui penyedia transkripsi selagi penyedia tersambung, dan memulai sapaan awal hanya setelah transkripsi waktu nyata siap. - Jika
streaming.providermengarah ke penyedia yang tidak terdaftar, atau tidak ada penyedia yang terdaftar, Voice Call mencatat peringatan dan melewati streaming media alih-alih menggagalkan seluruh plugin.
Contoh penyedia streaming
- OpenAI
- xAI
Default: kunci API
streaming.providers.openai.apiKey atau
OPENAI_API_KEY; model gpt-4o-transcribe; silenceDurationMs: 800;
vadThreshold: 0.5.TTS untuk panggilan
Voice Call menggunakan konfigurasi intimessages.tts untuk ucapan streaming pada
panggilan. Anda dapat menggantinya di bawah konfigurasi plugin dengan bentuk yang sama —
konfigurasi tersebut digabungkan secara mendalam dengan messages.tts.
- Kunci
tts.<provider>lama di dalam konfigurasi plugin (openai,elevenlabs,microsoft,edge) diperbaiki olehopenclaw doctor --fix; konfigurasi yang di-commit harus menggunakantts.providers.<provider>. - TTS inti digunakan ketika streaming media Twilio diaktifkan; jika tidak, panggilan beralih ke suara bawaan penyedia.
- Jika stream media Twilio sudah aktif, Voice Call tidak beralih ke
<Say>TwiML. Jika TTS telepon tidak tersedia dalam keadaan tersebut, permintaan pemutaran akan gagal alih-alih mencampurkan dua jalur pemutaran. - Ketika TTS telepon beralih ke penyedia sekunder, Voice Call mencatat peringatan beserta rantai penyedia (
from,to,attempts) untuk proses debug. - Ketika interupsi Twilio atau penghentian stream menghapus antrean TTS yang tertunda, permintaan pemutaran dalam antrean diselesaikan alih-alih membuat penelepon yang menunggu penyelesaian pemutaran terus tertahan.
Contoh TTS
- Hanya TTS inti
- Ganti ke ElevenLabs (hanya panggilan)
- Penggantian model OpenAI (deep-merge)
Panggilan masuk
Kebijakan panggilan masuk secara default adalahdisabled. Untuk mengaktifkan panggilan masuk, tetapkan:
responseModel,
responseSystemPrompt, dan responseTimeoutMs.
Perutean per nomor
Gunakannumbers saat satu Plugin Voice Call menerima panggilan untuk beberapa nomor
telepon dan setiap nomor harus berperilaku seperti saluran yang berbeda. Misalnya,
satu nomor dapat menggunakan asisten pribadi yang santai, sementara nomor lain menggunakan persona
bisnis, agen respons yang berbeda, dan suara TTS yang berbeda.
Rute dipilih dari nomor To yang dihubungi dan diberikan oleh penyedia. Kunci harus
berupa nomor E.164. Saat panggilan masuk, Voice Call menentukan rute yang cocok
satu kali, menyimpan rute yang cocok pada catatan panggilan, dan menggunakan kembali
konfigurasi efektif tersebut untuk salam, jalur respons otomatis klasik, jalur
konsultasi realtime, dan pemutaran TTS. Jika tidak ada rute yang cocok, konfigurasi
Voice Call global akan digunakan. Panggilan keluar tidak menggunakan numbers; teruskan target
keluar, pesan, dan sesi secara eksplisit saat memulai panggilan.
Penggantian rute saat ini mendukung:
inboundGreetingttsagentIdresponseModelresponseSystemPromptresponseTimeoutMs
tts di-deep-merge ke atas konfigurasi tts Voice Call global, sehingga
Anda biasanya cukup mengganti suara penyedia:
Kontrak keluaran lisan
Untuk respons otomatis, Voice Call menambahkan kontrak keluaran lisan yang ketat ke prompt sistem yang mewajibkan balasan JSON{"spoken":"..."}. Voice Call
mengekstrak teks ucapan secara defensif:
- Mengabaikan muatan yang ditandai sebagai konten penalaran/kesalahan.
- Mengurai JSON langsung, JSON berpagar, atau kunci
"spoken"sebaris. - Menggunakan teks biasa sebagai cadangan dan menghapus paragraf pembuka yang kemungkinan berisi perencanaan/meta.
Perilaku awal percakapan
Untuk panggilanconversation keluar, penanganan pesan pertama terikat pada status
pemutaran langsung:
- Pengosongan antrean saat interupsi dan respons otomatis hanya ditekan selama salam awal sedang aktif diucapkan.
- Jika pemutaran awal gagal, panggilan kembali ke
listeningdan pesan awal tetap dalam antrean untuk dicoba kembali. - Pemutaran awal untuk streaming Twilio dimulai saat stream tersambung tanpa penundaan tambahan.
- Interupsi membatalkan pemutaran aktif dan menghapus entri TTS Twilio yang sudah mengantre tetapi belum diputar. Entri yang dihapus diselesaikan sebagai dilewati, sehingga logika respons lanjutan dapat diteruskan tanpa menunggu audio yang tidak akan pernah diputar.
- Percakapan suara realtime menggunakan giliran pembuka milik stream realtime itu sendiri. Voice Call tidak mengirim pembaruan TwiML
<Say>lama untuk pesan awal tersebut, sehingga sesi<Connect><Stream>keluar tetap terhubung.
Masa tenggang pemutusan stream Twilio
Saat stream media Twilio terputus, Voice Call menunggu 2000 ms sebelum mengakhiri panggilan secara otomatis:- Jika stream tersambung kembali selama jangka waktu tersebut, pengakhiran otomatis dibatalkan.
- Jika tidak ada stream yang didaftarkan kembali setelah masa tenggang, panggilan diakhiri untuk mencegah panggilan aktif macet.
Pembersih panggilan kedaluwarsa
GunakanstaleCallReaperSeconds (default 120) untuk mengakhiri panggilan yang tidak pernah
dijawab dan tidak pernah mencapai status percakapan langsung, misalnya panggilan mode notifikasi
ketika penyedia tidak pernah mengirimkan Webhook terminal. Tetapkan ke 0 untuk
menonaktifkannya.
Pembersih berjalan setiap 30 detik dan hanya mengakhiri panggilan yang tidak memiliki
stempel waktu answeredAt serta belum berada dalam status terminal atau langsung
(speaking/listening), sehingga percakapan yang telah dijawab tidak pernah dibersihkan
oleh pewaktu ini; maxDurationSeconds (default 300) adalah batas terpisah yang
mengakhiri panggilan terjawab yang berlangsung terlalu lama.
Untuk alur bergaya notifikasi ketika operator dapat lambat mengirimkan Webhook
dering/jawab, naikkan staleCallReaperSeconds melebihi nilai default agar panggilan yang lambat tetapi normal
tidak dibersihkan terlalu dini; 120-300 detik merupakan rentang produksi yang
wajar.
Keamanan Webhook
Saat proksi atau tunnel berada di depan Gateway, Plugin merekonstruksi URL publik untuk verifikasi tanda tangan. Opsi berikut mengontrol header yang diteruskan dan dipercaya:string[]
Host dalam daftar izin dari header penerusan.
boolean
Percayai header yang diteruskan tanpa daftar izin.
string[]
Hanya percayai header yang diteruskan saat IP jarak jauh permintaan cocok dengan daftar.
- Perlindungan pemutaran ulang Webhook diaktifkan untuk Twilio, Telnyx, dan Plivo. Permintaan Webhook valid yang diputar ulang dikonfirmasi tetapi dilewati untuk efek samping.
- Giliran percakapan Twilio menyertakan token per giliran dalam callback
<Gather>, sehingga callback ucapan yang kedaluwarsa/diputar ulang tidak dapat memenuhi giliran transkrip tertunda yang lebih baru. - Permintaan Webhook yang tidak diautentikasi ditolak sebelum isi dibaca saat header tanda tangan yang diwajibkan penyedia tidak ada.
- Webhook voice-call menggunakan profil pembacaan isi pra-autentikasi bersama (ukuran isi maksimum 64 KB, batas waktu baca 5 detik) ditambah batas permintaan berjalan per kunci (8 permintaan bersamaan per kunci secara default) sebelum verifikasi tanda tangan.
CLI
voicecall
mendelegasikan ke runtime voice-call milik Gateway agar CLI tidak mengikat
server Webhook kedua. Jika tidak ada Gateway yang dapat dijangkau, perintah akan menggunakan
runtime CLI mandiri sebagai cadangan.
latency membaca calls.jsonl dari jalur penyimpanan voice-call default. Gunakan
--file <path> untuk menunjuk ke log yang berbeda dan --last <n> untuk membatasi
analisis pada N catatan terakhir (default 200). Keluaran mencakup min/maks/rata-rata,
p50, dan p95 untuk latensi giliran dan waktu tunggu mendengarkan.
Alat agen
Nama alat:voice_call.
Plugin voice-call menyertakan skill agen yang sesuai.
RPC Gateway
dtmfSequence hanya valid dengan mode: "conversation"; panggilan mode notifikasi
harus menggunakan voicecall.dtmf setelah panggilan tersedia jika memerlukan digit
setelah tersambung.
Pemecahan masalah
Penyiapan gagal mengekspos Webhook
Jalankan penyiapan dari lingkungan yang sama dengan tempat Gateway berjalan:twilio, telnyx, dan plivo, webhook-exposure harus berstatus hijau. publicUrl yang
telah dikonfigurasi tetap gagal jika mengarah ke ruang jaringan lokal atau privat,
karena operator tidak dapat melakukan panggilan balik ke alamat tersebut.
Jangan gunakan localhost, 127.0.0.1, 0.0.0.0, 10.x, 172.16.x-172.31.x,
192.168.x, 169.254.x, fc00::/7, fd00::/8, atau rentang NAT
tingkat operator lainnya sebagai publicUrl.
Panggilan keluar mode notifikasi Twilio mengirim TwiML <Say> awalnya secara langsung
dalam permintaan pembuatan panggilan, sehingga pesan lisan pertama tidak bergantung pada
Twilio yang mengambil TwiML Webhook. Webhook publik tetap diperlukan untuk callback
status, panggilan percakapan, DTMF sebelum tersambung, aliran waktu nyata, dan
kontrol panggilan setelah tersambung.
Gunakan satu jalur eksposur publik:
voicecall smoke adalah uji coba tanpa eksekusi kecuali Anda memberikan --yes.
Kredensial penyedia gagal
Periksa penyedia yang dipilih dan bidang kredensial yang diwajibkan:- Twilio:
twilio.accountSid,twilio.authToken, danfromNumber, atauTWILIO_ACCOUNT_SID,TWILIO_AUTH_TOKEN, danTWILIO_FROM_NUMBER. - Telnyx:
telnyx.apiKey,telnyx.connectionId,telnyx.publicKey, danfromNumber, atauTELNYX_API_KEY,TELNYX_CONNECTION_ID, danTELNYX_PUBLIC_KEY. - Plivo:
plivo.authId,plivo.authToken, danfromNumber, atauPLIVO_AUTH_IDdanPLIVO_AUTH_TOKEN.
Panggilan dimulai, tetapi Webhook penyedia tidak diterima
Pastikan konsol penyedia mengarah ke URL Webhook publik yang tepat:publicUrlmengarah ke jalur yang berbeda dariserve.path.- URL tunnel berubah setelah Gateway dimulai.
- Proksi meneruskan permintaan, tetapi menghapus atau menulis ulang header host/proto.
- Firewall atau DNS merutekan nama host publik ke lokasi selain Gateway.
- Gateway dimulai ulang tanpa mengaktifkan Plugin Voice Call.
webhookSecurity.allowedHosts ke nama host publik, atau gunakan
webhookSecurity.trustedProxyIPs untuk alamat proksi yang dikenal. Gunakan
webhookSecurity.trustForwardingHeaders hanya saat batas proksi
berada di bawah kendali Anda.
Verifikasi tanda tangan gagal
Tanda tangan penyedia diperiksa terhadap URL publik yang direkonstruksi OpenClaw dari permintaan masuk. Jika tanda tangan gagal:- Pastikan URL Webhook penyedia sama persis dengan
publicUrl, termasuk skema, host, dan jalur. - Untuk URL tingkat gratis ngrok, perbarui
publicUrlsaat nama host tunnel berubah. - Pastikan proksi mempertahankan header host dan proto asli, atau konfigurasikan
webhookSecurity.allowedHosts. - Jangan aktifkan
skipSignatureVerificationdi luar pengujian lokal.
Kegagalan bergabung ke Google Meet melalui Twilio
Google Meet menggunakan Plugin ini untuk bergabung melalui sambungan telepon Twilio. Pertama, verifikasi Voice Call:--dtmf-sequence. Panggilan telepon dapat berfungsi dengan baik
sementara rapat menolak atau mengabaikan urutan DTMF yang salah.
Google Meet memulai bagian panggilan telepon Twilio melalui voicecall.start dengan
urutan DTMF sebelum tersambung. Urutan yang berasal dari PIN menyertakan
voiceCall.dtmfDelayMs milik Plugin Google Meet (default 12000 ms) sebagai digit tunggu
Twilio di awal, karena prompt sambungan telepon Meet dapat terlambat tiba. Voice Call kemudian
mengalihkan kembali ke penanganan waktu nyata sebelum salam pembuka diminta.
Gunakan openclaw logs --follow untuk pelacakan fase langsung. Proses bergabung ke Meet
melalui Twilio yang berfungsi dengan baik mencatat urutan ini:
- Google Meet mendelegasikan proses bergabung melalui Twilio kepada Voice Call.
- Voice Call menyimpan TwiML DTMF sebelum tersambung.
- TwiML awal Twilio digunakan dan disajikan sebelum penanganan waktu nyata.
- Voice Call menyajikan TwiML waktu nyata untuk panggilan Twilio.
- Google Meet meminta ucapan pembuka dengan
voicecall.speaksetelah penundaan pasca-DTMF.
openclaw voicecall tail tetap menampilkan rekaman panggilan yang dipertahankan; berguna untuk
status dan transkrip panggilan, tetapi tidak setiap transisi Webhook/waktu nyata
ditampilkan di sana.
Panggilan waktu nyata tidak mengeluarkan suara
Pastikan hanya satu mode audio yang diaktifkan:realtime.enabled dan
streaming.enabled tidak boleh sama-sama bernilai true.
Untuk panggilan Twilio/Telnyx waktu nyata, verifikasi juga:
- Plugin penyedia waktu nyata dimuat dan didaftarkan.
realtime.providertidak ditetapkan atau menyebutkan penyedia yang terdaftar.- Kunci API penyedia tersedia bagi proses Gateway.
openclaw logs --followmenampilkan TwiML waktu nyata disajikan, jembatan waktu nyata dimulai, dan salam awal dimasukkan ke antrean.