Dokumen ini memberikan skema rekaman metadata sesi panggilan
— dokumen JSON yang dikeluarkan UJET di akhir setiap panggilan suara. UJET
mengirimkan rekaman ke integrasi CRM Anda sebagai isi perintah
akhir sesi dan menulis rekaman ke konfigurasi penyimpanan eksternal Anda sebagai file
metadata.json. Setiap panggilan menghasilkan tepat satu catatan. idtingkat teratas mengidentifikasi setiap data secara unik. Gunakan skema ini untuk menyerap rekaman ke dalam sistem hilir, memvalidasi payload yang diterima, atau memetakan kolom ke dalam kolom gudang data.
Root skema
Catatan metadata sesi panggilan adalah satu objek JSON yang merepresentasikan sesi panggilan suara. Tiga konsep di tingkat teratas menentukan identitas dan bentuk rekaman.
Kunci utama — id (bilangan bulat)
id tingkat teratas mengidentifikasi sesi panggilan secara unik dalam tenant Anda. Satu
rekaman ada per panggilan. Semua kolom tingkat teratas, array, dan objek bertingkat lainnya menjelaskan atribut panggilan yang diidentifikasi oleh id ini.
Diskriminator handler — agent_info (object, oneOf)
Satu objek yang bentuknya bervariasi, bergantung pada pengendali terakhir panggilan. Kedua varian bersifat eksklusif — rekaman hanya berisi satu varian:
Varian agen manusia — ada jika agen manusia menangani panggilan terakhir. Membawa
email,first_name,last_name, danagent_numberselain kolomid,name, danavatar_urlyang dibagikan.Varian agen virtual — ada jika agen virtual menangani panggilan terakhir. Membawa
va_aliasdan menghilangkanemail,first_name,last_name, danagent_number.
Untuk mendeteksi varian yang dibawa oleh suatu rekaman, periksa keberadaan kolom khusus varian — biasanya agent_info.email untuk varian agen manusia atau agent_info.va_alias untuk varian agen virtual. Untuk bentuk lengkap setiap varian, lihat agent dan virtual_agent.
Diskriminator bentuk panggilan — call_type, session_type,
session_type_v2 (string)
Tiga tampilan paralel dari jenis panggilan pokok yang sama. Keduanya tidak pernah berbeda pendapat tentang jenis panggilan yang diwakili oleh suatu rekaman; keduanya hanya berbeda dalam kosakata yang digunakan untuk memberi nama jenis panggilan.
call_typemenggunakan kosakata enum lama (misalnya,Voice Inbound (App),Voice Outbound, atauVoice Internal).session_typeselalu menampilkan string yang sama dengancall_type. UJET menyediakan kolom ini untuk kompatibilitas mundur dengan integrasi yang menggunakan kolom ini sebagai kunci; perlakukan kolom ini sebagai aliascall_typeyang tidak digunakan lagi. Lihat Pembuatan versi dan penghentian penggunaan.session_type_v2menggunakan kosakata enum saat ini. Kosakata ini memperluas kosakatacall_typedengan perbedaan masuk yang lebih terperinci — misalnya,Voice Inbound (Mobile)danVoice Inbound (IVR using Mobile), bukanVoice Inbound (App)danVoice Inbound (IVR using App)yang lebih luas. Untuk jenis panggilan yang tidak memiliki nilai khusus v2,session_type_v2menampilkan string yang sama dengancall_type. Integrasi baru harus menguraisession_type_v2.
Untuk nilai setiap kolom, lihat Informasi inti.
Informasi inti
Properti ini mencatat informasi inti panggilan:
id(integer): ID unik untuk setiap sesi panggilan. Ini adalah kunci utama yang membedakan satu panggilan dengan panggilan lainnya.call_uuid(string atau null): ID unik yang mengorelasikan panggilan di seluruh asal dan penerima tenant dalam interaksi perutean panggilan dinamis (DCR). Kedua bagian panggilan DCR memiliki nilaicall_uuidyang sama, sehingga pelanggan dapat menjembatani data antar-lingkungan. Kolom ini bernilai null atau kosong untuk panggilan apa pun yang bukan interaksi DCR, dan untuk panggilan yang terjadi sebelum UJET menambahkan kolom ini.lang(string): Kode bahasa ISO 639 untuk panggilan (misalnya, "en" untuk bahasa Inggris atau "es" untuk bahasa Spanyol). Kode ini membantu Anda melakukan analisis dan pelaporan khusus bahasa.call_type(string): Jenis panggilan, menggunakan kosakata jenis lama. Nilai mencakup "Voice Inbound (App)", "Voice Inbound (Web)", "Voice Inbound (IVR)", "Voice Inbound (IVR using App)", "Voice Inbound (API)", "Voice Inbound (Direct)", "Voice Inbound (Extension)", "Voice Scheduled (App)", "Voice Scheduled (Web)", "Voice Scheduled (API)", "Voice Callback", "Voice Callback (Web)", "Voice Outbound", "Voice Outbound (API)", "Voice Outbound (Direct)", "Voice Outbound (UCaaS)", "Voice Internal", "Voice Campaign (Acqueon)", "Voice Campaign (<nama merek Anda>)", dan "Agent Scheduled Call".session_type(string): Duplikatcall_type(nilai yang sama) yang dipertahankan UJET untuk kompatibilitas mundur. Lihat Pembuatan versi dan penghentian penggunaan: Duplikat lama.session_type_v2(string): Jenis panggilan, menggunakan kosakata jenis saat ini. Hal ini menyempurnakan nilaicall_typedengan perbedaan masuk yang lebih terperinci (misalnya, "Masuk Suara (Seluler)" dan "Masuk Suara (IVR menggunakan Seluler)" sebagai pengganti "Masuk Suara (Aplikasi)" dan "Masuk Suara (IVR menggunakan Aplikasi)"). Nilai mencakup "Voice Inbound (Seluler)", "Voice Inbound (Web)", "Voice Inbound (IVR)", "Voice Inbound (IVR menggunakan Seluler)", "Voice Inbound (API)", "Voice Inbound (Langsung)", "Voice Inbound (Ekstensi)", "Voice Scheduled (Seluler)", "Voice Scheduled (Web)", "Voice Scheduled (API)", "Voice Callback", "Voice Callback (Web)", "Voice Outbound", "Voice Outbound (API)", "Voice Outbound (Langsung)", "Voice Outbound (UCaaS)", "Voice Internal", "Voice Campaign (Acqueon)", "Voice Campaign (<nama merek Anda>)", dan "Agent Scheduled Call".status(string): Status panggilan saat ini. Nilai yang mungkin meliputi "scheduled", "queued", "connected", "finished", "failed", dan "deflected". Ini melacak progres panggilan melalui siklus prosesnya.created_at(string, date-time): Stempel waktu yang tepat saat UJET membuat rekaman panggilan.queued_at(string, tanggal & waktu, atau null): Stempel waktu saat panggilan memasuki antrean, atau null jika panggilan tidak memasuki antrean.assigned_at(string, date-time, atau null): Stempel waktu saat UJET menetapkan panggilan ke agen, atau null jika UJET tidak menetapkan panggilan.connected_at(string, date-time, atau null): Stempel waktu saat panggilan terhubung.ends_at(string, date-time, atau null): Stempel waktu saat panggilan berakhir.scheduled_at(string, date-time, atau null): Stempel waktu saat UJET menjadwalkan panggilan, atau null jika panggilan dilakukan secara langsung.updated_at(string, date-time): Stempel waktu saat UJET terakhir kali memperbarui data panggilan.wait_duration(integer atau null): Total waktu yang dihabiskan konsumen dalam antrean selama seluruh panggilan, dalam detik, atau null jika UJET tidak mencatat waktu antrean. Untuk waktu antrean yang dikelompokkan menurut segmen individual, lihat arrayqueue_durations(Durasi antrean). Lihat Pembuatan versi dan penghentian penggunaan: Nomenklatur kolom waktu tunggu.call_duration(integer atau null): Total durasi panggilan, dalam detik.hold_duration(integer atau null): Total waktu konsumen menunggu, dalam detik, atau null jika tidak ada waktu tunggu.rating(integer atau null): Rating kepuasan pelanggan (CSAT) yang dikirimkan konsumen, atau null jika konsumen tidak mengirimkan rating.has_feedback(boolean): Flag yang menunjukkan apakah konsumen memberikan masukan setelah panggilan.voip_provider(string): Penyedia VoIP untuk panggilan. (Catatan: kolom ini tidak digunakan lagi dan selalu menampilkan "deprecated".)out_ticket_id(string atau null): ID tiket yang dibuat UJET di sistem CRM eksternal.out_ticket_url(string, uri, atau null): URL tiket CRM.is_out_ticket_account(boolean atau null): Menunjukkan apakah tiket CRM mewakili pelanggan (benar) atau interaksi panggilan (salah).verified(boolean): Menunjukkan apakah tindakan smart verifikasi memverifikasi interaksi.recording_url(string, uri, atau null): URL rekaman panggilan, atau null jika tidak ada rekaman yang tersedia.recording_permission(string atau null): Status izin perekaman konsumen. Nilai yang mungkin: "not_asked", "granted", "denied".voicemail_reason(string): Alasan pesan suara, jika ada. Opsinya mencakup "not_voicemail", "temporary_redirection", dan "after_hour_deflection".disconnected_by(string atau null): Menunjukkan pihak yang mengakhiri panggilan. Nilai yang mungkin:disconnected_by_unknown,disconnected_by_agent,disconnected_by_end_user,disconnected_by_virtual_agent,disconnected_by_system.fail_reason(string atau null): Alasan panggilan gagal, atau "nothing" untuk panggilan yang tidak gagal. Nilai yang mungkin mencakupnothing,unknown,expired,eu_canceled,eu_rejected,eu_abandoned,eu_in_menu_abandoned,eu_busy,eu_wrong_number,eu_no_answer,eu_noti_failed,ag_canceled,ag_ignored,ag_mic_no_device,ag_mic_denied,voip_twilio_error,voip_tokbox_error,voip_invalid_token,voip_conn_general,voip_conn_timeout,voip_conn_signal.fail_details(string atau null): Detail tambahan yang dapat dibaca manusia yang menyertaifail_reason, jika tersedia.adapter_fail_code(integer atau null): Kode numerik yang sesuai denganfail_reasondi tingkat panggilan. Null jika panggilan tidak gagal. Enumerasi yang sama digunakan padaadapter_fail_codeper peserta di §17.adapter_fail_message(string atau null): Pesan yang dapat dibaca manusia yang sesuai denganadapter_fail_code. Null jika panggilan tidak gagal.support_number(string atau null): Nomor telepon yang dihubungi konsumen untuk menghubungi pusat kontak, dalam format E.164. Diisi untuk panggilan yang berasal dari IVR; mungkin null untuk saluran lainnya.queue_priority_level(bilangan bulat; hanya ada jika prioritas antrean diaktifkan di akun Anda): Prioritas antrean yang ditetapkan untuk panggilan.
Informasi agen dan agen virtual
Bagian ini menjelaskan siapa atau apa yang menangani panggilan:
agent_info(objek): Kolom ini dapat menyimpan informasi tentang agen manusia atau agen virtual. Fungsi ini menggunakan kata kuncioneOfuntuk menentukan bahwa fungsi ini dapat berupa salah satu dari dua jenis.agent(objek): Informasi tentang agen manusia:id(integer): ID unik agen.agent_number(string atau null): ID yang ditetapkan ke agen.email(string, email): Alamat email agen.name(string): Nama lengkap agen.last_name(string): Nama belakang agen.first_name(string): Nama depan agen.avatar_url(string, uri): URL gambar avatar agen.
virtual_agent(objek): Informasi tentang agen virtual:id(integer): ID unik agen virtual.name(string): Nama agen virtual.avatar_url(string, uri, atau null): URL gambar avatar agen virtual.va_alias(string atau null): Alias tampilan untuk agen virtual, jika Anda menyetelnya. Selalu ada di payload; null jika tidak ada alias yang ditetapkan.
Navigasi menu
selected_menu(objek atau null): Informasi tentang menu yang dipilih konsumen selama panggilan.id(integer): ID unik menu.name(string): Nama menu.parent_id(bilangan bulat atau null): ID menu induk, jika ada.position(integer): Posisi menu relatif terhadap menu lain di tingkat yang sama.deleted(boolean): Apakah menu dihapus atau tidak.menu_type(string): Jenis menu (sepertiivr_menuatausms_menu).hidden(boolean): Apakah menu terlihat dan tersedia untuk digunakan.
menu_path(objek atau null): Menjelaskan jalur hierarkis menu yang dijelajahi konsumen.items_count(integer): Jumlah menu di jalur.name(string): String nama menu yang dipisahkan dengan garis miring (misalnya, "Dukungan/Penagihan").materialized_path(string): String ID menu yang dipisahkan dengan garis miring.
automation_redirection(objek; hanya ada jika log penolakan pertama panggilan dikaitkan dengan grup pengalihan): Detail tentang pengalihan antrean berbasis persentase yang memengaruhi perutean panggilan ini.percent_redirection(boolean): Apakah Anda mengaktifkan pengalihan berbasis persentase di menu sumber.redirection_group(array): Array satu elemen yang berisi detail grup pengalihan:group_label(string): Label yang mudah dibaca untuk grup pengalihan (misalnya, "Grup Pengalihan 1").destination(objek atau null): Tujuan pengalihan yang Anda konfigurasi di grup.after_hours(boolean atau null): Apakah Anda mengaktifkan opsi pengalihan di luar jam kerja pada grup.ah_destination(objek atau null): Tujuan pengalihan di luar jam kerja yang Anda konfigurasi di grup.
Detail pengguna akhir
end_user(objek atau null): Informasi tentang konsumen:id(bilangan bulat atau null): ID internal konsumen.identifier(string atau null): ID eksternal untuk konsumen.out_contact_id(string atau null): ID konsumen di CRM.
Data kustom dan yang disediakan SDK
customer_flag(objek; hanya ada saat situs meneruskan data autentikasi kustom): atribut data kustom terkait autentikasi yang diteruskan oleh aplikasi atau situs konsumen di awal sesi. Payload hanya menyertakan subset yang Anda tetapkan sebagai parameter autentikasi.api_dap_request(objek; hanya ada saat Anda mengaktifkan parameter data dan mengonfigurasinya agar disertakan dalam metadata sesi): Snapshot nilai parameter data panggilan, sebagaimana Anda mengonfigurasinya di setelan API eksternal akun Anda. Jenis kunci dan nilai bergantung pada konfigurasi parameter data Anda.form_responses(array; hanya ada jika konsumen mengirimkan setidaknya satu respons formulir): Respons yang dikumpulkan formulir SDK dalam panggilan selama sesi. Setiap entri berisi:id(string atau bilangan bulat): ID respons formulir.title(string): Judul formulir yang ditampilkan kepada konsumen.smart_action_id(bilangan bulat atau null): ID tindakan smart yang memicu formulir, jika ada.questions(array): Pasangan pertanyaan dan jawaban yang dikumpulkan.
Lampiran
photos(array): Foto yang diupload konsumen selama panggilan.id(integer): ID unik untuk foto.photo_type(string): Jenis atau sumber foto (seperti "foto").url(string, uri): URL ke foto yang disimpan.smart_action_type(string atau null): Tindakan smart yang menghasilkan foto, jika ada.transfer_id(integer atau null): ID peristiwa transfer untuk foto, jika konsumen menguploadnya setelah transfer.
videos(array): Video yang diupload konsumen selama panggilan.id(integer): ID unik untuk video.url(string, uri): URL ke video yang disimpan.smart_action_type(string atau null): Tindakan smart yang menghasilkan video, jika ada.transfer_id(integer atau null): ID peristiwa transfer untuk video, jika konsumen menguploadnya setelah transfer.
Pengalihan panggilan
deflection(string): Menunjukkan apakah dan bagaimana panggilan dialihkan (misalnya, "no_deflection", "over_cap_phone", atau "after_hours_voicemail").deflection_details(array): Memberikan log mendetail tentang pengalihan selama panggilan. Kolom pembelokan dalam setiap entri menggunakan enumerasi yang ditentukan dalam Definitions: deflection. Setiap entri mencakup:id(integer): ID unik untuk catatan log pengalihan.call_id(integer): ID unik panggilan.transfer_id(integer atau null): ID unik pengalihan yang terkait dengan pengalihan, jika ada.deflection(string; lihat Definitions: deflection untuk nilai yang diizinkan): Jenis pengalihan.created_at(string, date-time): Stempel waktu saat pengalihan terjadi.from_menu_path(objek atau null): Jalur menu tempat pengalihan dimulai.to_menu_path(objek atau null): Jalur menu yang digunakan UJET untuk mengalihkan panggilan.to_sip_uri(string; hanya ada jika UJET mengalihkan panggilan ke tujuan SIP): URI SIP yang menjadi tujuan pengalihan panggilan oleh UJET, jika berlaku.to_sip_headers(objek; hanya ada saat UJET mengalihkan panggilan ke tujuan SIP): Header SIP yang digunakan UJET untuk mengalihkan panggilan, jika berlaku.
Transfer
transfers(array): Satu entri per peristiwa transfer selama panggilan. Mencatat transfer hangat dan dingin antara agen, agen virtual, dan menu.id(integer): ID unik untuk transfer.status(string): Status transfer saat ini (misalnya, mentransfer, terhubung, atau gagal).fail_reason(string): Alasan transfer gagal, atau "nothing" jika tidak gagal.created_at(string, date-time): Waktu transfer dimulai.assigned_at(string, date-time, atau null): Saat UJET menetapkan transfer ke pihak penerima.connected_at(string, date-time, atau null): Saat transfer terhubung.updated_at(string, date-time): Kapan UJET terakhir kali memperbarui catatan transfer.call_duration(integer): Durasi panggilan segmen yang dialihkan, dalam detik.wait_duration(integer): Waktu tunggu konsumen selama transfer, dalam detik.deflection(string): Jenis pengalihan yang terkait dengan transfer, jika ada.answer_type_path(string atau null): Jalur yang menjelaskan cara panggilan yang ditransfer diselesaikan.from_menu_path/to_menu_path(objek atau null): Jalur menu sebelum dan setelah transfer; bentuknya sama denganmenu_pathdi Definitions.from_agent/to_agent(objek atau null): Agen manusia di setiap sisi transfer; bentuknya sama dengan objekagentdalam Definitions.from_virtual_agent/to_virtual_agent(objek atau null): Agen virtual di setiap sisi transfer; bentuknya sama dengan objekvirtual_agentdi Definitions.from_queue_priority_level/to_queue_priority_level(bilangan bulat atau null): Prioritas antrean sebelum dan setelah transfer. Hanya ada jika Anda mengaktifkan prioritas antrean di akun Anda.
Durasi penanganan panggilan
handle_durations(array): Array objek, yang masing-masing mewakili segmen panggilan yang ditangani oleh agen. Fitur ini mendukung analisis waktu penanganan agen.id(integer): ID unik untuk durasi penanganan.agent_id(integer): ID agen.acw_duration(integer): durasi pekerjaan pasca-panggilan.bcw_duration(integer): durasi pekerjaan sebelum panggilan.call_duration(integer): Durasi panggilan selama segmen ini.menu_path_id(integer atau null): ID jalur menu.menu_path(string): Nama jalur menu.lang(string): Bahasa yang digunakan.barged(boolean): Apakah supervisor menyela panggilan.transfer(boolean): Apakah transfer terjadi.transfer_id(bilangan bulat atau null): ID transfer.transfer_cold(boolean atau null): Apakah transfer dilakukan tanpa pemberitahuan.started_at(string, date-time): Stempel waktu mulai.ended_at(string, date-time, atau null): Stempel waktu akhir.scheduled_at(string, date-time, atau null): Stempel waktu terjadwal.hold_duration(integer atau null): Durasi penahanan selama segmen ini.assigned_connection_duration(integer): Durasi konsumen menunggu saat agen terhubung selama fase ini.session_breakthrough(objek; hanya ada saat panggilan berhasil melewati status tidak tersedia agen): Detail tentang penugasan panggilan yang berhasil melewati status tidak tersedia agen, jika berlaku.
Durasi antrean
queue_durations(array): Array objek, yang masing-masing mewakili segmen panggilan saat konsumen berada dalam antrean. Hal ini mendukung analisis waktu tunggu dan tingkat layanan.id(integer): ID unik untuk durasi antrean.agent_id(integer): ID agen.ended_at(string, date-time): Stempel waktu akhir.lang(string): Bahasa yang digunakan.menu_path_id(integer): ID jalur menu.menu_path(string): Nama jalur menu.queue_duration(integer): Durasi segmen antrean.started_at(string, date-time): Stempel waktu mulai.transfer_cold(boolean): Apakah panggilan dialihkan tanpa pemberitahuan.transfer(boolean): Apakah transfer terjadi.transfer_id(bilangan bulat atau null): ID transfer.service_level_abandon_time_threshold(integer): Nilai minimum waktu untuk pengabaian tingkat layanan.service_level_event(string): Status peristiwa tingkat layanan ("excluded", "in_sla", "not_in_sla").service_level_target_percent(integer): Persentase target untuk kepatuhan tingkat layanan.service_level_target_time(integer): Waktu target untuk kepatuhan tingkat layanan.
Eskalasi agen virtual ke agen manusia
escalations(array): Setiap entri mewakili eskalasi dari agen virtual ke agen manusia.id(integer): ID unik untuk eskalasi.status(string): Status saat ini (misalnya, sedang dalam eskalasi, sudah diekskalasikan, atau gagal).reason(string): Alasan sesi ditingkatkan.created_at(string, date-time): Waktu eskalasi dimulai.escalated_at(string, date-time, atau null): Saat eskalasi selesai.from_virtual_agent(objek atau null): Agen virtual yang mengeskalasikan panggilan. Bentuk yang sama dengan objekvirtual_agentdi Definitions.to_agent(objek atau null): Agen manusia yang menerima eskalasi panggilan. Bentuk yang sama dengan objekagentdi Definitions.from_menu_path/to_menu_path(objek atau null): Jalur menu sebelum dan setelah eskalasi.
Eskalasi agen virtual
virtual_agent_deflected_escalations(array): Detail eskalasi yang dialihkan dari agen virtual.id(integer): ID unik.deflection(string): Jenis pengalihan.escalation_id(integer): ID peristiwa eskalasi.escalation_reason(string): Alasan eskalasi.escalated_at(string, date-time): Stempel waktu eskalasi.menu_path_id(integer): ID jalur menu.menu_path(string): Jalur menu.lang(string): Bahasa.virtual_agent(objek): Detail agen virtual. Lihat Definisi.
Durasi penanganan agen virtual
virtual_agent_handle_durations(array): Segmen waktu saat agen virtual menangani panggilan.id(integer): ID unik.virtual_agent(objek): Detail agen virtual. Lihat Definisi.call_duration(integer): Durasi segmen.escalation_reason(string): Alasan eskalasi.finish_reason(string): Alasan interaksi berakhir.sentiment(integer): Sentimen konsumen.response_count(integer): Jumlah respons agen virtual.fallback_response_count(integer): Jumlah respons penggantian.initiated_by(string): Cara sesi agen virtual dimulai.menu_path_id(integer): ID jalur menu.menu_path(string): Jalur menu.lang(string): Bahasa.transfer(boolean): Apakah panggilan dialihkan.transfer_id(bilangan bulat atau null): ID peristiwa transfer.started_at(string, date-time): Stempel waktu mulai.ended_at(string, date-time, atau null): Stempel waktu akhir.
Durasi penanganan konsumen
consumer_handle_durations(array): Durasi konsumen melakukan panggilan.id(integer): ID unik.call_duration(integer): Durasi segmen konsumen.hold_duration(integer atau null): Durasi penangguhan konsumen.started_at(string, date-time): Stempel waktu mulai.ended_at(string, date-time): Stempel waktu akhir.
Durasi acara konsumen
consumer_event_durations(array): Detail peristiwa panggilan konsumen (seperti CSAT atau pembayaran).id(integer): ID unik.duration(integer): Durasi acara.type(string): Jenis acara.event(string): Hasil peristiwa.menu_path_id(integer): ID jalur menu.menu_path(string): Jalur menu.lang(string): Bahasa.started_at(string, date-time): Stempel waktu mulai.ended_at(string, date-time): Stempel waktu akhir.
Durasi dalam menu konsumen
consumer_in_menu_durations(array): Durasi interaksi konsumen dalam menu.id(integer): ID unik.duration(integer): Durasi dalam menu.event(string): Hasil interaksi menu.menu_path_id(integer): ID jalur menu.menu_path(string): Jalur menu.lang(string): Bahasa.started_at(string, date-time): Stempel waktu mulai.ended_at(string, date-time): Stempel waktu akhir.
Peserta
participants(array): Informasi tentang setiap peserta dalam panggilan (misalnya, konsumen, agen, atau agen virtual).id(integer): ID unik untuk peserta.type(string): Jenis peserta ("end_user", "agent", "virtual_agent", dll.).entry_type(string): Cara peserta bergabung ke panggilan.user_id(integer atau null): ID pengguna jika peserta adalah agen.end_user_id(integer atau null): ID konsumen jika peserta adalah konsumen.virtual_agent_id(integer atau null): ID agen virtual jika peserta adalah agen virtual.virtual_agent_params(objek; hanya ada saat Anda mengonfigurasi metadata kustom virtual agent untuk disertakan): Metadata kustom yang digunakan virtual agent.status(string): Status peserta ("waiting", "connected", "finished", dll.).fail_reason(string): Alasan kegagalan, jika ada.connected_at(string, date-time, atau null): Stempel waktu saat peserta terhubung.phone_number(string; hanya ada pada peserta konsumen): Nomor telepon peserta.call_id(integer): ID untuk panggilan.call_duration(integer atau null): Durasi panggilan untuk peserta.hold_duration(integer atau null): Durasi penangguhan untuk peserta.ended_at(string, date-time, atau null): Stempel waktu saat keterlibatan peserta berakhir.adapter_fail_code(bilangan bulat atau null): Kode numerik yang sesuai dengan alasan kegagalan.adapter_fail_message(string atau null): Deskripsifail_reasonyang dapat dibaca manusia, jika ada.agent_assist(objek; hanya ada di peserta agen saat Anda mengonfigurasi bantuan agen): Setelan bantuan agen aktif untuk peserta ini.virtual_agent(objek; hanya ada pada peserta agen virtual): Detail agen virtual yang berfungsi sebagai peserta ini — berbeda dariagent_infotingkat teratas dan darivirtual_agent_params.caller_id(string; hanya ada jika Anda mengaktifkan ID penelepon header SIP di akun Anda, dan hanya pada peserta konsumen): ID penelepon yang diekstrak UJET dari header SIP masuk untuk peserta konsumen ini.sip_headers(objek atau null): Header SIP yang terkait dengan peserta ini. Selalu ada di payload; null jika UJET tidak mencatat header.location(string atau null; hanya ada pada peserta agen): Lokasi agen.location_id(integer atau null; hanya ada pada peserta agen): ID lokasi.email(string, email; hanya ada pada peserta agen): Alamat email agen.first_name(string atau null; hanya ada pada peserta agen): Nama depan agen.last_name(string atau null; hanya ada di peserta agen): Nama belakang agen.middle_name(string atau null; hanya ada pada peserta agen): Nama tengah agen.teams(array; hanya ada di peserta agen): Array objek { id, name } untuk tim agen.
Rekaman
recordings(array): Informasi tentang merekam audio panggilan.id(integer): ID unik untuk rekaman.call_id(integer): ID panggilan.conference_sid(string atau null): ID panggilan penyedia VoIP.duration(integer atau null): Durasi perekaman.recording_type(string): Jenis rekaman.redaction_times(array): Segmen waktu yang disamarkan.start(string, date-time): Kapan interval penyensoran dimulai.end(string, date-time): Waktu berakhirnya interval penyensoran.duration(integer): Durasi penyensoran, dalam detik.start_agent_id(integer atau null): Agen yang memulai penyensoran.end_agent_id(integer atau null): Agen yang mengakhiri penyamaran.
started_at(string, date-time): Stempel waktu mulai perekaman.
post_processed_recordings(array; hanya ada jika Anda mengaktifkan perekaman yang diproses pasca-pemrosesan di akun Anda): Rekaman audio yang dihasilkan pasca-pemrosesan (seperti konversi format atau penyensoran).id(integer): ID unik untuk rekaman yang diproses setelahnya.call_id(integer): ID panggilan.duration(integer): Durasi perekaman, dalam detik.started_at(string, date-time): Stempel waktu mulai perekaman.recording_file_name(string): Nama file aset audio yang diproses pasca-pemrosesan.recording_url(string, uri): URL ke file audio yang diproses pasca-pemrosesan.agent_id(bilangan bulat atau string): ID agen yang terkait dengan segmen.virtual_agent_id(bilangan bulat atau string): ID agen virtual yang terkait dengan segmen, jika ada.conversation_id(string): ID yang mengorelasikan rekaman ini dengan data percakapannya.
segments(array; hanya ada jika Anda mengaktifkan rekaman insight yang diproses pasca-pemrosesan di akun Anda): Segmen audio per peserta (dan rekaman layar opsional) yang dihasilkan sistem untuk pipeline insight hilir.id(integer): ID unik untuk segmen.call_id(integer): ID panggilan.duration(integer): Durasi segmen, dalam detik.started_at(string, date-time): Stempel waktu mulai segmen.audio_file_name(string): Nama file aset audio segmen.audio_url(string, uri): URL ke file audio segmen.agent_id(bilangan bulat atau string): ID agen yang terkait dengan segmen.virtual_agent_id(bilangan bulat atau string): ID agen virtual yang terkait dengan segmen, jika ada.participant_id(bilangan bulat atau string): ID peserta yang memiliki segmen.conversation_id(string): ID yang mengorelasikan segmen ini dengan data percakapannya.screen_recording_url(string, uri, atau null): URL ke aset rekaman layar yang cocok. Hanya ditampilkan saat Anda mengaktifkan perekaman layar di akun Anda.screen_recording_file_name(string atau null): Nama file rekaman layar. Ditampilkan dalam kondisi yang sama denganscreen_recording_url.
Menawarkan acara
offer_type(string atau null): Cara UJET menawarkan panggilan kepada agen.offer_events(array): Peristiwa saat UJET menawarkan panggilan kepada agen.casting_time(string, date-time): Waktu UJET menawarkan panggilan.group(string): Grup yang ditawari panggilan oleh UJET.
Detail lainnya
answer_type(string atau null): Cara panggilan diselesaikan ("manual" atau "auto").outbound_number(string atau null): Nomor telepon keluar yang digunakan.wait_time_sms(array; hanya ada saat interaksi SMS waktu tunggu terjadi pada panggilan ini): Interaksi SMS yang dikirim UJET kepada konsumen tentang perkiraan waktu tunggu. Setiap entri berisi:transfer_id(bilangan bulat atau null): ID peristiwa transfer, jika terkait dengan transfer.status(string): Status SMS. Nilai yang mungkin:not_triggered,triggered,triggered_allowed,triggered_denied,triggered_no_selection,triggered_sent,triggered_failed.received(boolean): Apakah konsumen menerima SMS.
in_call_sms(array; hanya ada jika interaksi SMS dalam panggilan terjadi pada panggilan ini): Interaksi SMS selama panggilan. Setiap entri berisi:transfer_id(bilangan bulat atau null): ID peristiwa transfer, jika terkait dengan transfer.preset_sent(boolean): Apakah UJET mengirim pesan standar.custom_sent(boolean): Apakah agen mengirim pesan kustom (teks bebas).received(boolean): Apakah UJET menerima SMS dari konsumen.
dispositions(array; hanya ada jika Anda mengaktifkan kode penyelesaian atau catatan di akun Anda): Kode penyelesaian dan catatan yang direkam oleh agen. Setiap entri mencakup kolom yang dirender secara dinamis berdasarkan konfigurasi penyelesaian Anda:user_id(integer): ID agen.transfer_id(integer atau null): ID peristiwa transfer, jika dicatat setelah transfer.participant_id(integer): ID peserta.note(string): Catatan agen teks bebas.original_note(string): Versi asli (sebelum diedit) catatan.code(string): Nama kode disposisi.ujet_code_id(bilangan bulat atau string kosong): ID UJET dari kode disposisi — kunci stabil untuk kode (nama tampilan kode dapat berubah). String kosong jika tidak tersedia.list(string): Nama daftar tempat kode berada.list_path(string): Jalur daftar kode yang dipisahkan dengan garis miring.ujet_list_id(bilangan bulat atau string kosong): ID UJET daftar tempat kode disposisi berada — kunci stabil untuk daftar. String kosong jika tidak tersedia.custom_list_id(string atau bilangan bulat): ID daftar yang ditentukan pelanggan, jika dipetakan.custom_code_id(string atau bilangan bulat): ID kode yang ditentukan pelanggan, jika dipetakan.
email(string, email, atau null): Alamat email konsumen.feedback(string atau null): Masukan konsumen.smart_action_text(string atau null): Teks tindakan smart apa pun yang dilakukan.custom_data_secured(objek atau null): Data kustom yang ditandatangani dengan aman.custom_data_not_secured(objek atau null): Data kustom yang tidak ditandatangani secara aman.in_queue_wait_time_va(array; hanya ada jika Anda mengaktifkan pelacakan waktu tunggu dalam antrean untuk agen virtual di akun Anda, dan hanya jika setidaknya satu eskalasi VA yang dipertahankan terjadi): Interval waktu saat konsumen menunggu dalam antrean sementara UJET mempertahankan agen virtual untuk mereka setelah eskalasi. Setiap entri berisi:start(string, date-time): Kapan penantian antrean dimulai.end(string, date-time, atau null): Saat menunggu antrean berakhir; null jika tidak selesai.duration(bilangan bulat atau null): Durasi tunggu dalam detik; null jikaendadalah null.
auto_session_summaries(array; hanya ada jika Anda mengaktifkan ringkasan percakapan di akun Anda dan UJET berhasil membuat ringkasan): Ringkasan sesi buatan AI yang disimpan UJET ke data CRM. Setiap entri berisi:user_id(integer): ID peserta agen yang terkait dengan ringkasan.participant_id(integer): ID peserta.session_summary(string): Teks ringkasan.session_summary_sections(array atau objek): Ringkasan dalam bagian terstruktur, jika tersedia.
sip_headers(objek; hanya ada jika Anda mengaktifkan pengambilan header SIP di akun dan mengonfigurasinya untuk disertakan dalam metadata sesi): Header SIP masuk yang diambil UJET untuk panggilan. Kunci dan nilai mencerminkan header SIP yang diterima dari penyedia telepon hulu.
Definisi
Bagian ini menentukan setiap sub-skema satu kali. Grup properti yang mereferensikan sub-skema ditautkan ke definisi ini, bukan mendefinisikan ulang bentuknya secara inline.
menu_path (objek)
Menjelaskan jalur menu hierarkis yang dilalui panggilan. Lihat Navigasi menu untuk mengetahui daftar lengkap kolomnya.
Dirujuk dari: kolom menu_path tingkat teratas; setiap
transfers[].from_menu_path dan transfers[].to_menu_path; setiap
escalations[].from_menu_path dan escalations[].to_menu_path; setiap
deflection_details[].from_menu_path dan deflection_details[].to_menu_path.
agen (objek)
Mendeskripsikan agen manusia. Objek ini adalah salah satu dari dua varian
diskriminator agent_info tingkat teratas (lihat Root skema). Lihat
Informasi agen dan agen virtual untuk
daftar lengkap kolomnya.
Dirujuk dari: kolom agent_info saat agen manusia menangani panggilan terakhir; setiap transfers[].from_agent dan transfers[].to_agent; setiap
escalations[].to_agent.
virtual_agent (objek)
Menjelaskan agen virtual. Objek ini adalah salah satu dari dua varian
diskriminator agent_info tingkat teratas (lihat Root skema). Lihat
Informasi agen dan agen virtual untuk
daftar lengkap kolomnya.
Dirujuk dari: kolom agent_info saat agen virtual menangani panggilan terakhir; setiap transfers[].from_virtual_agent dan
transfers[].to_virtual_agent; setiap escalations[].from_virtual_agent; setiap
virtual_agent_handle_durations[].virtual_agent; setiap
virtual_agent_deflected_escalations[].virtual_agent.
pembelokan (string, enum)
Status pengalihan panggilan atau segmen panggilan. Nilai mengikuti pola penamaan <trigger>_<destination>, dengan awalan mengidentifikasi kondisi yang memicu pengalihan (misalnya, kapasitas berlebih, di luar jam kerja, atau pengalihan sementara) dan akhiran mengidentifikasi tujuan atau perlakuan (misalnya, pesan suara, antrean, telepon, atau pesan).
Sufiks tujuan umum:
_phone— Merutekan panggilan ke nomor telepon eksternal._voicemail— Mengarahkan panggilan ke pesan suara._message— Memutar pesan informasi._message_only— Memutar pesan dan mengakhiri panggilan tanpa perutean lebih lanjut._callback— Menawarkan panggilan balik terjadwal._wait— Membuat penelepon menunggu._queue— Menempatkan panggilan ke antrean lain._sip— Merutekan panggilan ke tujuan SIP._extension— Mengarahkan panggilan ke ekstensi._phone_with_extension— Merutekan panggilan ke tujuan telepon dengan ekstensi.
Nilai yang diizinkan, dikelompokkan menurut keluarga pemicu:
Tidak ada pembelokan:
no_deflection,deflecting.Kelebihan kapasitas — saat antrean melebihi batas kapasitasnya:
over_cap_phone,over_cap_voicemail,over_cap_callback,over_cap_wait,over_cap_queue,over_cap_message,over_cap_sip,over_cap_extension,over_cap_phone_with_extension.Di luar jam kerja — saat panggilan tiba di luar jam operasional menu yang dikonfigurasi:
after_hours_voicemail,after_hours_phone,after_hours_message_only,after_hours_queue,after_hours_message,after_hours_sip,after_hours_extension,after_hours_phone_with_extension.Pengalihan sementara — saat Anda mengonfigurasi pengalihan sementara di menu:
temp_redirection_phone,temp_redirection_message,temp_redirection_voicemail,temp_redirection_queue,temp_redirection_sip,temp_redirection_extension,temp_redirection_phone_with_extension.Pra-sesi IVR:
ivr_presession_deflection.Dimulai oleh agen virtual — saat agen virtual mengalihkan atau mengakhiri panggilan:
va_redirection_phone,va_redirection_sip,va_third_party_phone,va_third_party_sip.Panggilan internal di luar jam kerja:
internal_call_after_hours_message,internal_call_after_hours_queue,internal_call_after_hours_phone,internal_call_after_hours_extension,internal_call_after_hours_sip,internal_call_after_hours_voicemail.Kapasitas berlebih panggilan internal:
internal_call_over_capacity_message,internal_call_over_capacity_queue,internal_call_over_capacity_phone,internal_call_over_capacity_extension,internal_call_over_capacity_sip,internal_call_over_capacity_voicemail,internal_call_over_capacity_wait.Pengalihan otomatis panggilan internal:
internal_call_automatic_redirection_message,internal_call_automatic_redirection_queue,internal_call_automatic_redirection_phone,internal_call_automatic_redirection_extension,internal_call_automatic_redirection_sip,internal_call_automatic_redirection_voicemail.Pengalihan panggilan di luar jam kerja:
call_transfer_after_hours_message,call_transfer_after_hours_queue,call_transfer_after_hours_phone,call_transfer_after_hours_extension,call_transfer_after_hours_sip,call_transfer_after_hours_voicemail.Kapasitas berlebih transfer panggilan:
call_transfer_over_capacity_message,call_transfer_over_capacity_queue,call_transfer_over_capacity_phone,call_transfer_over_capacity_extension,call_transfer_over_capacity_sip,call_transfer_over_capacity_voicemail,call_transfer_over_capacity_wait.Pengalihan otomatis transfer panggilan:
call_transfer_automatic_redirection_message,call_transfer_automatic_redirection_queue,call_transfer_automatic_redirection_phone,call_transfer_automatic_redirection_extension,call_transfer_automatic_redirection_sip,call_transfer_automatic_redirection_voicemail.Penonaktifan darurat — saat administrator memicu penonaktifan darurat:
emergency_shutdown,emergency_shutdown_message,emergency_shutdown_after_hours,emergency_shutdown_over_capacity.Perutean panggilan dinamis (DCR):
dcr_transferred,dcr_missed,dcr_redirected,dcr_finished.
Dirujuk dari: kolom deflection tingkat teratas; setiap
deflection_details[].deflection; setiap transfers[].deflection.
Pembuatan versi dan penghentian penggunaan
Skema metadata sesi panggilan mendukung evolusi yang kompatibel dengan versi sebelumnya. UJET dapat menambahkan kolom dan array baru kapan saja. Integrasi harus mengabaikan kunci yang tidak dikenali untuk memastikan fungsi yang berkelanjutan. Kolom di bagian ini tidak digunakan lagi, lama, atau digantikan secara tidak langsung. Kolom tersebut tetap ada di payload untuk kompatibilitas mundur, tetapi integrasi baru harus mengikuti panduan untuk setiap kolom.
Kolom yang tidak digunakan lagi
voip_provider(string) — Tidak digunakan lagi. Selalu menampilkan string literal "deprecated". UJET tidak lagi menampilkan informasi penyedia ke integrasi melalui dokumen ini. Tidak ada kolom pengganti; jika integrasi Anda perlu mengidentifikasi penyedia telepon hulu, hubungi tim akun Anda.
Duplikat lama
session_type(string) — Alias lama daricall_type. Selalu menampilkan nilai yang sama dengancall_typedan menggunakan kosakata enum lama yang sama. UJET mempertahankan kolom ini untuk kompatibilitas mundur dengan integrasi yang menggunakansession_typesebagai kunci. Integrasi baru harus mem-parsingcall_typesecara langsung, atau — untuk perbedaan masuk yang lebih terperinci —session_type_v2(lihat Evolusi kosakata di bawah).
Evolusi kosakata
call_type dan session_type_v2 menjelaskan jenis panggilan pokok yang sama menggunakan
dua kosakata yang berbeda. UJET memancarkan kedua kolom di setiap data; keduanya tidak
duplikat satu sama lain:
call_typemenggunakan kosakata enum lama. Nilai sepertiVoice Inbound (App)danVoice Inbound (IVR using App)mencakup semua asal SDK dalam aplikasi dan seluler masuk dengan satu label.call_typetidak digunakan lagi. UJET akan terus memancarkan kolom ini, tetapi kosakata kolom ini tidak akan mendapatkan nilai terperinci baru.session_type_v2menggunakan kosakata enum saat ini. Hal ini memperkenalkan perbedaan masuk yang lebih terperinci — misalnya,Voice Inbound (Mobile)danVoice Inbound (IVR using Mobile)— untuk jenis panggilan yang memiliki nilai khusus v2. Untuk jenis panggilan yang tidak memiliki nilai khusus v2,session_type_v2menampilkan string yang sama dengancall_type.
Integrasi baru harus mengurai session_type_v2. Nilai untuk setiap kolom
dicantumkan di Informasi inti.
Nomenklatur kolom waktu tunggu
Dokumen metadata sesi panggilan melaporkan waktu tunggu antrean pada dua cakupan, dengan dua nama kolom:
Total panggilan — kolom
wait_durationtingkat teratas menyimpan total waktu yang dihabiskan konsumen dalam antrean di seluruh panggilan.Per segmen — setiap entri dalam array
queue_durationstingkat teratas (Durasi antrean) memiliki kolomqueue_durationsendiri, yang menyimpan waktu antrean untuk setiap segmen antrean.
Kedua nama merujuk pada jenis pengukuran yang sama — waktu yang dihabiskan dalam antrean
— pada cakupan yang berbeda. Total panggilan wait_duration mencerminkan
waktu antrean konsumen secara keseluruhan, sedangkan nilai queue_duration per segmen
mendeskripsikan setiap segmen antrean. Dokumen ini tidak memancarkan kolom
queue_duration tingkat teratas yang terpisah; nilai per segmen hanya tersedia di dalam
queue_durations.