Endpoint API panggilan menyediakan akses ke objek panggilan. Objek panggilan dibuat untuk setiap panggilan yang dilakukan ke dan dari Contact Center AI Platform (CCAI Platform).
Berikut adalah endpoint API panggilan:
Objek panggilan
Berikut adalah contoh objek panggilan:
[
{
"id": 0,
"parent_id": 0,
"lang": "en",
"call_type": "Voice Scheduled (API)",
"status": "scheduled",
"created_at": "2018-06-07T19:49:52.896Z",
"queued_at": "2018-06-07T19:49:52.896Z",
"assigned_at": "2018-06-07T19:49:52.896Z",
"connected_at": "2018-06-07T19:49:52.896Z",
"ends_at": "2018-06-07T19:49:52.896Z",
"scheduled_at": "2018-06-07T19:49:52.896Z",
"wait_duration": 0,
"call_duration": 0,
"hold_duration": 0,
"rating": 0,
"has_feedback": true,
"voip_provider": "voip_provider_twilio",
"out_ticket_id": "string",
"out_ticket_url": "string",
"verified": true,
"recording_url": "string",
"recording_permission": "not_asked",
"voicemail_reason": "not_voicemail",
"deflection": "no_deflection",
"disconnected_by": "disconnected_by_unknown",
"fail_details": "string",
"fail_reason": "nothing",
"support_number": "string",
"selected_menu": {
"id": 0,
"name": "string",
"parent_id": 0,
"position": 0,
"deleted": true,
"hidden": "string",
"menu_type": "ivr_menu",
"output_msg": "string"
},
"menu_path": {
"items_count": 0,
"name": "string",
"materialized_path": "string"
},
"agent_info": {
"id": 0,
"name": "string",
"last_name": "string",
"first_name": "string",
"agent_number": "string",
"avatar_url": "string"
},
"end_user": {
"id": 0,
"identifier": "string",
"out_contact_id": "string"
},
"photos": [
{
"id": 0,
"photo_type": "photo",
"url": "string"
}
],
"videos": [
{
"id": 0,
"url": "string"
}
],
"transfers": [
{
"id": 0,
"status": "transferring",
"fail_reason": "nothing",
"created_at": "2018-06-07T19:49:52.896Z",
"from_menu": {
"items_count": 0,
"name": "string",
"materialized_path": "string"
},
"to_menu": {
"items_count": 0,
"name": "string",
"materialized_path": "string"
},
"from_agent": {
"id": 0,
"name": "string",
"last_name": "string",
"first_name": "string",
"agent_number": "string",
"avatar_url": "string"
},
"to_agent": {
"id": 0,
"name": "string",
"last_name": "string",
"first_name": "string",
"agent_number": "string",
"avatar_url": "string"
}
}
],
"participants": [
{
"id": 0,
"type": "end_user",
"status": "waiting",
"call_id": 0,
"user_id": 0,
"end_user_id": 0,
"call_duration": 0,
"hold_duration": 0,
"connected_at": "2018-06-07T19:49:52.896Z",
"ended_at": "2018-06-07T19:49:52.896Z",
"fail_reason": "nothing"
}
]
}
]
Definisi status panggilan
Kolom status dapat berada dalam salah satu status berikut:
| Status Panggilan | Deskripsi |
|---|---|
| Memilih | Status yang terjadi saat pengguna akhir telah menghubungi pusat kontak, tetapi masih menavigasi opsi menu sebelum ditempatkan di menu leaf. |
| Dalam antrean | Status yang terjadi setelah pengguna akhir memilih node menu leaf dan memulai permintaan panggilan untuk disiarkan atau dikirim ke beberapa agen. |
| Assigned | Status yang terjadi saat agen dipilih untuk menerima panggilan pengguna akhir. Hal ini terjadi saat panggilan dijawab oleh agen. |
| Menghubungkan | Status yang terjadi setelah agen ditetapkan, dan koneksi sedang dibuat antara pengguna akhir dan agen. |
| Terhubung | Status yang terjadi saat panggilan telah membuat koneksi dan agen serta pengguna akhir berada dalam panggilan. |
| Selesai | Status yang terjadi saat panggilan berakhir setelah terhubung. |
| Gagal | Status yang terjadi saat panggilan berakhir sebelum berhasil terhubung. Alasan kegagalan juga akan diberikan untuk detail tambahan. |
| Mengalihkan | Status yang terjadi saat panggilan gagal saat mencoba terhubung dan Platform CCAI mencoba menghubungkan panggilan dengan penyedia VOIP lain. |
| Dipulihkan | Status yang terjadi saat panggilan yang gagal dipanggil kembali. Panggilan baru ini adalah turunan dari panggilan asli. Memulihkan catatan yang panggilan baliknya selesai tanpa error. |
| Dijadwalkan | Status yang terjadi saat pengguna akhir telah menjadwalkan panggilan mendatang menggunakan Dalam Web atau Dalam Aplikasi. |
| Hanya Tindakan | Status yang terjadi saat panggilan yang ditangani oleh penyedia telepon klien kami sendiri terhubung ke iOS atau Android SDK kami. |
| Tindakan Selesai Saja | Status yang terjadi saat panggilan yang ditangani oleh penyedia teleponi klien kami sendiri terhubung ke iOS atau Android SDK kami dan selesai |
| Tembakan berbelok arah | Status yang terjadi berdasarkan konfigurasi untuk antrean yang melebihi kapasitas atau panggilan di luar jam kerja. Opsi pengalihan mencakup pesan suara, menjadwalkan panggilan, dan lainnya. Pengalihan akan bervariasi berdasarkan saluran (Dalam aplikasi, IVR, Dalam web) |
| Pesan suara | Status yang terjadi saat pengguna akhir dialihkan ke opsi pesan suara, dan memilih untuk meninggalkan pesan suara untuk didengarkan nanti. Status ini ada saat pengguna akhir meninggalkan pesan suara |
| Pesan Suara Diterima | Status yang terjadi setelah pengguna akhir meninggalkan pesan suara dan agen belum mendengarkan pesan suara tersebut |
| Pesan Suara Dibaca | Status yang terjadi saat agen telah membuka pesan suara untuk didengarkan. |
Definisi jenis panggilan
Bidang call_type hanya dapat berupa salah satu dari nilai berikut:
| Jenis Panggilan | Deskripsi |
|---|---|
| Voice Outbound (API) | Panggilan dilakukan dari Outbound Call API. |
| Voice Inbound (API) | Panggilan dilakukan dari Incoming Call API. |
| Suara Terjadwal (API) | Panggilan dilakukan dari Scheduled Call API. |
Kode respons API umum
Berikut adalah Respons API yang paling umum:
| Kode Respons | Arti |
|---|---|
| 201 | Permintaan API telah berhasil dan akan membuat panggilan |
| 202 | Permintaan API berhasil, tetapi intervensi manual diperlukan di dalam widget untuk menyelesaikan tindakan |
| 400 | jenis panggilan tidak valid - pastikan call_type didukung |
| 400 | Agen tidak tersedia untuk menerima panggilan ini |
| 400 | Parameter tidak ada - periksa untuk memastikan bahwa parameter yang diperlukan telah ditambahkan |
| 404 | Resource tidak ditemukan - Periksa subdomain Anda |
Panggilan keluar - end_user_number
| Parameter | Wajib | Jenis Data | Definisi |
|---|---|---|---|
| call_tye | TRUE | String | Panggil tye untuk membuat. "Voice Outbound (API)", "OutboundCall" (tidak digunakan lagi) tersedia untuk saat ini |
| agent_email | TRUE | String | Alamat email agen yang akan ditugaskan untuk panggilan keluar. |
| ticket_id | FALSE | String | ID tiket CRM dan akan menghubungi pengguna akhir yang terkait dengan tiket tersebut. |
| end_user_number | FALSE | String | Nomor telepon pengguna akhir yang akan melakukan panggilan. ticket_id memiliki prioritas yang lebih tinggi daripada end_user_number. |
| outbound_number | FALSE | String | Nomor keluar yang dibuat dengan benar dan dikelola dari Setelan > Nomor Telepon > Pengelolaan Nomor Telepon. Nomor keluar default akan digunakan jika kosong |
| lang | FALSE | String | Bahasa dalam panggilan. Menggunakan kode ISO 639-1. (Default: "en") |
Endpoint:
Method: POST
Type: RAW
URL: https://{subdomain}.{domain}/apps/api/v1/calls
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "agent@somedomain.com",
"outbound_number": "+1 760-867-5309",
"end_user_number": "123123",
"lang": "en"
}
Contoh permintaan dan respons
Bagian berikut memberikan contoh permintaan ke endpoint.
Error : Agen tidak tersedia untuk menerima panggilan ini
Contoh ini menunjukkan skenario kegagalan saat agen tidak tersedia untuk menerima panggilan.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "agent@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Respons: Error : Agen tidak tersedia untuk menerima panggilan ini
{
"message": "Agent is not available to take this call"
}
Kode Status: 400
Membuat panggilan keluar dengan nomor pengguna akhir
Contoh ini menunjukkan cara melakukan panggilan keluar untuk nomor pengguna akhir tertentu.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "admin@somedomain.com",
"end_user_number": "+1 859-657-9625",
"outbound_number": "+1 339-219-5276",
"lang": "en"
}
Respons: Buat panggilan keluar dengan end_user_number
{
"id": 397,
"lang": "en",
"call_type": "Voice Outbound (API)",
"status": "assigned",
"created_at": "2019-06-07T01:27:30.406Z",
"queued_at": null,
"assigned_at": "2019-06-07T01:27:30.441Z",
"connected_at": null,
"ends_at": null,
"scheduled_at": null,
"wait_duration": 0,
"call_duration": 0,
"hold_duration": 0,
"rating": null,
"has_feedback": false,
"voip_provider": "voip_provider_twilio",
"out_ticket_id": null,
"out_ticket_url": null,
"verified": false,
"recording_url": null,
"recording_permission": "not_asked",
"voicemail_reason": "not_voicemail",
"deflection": "no_deflection",
"disconnected_by": "disconnected_by_unknown",
"fail_reason": "nothing",
"fail_details": null,
"support_number": null,
"selected_menu": null,
"menu_path": null,
"agent_info": {
"id": 1,
"agent_number": null,
"name": "Admin UJET",
"last_name": "UJET",
"first_name": "Admin",
"avatar_url": "https://somedomain.com/avatar.jpg"
},
"end_user": null,
"photos": [],
"videos": [],
"transfers": [],
"deflection_details": [],
"participants": [
{
"id": 610,
"type": "agent",
"status": "waiting",
"call_id": 397,
"user_id": 1,
"end_user_id": null,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
},
{
"id": 611,
"type": "end_user",
"status": "waiting",
"call_id": 397,
"user_id": null,
"end_user_id": null,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
}
],
"offer_type": null,
"offer_events": [],
"answer_type": "manual",
"outbound_number": "+1 339-219-5276"
}
Kode Status: 201
Membuat panggilan keluar dengan ID tiket
Contoh ini menunjukkan pembuatan panggilan keluar dengan ID tiket tertentu.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "agent@somedomain.com",
"ticket_id": "71450",
"outbound_number": "+1 339-219-5276",
"lang": "en"
}
Respons: Membuat panggilan keluar dengan ticket_id
{
"id": 398,
"lang": "en",
"call_type": "Voice Outbound (API)",
"status": "assigned",
"created_at": "2019-06-07T01:28:47.955Z",
"queued_at": null,
"assigned_at": "2019-06-07T01:28:47.971Z",
"connected_at": null,
"ends_at": null,
"scheduled_at": null,
"wait_duration": 0,
"call_duration": 0,
"hold_duration": 0,
"rating": null,
"has_feedback": false,
"voip_provider": "voip_provider_twilio",
"out_ticket_id": "71450",
"out_ticket_url": null,
"verified": false,
"recording_url": null,
"recording_permission": "not_asked",
"voicemail_reason": "not_voicemail",
"deflection": "no_deflection",
"disconnected_by": "disconnected_by_unknown",
"fail_reason": "nothing",
"fail_details": null,
"support_number": null,
"selected_menu": null,
"menu_path": null,
"agent_info": {
"id": 1,
"agent_number": null,
"name": "Admin UJET",
"last_name": "UJET",
"first_name": "Admin",
"avatar_url": "https://somedomain.com/avatar.png"
},
"end_user": {
"id": 67,
"identifier": null,
"out_contact_id": "381630957514"
},
"photos": [],
"videos": [],
"transfers": [],
"deflection_details": [],
"participants": [
{
"id": 612,
"type": "agent",
"status": "waiting",
"call_id": 398,
"user_id": 1,
"end_user_id": null,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
},
{
"id": 613,
"type": "end_user",
"status": "waiting",
"call_id": 398,
"user_id": null,
"end_user_id": 67,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
}
],
"offer_type": null,
"offer_events": [],
"answer_type": "manual",
"outbound_number": "+1 339-219-5276"
}
Kode Status: 201
Error : ID tiket atau nomor pengguna akhir diperlukan
Contoh ini menunjukkan kasus kegagalan saat ID tiket atau nomor pengguna akhir diperlukan, tetapi tidak diberikan.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Respons: Error : ticket_id atau end_user_number wajib diisi
{
"message": "ticket_id or end_user_number required"
}
Kode Status: 400
Error : Bukan email agen yang valid
Contoh ini menunjukkan kegagalan saat alamat email yang diberikan untuk agen tidak valid.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "admin@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Respons: Error : Bukan email agen yang valid
{
"message": "Not a valid agent email"
}
Kode Status: 400
Error : Email agen diperlukan
Contoh ini menunjukkan kegagalan saat alamat email tidak diberikan untuk agen.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Respons: Error : Email agen wajib diisi
{
"message": "Agent email required"
}
Kode Status: 400
Error : Agen tidak memiliki akses untuk melakukan panggilan
Contoh ini menunjukkan kegagalan saat agen yang ditentukan tidak diizinkan untuk dapat melakukan panggilan keluar.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Respons: Error : Agen tidak memiliki akses untuk melakukan panggilan
{
"message": "Agent does not have access to make calls"
}
Kode Status: 400
Error : end_user_number tidak terbentuk dengan baik
Contoh ini menunjukkan skenario kegagalan saat nomor pengguna akhir yang diberikan tidak diformat dengan benar.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"outbound_number": "+1 760-410-8538",
"end_user_number": "123123",
"lang": "en"
}
Respons: Error : end_user_number tidak terbentuk dengan baik
{
"message": "end_user_number is not well-formed"
}
Kode Status: 400
Error : Kontak tidak ditemukan
Contoh ini menunjukkan skenario kegagalan saat kontak yang diberikan tidak ada.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"outbound_number": "+1 760-410-8538",
"ticket_id": 1,
"lang": "en"
}
Respons: Error : Kontak tidak ditemukan
{
"message": "Contact not found"
}
Kode Status: 400
Diterima : Perlu memilih nomor keluar
Dalam contoh ini, panggilan keluar diterima, tetapi agen harus memilih nomor keluar yang akan digunakan sebelum panggilan dilakukan.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "agent@somedomain.com",
"outbound_number": "+1 760-867-5309",
"end_user_number": "123123",
"lang": "en"
}
Respons
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Kode Status: 200
Error : Jenis panggilan tidak valid
Contoh ini menunjukkan skenario kegagalan saat jenis panggilan yang diberikan tidak valid.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"outbound_number": "+1 760-410-8538",
"end_user_number": "123123",
"lang": "en"
}
Respons: Error : Jenis panggilan tidak valid
{
"message": "Invalid call type"
}
Kode Status: 400
Memicu adaptor panggilan dengan beberapa nomor keluar
Dalam skenario ini, adaptor panggilan akan diminta dengan beberapa nomor keluar.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "agent@somedomain.com",
"outbound_number": "+1 760-867-5309",
"end_user_number": "123123",
"lang": "en"
}
Respons
{
"call_type": "Voice Outbound (API)",
"agent_email": "admin@somedomain.com",
"end_user_number": "+1 859-657-9625",
"lang": "en"
}
Kode Status: 200
Diterima : Agen harus melakukan panggilan keluar dengan ID tiket
Contoh ini menunjukkan permintaan saat agen harus melakukan panggilan keluar berdasarkan ID tiket yang diberikan.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Kode Status: 202
Panggilan Keluar - ticket_id
| Parameter | Wajib | Jenis Data | Definisi |
|---|---|---|---|
| call_type | TRUE | String | Jenis panggilan yang akan dibuat. "Voice Outbound (API)", "OutboundCall" (tidak digunakan lagi) tersedia untuk saat ini |
| agent_email | TRUE | String | Alamat email agen yang akan ditugaskan untuk panggilan keluar. |
| ticket_id | FALSE | String | ID tiket CRM dan akan menghubungi pengguna akhir yang terkait dengan tiket tersebut. |
| end_user_number | FALSE | String | Nomor telepon pengguna akhir yang akan melakukan panggilan. ticket_id memiliki prioritas yang lebih tinggi daripada end_user_number. |
| outbound_number | FALSE | String | Nomor keluar yang dibuat dengan benar dan dikelola dari Setelan > Nomor Telepon > Pengelolaan Nomor Telepon. Nomor keluar default akan digunakan jika kosong |
| lang | FALSE | String | Bahasa dalam panggilan. Menggunakan kode ISO 639-1. (Default: "en") |
Endpoint:
Method: POST
Type: RAW
URL: https://{subdomain}.{domain}/apps/api/v1/calls
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"outbound_number": "+1 760-867-5309",
"ticket_id": "123123",
"lang": "en"
}
Contoh permintaan dan respons
Bagian berikut memberikan contoh permintaan ke endpoint.
Error : ID tiket atau nomor pengguna akhir diperlukan
Dalam contoh ini, skenario kegagalan ID tiket atau nomor pengguna akhir tidak ada, tetapi diperlukan.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Respons: Error : ticket_id atau end_user_number wajib diisi
{
"message": "ticket_id or end_user_number required"
}
Kode Status: 400
Error : Email agen diperlukan
Dalam contoh ini, kami menunjukkan skenario kegagalan saat email agen tidak diberikan, tetapi diperlukan.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Respons: Error : Email agen wajib diisi
{
"message": "Agent email required"
}
Kode Status: 400
Membuat panggilan keluar dengan nomor pengguna akhir
Dalam contoh ini, kami menunjukkan cara membuat panggilan keluar dengan memberikan nomor pengguna akhir.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "admin@somedomain.com",
"end_user_number": "+1 859-657-9625",
"outbound_number": "+1 339-219-5276",
"lang": "en"
}
Respons: Buat panggilan keluar dengan end_user_number
{
"id": 397,
"lang": "en",
"call_type": "Voice Outbound (API)",
"status": "assigned",
"created_at": "2019-06-07T01:27:30.406Z",
"queued_at": null,
"assigned_at": "2019-06-07T01:27:30.441Z",
"connected_at": null,
"ends_at": null,
"scheduled_at": null,
"wait_duration": 0,
"call_duration": 0,
"hold_duration": 0,
"rating": null,
"has_feedback": false,
"voip_provider": "voip_provider_twilio",
"out_ticket_id": null,
"out_ticket_url": null,
"verified": false,
"recording_url": null,
"recording_permission": "not_asked",
"voicemail_reaso": "not_voicemail",
"deflection": "n_deflection",
"disconnected_by": "disconnected_by_unknown",
"fail_reason": "nothing",
"fail_details": null,
"support_number": null,
"selected_menu": null,
"menu_path": null,
"agent_info": {
"id": 1,
"agent_number": null,
"name": "Admin UJET",
"last_name": "UJET",
"first_name": "Admin",
"avatar_url": "https://somedomain.com/default-profile.png"
},
"end_user": null,
"photos": [],
"videos": [],
"transfers": [],
"deflection_details": [],
"participants": [
{
"id": 610,
"type": "agent",
"status": "waiting",
"call_id": 397,
"user_id": 1,
"end_user_id": null,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
},
{
"id": 611,
"type": "end_user",
"status": "waiting",
"call_id": 397,
"user_id": null,
"end_user_id": null,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
}
],
"offer_type": null,
"offer_events": [],
"answer_type": "manual",
"outbound_number": "+1 339-219-5276"
}
Kode Status: 201
Error : Jenis panggilan tidak valid
Dalam contoh ini, kita menunjukkan skenario kegagalan saat jenis panggilan yang diberikan tidak valid.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "ScheduledCall",
"agent_email": "allen@somedomain.com",
"outbound_number": "+1 760-410-8538",
"end_user_number": "123123",
"lang": "en"
}
Respons: Error : Jenis panggilan tidak valid
{
"message": "Invalid call type"
}
Kode Status: 400
Memicu adaptor panggilan dengan beberapa nomor keluar
Dalam contoh ini, kami menunjukkan cara memicu adaptor panggilan dengan beberapa nomor telepon keluar.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "admin@somedomain.com",
"end_user_number": "+1 859-657-9625",
"lang": "en"
}
Kode Status: 202
Diterima : Agen harus melakukan panggilan keluar dengan ID tiket
Dalam contoh ini, kami menunjukkan cara melakukan panggilan keluar dengan ID tiket dan agen menerima permintaan tersebut.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Respons: Error : Agen tidak memiliki akses untuk melakukan panggilan
{
"message": "Agent does not have access to make calls"
}
Kode Status: 400
Buat panggilan keluar dengan ID tiket.
Dalam contoh ini, kita menunjukkan skenario pembuatan panggilan keluar dengan ID tiket.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "admin@somedomain.com",
"ticket_id": "71450",
"outbound_number": "+1 339-219-5276",
"lang": "en"
}
Respons: Membuat panggilan keluar dengan ticket_id
{
"id": 398,
"lang": "en",
"call_type": "Voice Outbound (API)",
"status": "assigned",
"created_at": "2019-06-07T01:28:47.955Z",
"queued_at": null,
"assigned_at": "2019-06-07T01:28:47.971Z",
"connected_at": null,
"ends_at": null,
"scheduled_at": null,
"wait_duration": 0,
"call_duration": 0,
"hold_duration": 0,
"rating": null,
"has_feedback": false,
"voip_provider": "voip_provider_twilio",
"out_ticket_id": "71450",
"out_ticket_url": null,
"verified": false,
"recording_url": null,
"recording_permission": "not_asked",
"voicemail_reason": "not_voicemail",
"deflection": "no_deflection",
"disconnected_by": "disconnected_by_unknown",
"fail_reason": "nothing",
"fail_details": null,
"support_number": null,
"selected_menu": null,
"menu_path": null,
"agent_info": {
"id": 1,
"agent_number": null,
"name": "Admin UJET",
"last_name": "UJET",
"first_name": "Admin",
"avatar_url": "https://somedomain.com/default-profile.png"
},
"end_user": {
"id": 67,
"identifier": null,
"out_contact_id": "381630957514"
},
"photos": [],
"videos": [],
"transfers": [],
"deflection_details": [],
"participants": [
{
"id": 612,
"type": "agent",
"status": "waiting",
"call_id": 398,
"user_id": 1,
"end_user_id": null,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
},
{
"id": 613,
"type": "end_user",
"status": "waiting",
"call_id": 398,
"user_id": null,
"end_user_id": 67,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
}
],
"offer_type": null,
"offer_events": [],
"answer_type": "manual",
"outbound_number": "+1 339-219-5276"
}
Kode Status: 201
Diterima : Perlu memilih nomor keluar
Dalam contoh ini, kami menunjukkan skenario saat permintaan panggilan keluar dibuat dengan kebutuhan untuk memilih nomor keluar, lalu diterima.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Kode Status: 202
Error : Agen tidak tersedia untuk menerima panggilan ini
Dalam contoh ini, kami menunjukkan skenario kegagalan saat panggilan dibuat, tetapi agen tidak tersedia untuk menerima panggilan.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Respons: Error : Agen tidak tersedia untuk menerima panggilan ini
{
"message": "Agent is not available to take this call"
}
Kode Status: 400
Error : Nomor pengguna akhir tidak terbentuk dengan baik
Dalam contoh ini, kami menunjukkan skenario kegagalan saat nomor telepon pengguna akhir yang diberikan salah format.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"outbound_number": "+1 760-410-8538",
"end_user_number": "123123",
"lang": "en"
}
Respons: Error : end_user_number tidak terbentuk dengan baik
{
"message": "end_user_number is not well-formed"
}
Kode Status: 400
Error : Bukan email agen yang valid
Dalam contoh ini, kita menunjukkan skenario kegagalan saat email agen yang diberikan tidak valid.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "admin@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Respons: Error : Bukan email agen yang valid
{
"message": "Not a valid agent email"
}
Kode Status: 400
Error : Kontak tidak ditemukan
Dalam contoh ini, kita menunjukkan skenario kegagalan saat kontak yang diberikan tidak dapat ditemukan.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"outbound_number": "+1 760-410-8538",
"ticket_id": 1,
"lang": "en"
}
Respons: Error : Kontak tidak ditemukan
{
"message": "Contact not found"
}
Kode Status: 400
Panggilan Masuk
| Parameter | Wajib | Jenis Data | Definisi |
|---|---|---|---|
| call_type | TRUE | String | Jenis panggilan yang akan dibuat. Gunakan "Voice Inbound (API)" atau "IncomingCall" (tidak digunakan lagi) untuk membuat panggilan masuk. |
| menu_id | TRUE | Bilangan bulat | ID menu untuk mengatribusikan panggilan. Hanya ID menu IVR dan Web yang diterima. |
| end_user_number | TRUE | String | Nomor telepon pengguna akhir yang akan dihubungi. Jika ticket_id dan end_user_number diteruskan, ticket_id akan diprioritaskan. |
| lang | FALSE | String | Bahasa dalam panggilan. Menggunakan kode ISO 639-1. (Default: "en") |
| ticket_id | FALSE | String | ID tiket CRM. Nomor telepon pengguna akhir yang terkait dengan tiket akan dihubungi. Jika ticket_id dan end_user_number diteruskan, ticket_id akan diprioritaskan. |
| outbound_number | FALSE | String | Nomor telepon keluar yang akan digunakan untuk panggilan. Nomor telepon keluar global default akan digunakan jika input tidak diteruskan atau tidak valid. Nomor keluar dikelola dari Setelan > Antrean > EDIT / LIHAT > Pilih antrean > Nomor Telepon Keluar. |
| recording_permission | FALSE | String | Nilai hanya dievaluasi jika fitur "Opsi Perekaman Panggilan" ditetapkan ke "Minta Izin Pengguna untuk Merekam". Dapat dikonfigurasi di Setelan > Antrean > EDIT / LIHAT > Pilih antrean > Opsi Perekaman Panggilan. Jika nilainya adalah "recording_permission_not_asked" (default) atau "recording_permission_denied", panggilan tidak akan direkam. Jika nilainya adalah "recording_permission_granted", panggilan akan direkam. |
Endpoint:
Method: POST
Type: RAW
URL: https://{{subdomain}}.{{domain}}/apps/api/v1/calls
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"menu_id": 9,
"ticket_id": "76517",
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Contoh permintaan dan respons
Bagian berikut memberikan contoh permintaan ke endpoint.
Error : Nomor pengguna akhir tidak terbentuk dengan baik
Dalam contoh ini, kami menunjukkan skenario kegagalan saat panggilan masuk dibuat, tetapi nomor pengguna akhir yang diberikan salah format.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"menu_id": 9,
"end_user_number": "+1 999-657-12",
"recording_permission": "recording_permission_granted"
}
Respons: Error : end_user_number tidak terbentuk dengan baik
{
"message": "end_user_number is not well formed"
}
Kode Status: 400
Error : Menu dalam status 'pengalihan manual', tidak dapat menerima panggilan
Dalam contoh ini, kita menunjukkan skenario kegagalan saat panggilan dirutekan ke ID menu, tetapi menu tersebut dalam status pengalihan manual dan oleh karena itu tidak dapat menerima panggilan masuk.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Respons: Error : Menu dalam status 'pengalihan manual', tidak dapat menerima panggilan
{
"message": "Menu is in 'manual redirection' state, can't accept calls"
}
Kode Status: 400
Error : Jenis panggilan tidak valid
Dalam contoh ini, kita menunjukkan skenario kegagalan saat panggilan masuk dibuat, tetapi jenis panggilan yang diberikan tidak valid.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "InvalidCallType",
"lang": "en",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Respons: Error : Jenis panggilan tidak valid
{
"message": "Invalid call type"
}
Kode Status: 400
Error : ID menu wajib diisi
Dalam contoh ini, kami menunjukkan skenario kegagalan saat panggilan masuk dibuat, tetapi ID menu yang diberikan tidak valid.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Respons: Error : menu_id wajib diisi
{
"message": "menu_id is required"
}
Kode Status: 400
Error : Hanya ID IVR dan menu seluler yang diizinkan
Dalam contoh ini, kami menunjukkan skenario kegagalan saat panggilan masuk dibuat, tetapi ID menu yang diberikan bukan ID menu IVR atau seluler.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"menu_id": 50,
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Respons: Error : Hanya ID IVR dan menu seluler yang diizinkan
{
"message": "Only IVR and mobile menu IDs are permitted"
}
Kode Status: 400
Membuat panggilan masuk dengan nomor pengguna akhir
Contoh ini menunjukkan cara membuat panggilan masuk dengan nomor pengguna akhir tertentu.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"menu_id": 9,
"end_user_number": "+82-10-6861-2345",
"recording_permission": "recording_permission_granted"
}
Respons: Buat panggilan masuk dengan end_user_number
{
"id": 515,
"lang": "en",
"call_type": "Voice Inbound (API)",
"status": "queued",
"created_at": "2019-09-10T00:19:14.000Z",
"queued_at": "2019-09-10T00:19:14.421Z",
"assigned_at": null,
"connected_at": null,
"ends_at": null,
"scheduled_at": null,
"wait_duration": 0,
"call_duration": 0,
"hold_duration": 0,
"rating": null,
"has_feedback": false,
"out_ticket_id": null,
"out_ticket_url": null,
"verified": false,
"recording_url": null,
"recording_permission": "not_asked",
"voicemail_reason": "not_voicemail",
"deflection": "no_deflection",
"disconnected_by": "disconnected_by_unknown",
"fail_reason": "nothing",
"fail_details": null,
"support_number": null,
"selected_menu": {
"id": 9,
"name": "Lock Star",
"parent_id": null,
"position": 0,
"deleted": false,
"menu_type": "ivr_menu",
"output_msg": "You selected Lock Star.",
"hidden": false
},
"menu_path": {
"items_count": 1,
"name": "Lock Star",
"materialized_path": "9"
},
"agent_info": null,
"end_user": {
"id": 75,
"identifier": null,
"out_contact_id": "389391400633"
},
"photos": [],
"videos": [],
"transfers": [],
"deflection_details": [],
"participants": [
{
"id": 820,
"type": "end_user",
"status": "waiting",
"call_id": 515,
"user_id": null,
"end_user_id": 75,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
}
],
"offer_type": "cascade",
"offer_events": [
{
"casting_time": "2019-09-10T00:19:14.000Z",
"group": "Group 1"
}
],
"answer_type": "manual",
"outbound_number": "+1 339-219-5276"
}
Kode Status: 201
Error : Menu dalam status 'di luar jam kerja', tidak dapat menerima panggilan masuk
Contoh ini menunjukkan kegagalan saat ID menu yang diberikan berada dalam status after hours.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Respons: Error : Menu dalam status 'di luar jam kerja', tidak dapat menerima panggilan masuk
{
"message": "Menu is in 'after hours' state, can't accept incoming calls"
}
Kode Status: 400
Error : Bahasa tidak tersedia
Contoh ini menunjukkan permintaan kegagalan saat bahasa yang ditentukan tidak tersedia.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Inbound (API)",
"lang": "fr",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Respons: Error : Bahasa tidak tersedia
{
"message": "Language 'fr' is not available"
}
Kode Status: 400
Membuat panggilan masuk dengan ID tiket
Contoh ini menunjukkan permintaan untuk membuat panggilan masuk dengan ID tiket terkait.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"menu_id": 9,
"ticket_id": "76517",
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Respons: Buat panggilan masuk dengan ticket_id
{
"id": 519,
"lang": "en",
"call_type": "Voice Inbound (API)",
"status": "queued",
"created_at": "2019-09-10T05:12:26.000Z",
"queued_at": "2019-09-10T05:12:26.295Z",
"assigned_at": null,
"connected_at": null,
"ends_at": null,
"scheduled_at": null,
"wait_duration": 0,
"call_duration": 0,
"hold_duration": 0,
"rating": null,
"has_feedback": false,
"out_ticket_id": "76517",
"out_ticket_url": null,
"verified": false,
"recording_url": null,
"recording_permission": "not_asked",
"voicemail_reason": "not_voicemail",
"deflection": "no_deflection",
"disconnected_by": "disconnected_by_unknown",
"fail_reason": "nothing",
"fail_details": null,
"support_number": null,
"selected_menu": {
"id": 9,
"name": "Lock Star",
"parent_id": null,
"position": 0,
"deleted": false,
"menu_type": "ivr_menu",
"output_msg": "You selected Lock Star.",
"hidden": false
},
"menu_path": {
"items_count": 1,
"name": "Lock Star",
"materialized_path": "9"
},
"agent_info": null,
"end_user": {
"id": 75,
"identifier": null,
"out_contact_id": "389391400633"
},
"photos": [],
"videos": [],
"transfers": [],
"deflection_details": [],
"participants": [
{
"id": 826,
"type": "end_user",
"status": "waiting",
"call_id": 519,
"user_id": null,
"end_user_id": 75,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
}
],
"offer_type": "cascade",
"offer_events": [
{
"casting_time": "2019-09-10T05:12:26.000Z",
"group": "Group 1"
}
],
"answer_type": "manual",
"outbound_number": "+1 339-219-5276"
}
Kode Status: 201
Error : Bahasa tidak ditemukan
Contoh ini menunjukkan kegagalan saat bahasa yang diberikan tidak ditemukan.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Inbound (API)",
"lang": "xy",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Respons: Error : Bahasa tidak ditemukan
{
"message": "Language 'xy' is not found"
}
Kode Status: 400
Error : menu_id tidak ditemukan
Contoh ini menunjukkan kegagalan saat ID menu yang diberikan tidak ditemukan.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"menu_id": 9999,
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Respons: Error : menu_id tidak ditemukan
{
"message": "menu_id 9999 is not found"
}
Kode Status: 400
Error : menu_id tidak terbentuk dengan baik
Contoh ini menunjukkan kegagalan saat ID menu yang diberikan tidak benar.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"menu_id": "menu_999",
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Respons: Error : menu_id tidak terbentuk dengan baik
{
"message": "menu_id is not well formed"
}
Kode Status: 400
Error : Nomor pengguna akhir wajib diisi
Dalam contoh ini, kami menunjukkan skenario kegagalan saat panggilan masuk dibuat, tetapi nomor telepon pengguna akhir tidak diberikan.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"menu_id": 9,
"recording_permission": "recording_permission_granted"
}
Respons: Error : end_user_number wajib diisi
{
"message": "end_user_number is required"
}
Kode Status: 400
Panggilan terjadwal
| Parameter | Wajib | Jenis Data | Definisi |
|---|---|---|---|
| call_type | TRUE | String | Jenis panggilan yang akan dibuat. Gunakan "Voice Scheduled (API)" atau "ScheduledCall" (tidak digunakan lagi) untuk membuat panggilan terjadwal. |
| menu_id | TRUE | Bilangan bulat | ID menu untuk mengatribusikan panggilan. Hanya ID menu Seluler dan Web yang diterima. |
| call_id | FALSE | Bilangan bulat | ID panggilan sebelumnya, yang akan ditautkan sebagai panggilan induk dari panggilan terjadwal yang baru dibuat. Jika ID panggilan digunakan, menu_id dapat bersifat opsional. |
| end_user_number | TRUE | String | Nomor telepon pengguna akhir yang akan dihubungi. Jika ticket_id dan end_user_number diteruskan, ticket_id akan diprioritaskan. |
| lang | FALSE | String | Bahasa dalam panggilan. Menggunakan kode ISO 639-1. (Default: "en") |
| ticket_id | FALSE | String | ID tiket CRM. Nomor telepon pengguna akhir yang terkait dengan tiket akan dihubungi. Jika ticket_id dan end_user_number diteruskan, ticket_id akan diprioritaskan. |
| scheduled_at | TRUE | String | Waktu terjadwal panggilan. Menggunakan format ISO 8601 untuk waktu mendatang yang valid. |
| recording_permission | FALSE | String | Nilai hanya dievaluasi jika fitur "Opsi Perekaman Panggilan" ditetapkan ke "Minta Izin Pengguna untuk Merekam". Dapat dikonfigurasi di Setelan > Antrean > EDIT / LIHAT > Pilih antrean > Opsi Perekaman Panggilan. Jika nilainya adalah "recording_permission_not_asked" (default) atau "recording_permission_denied", panggilan tidak akan direkam. Jika nilainya adalah "recording_permission_granted", panggilan akan direkam. |
Endpoint:
Method: POST
Type: RAW
URL: https://{{subdomain}}.{{domain}}/apps/api/v1/calls
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"menu_id": 9,
"ticket_id": "76517",
"end_user_number": "+1 859-657-9625",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Contoh permintaan dan respons
Bagian berikut memberikan contoh permintaan ke endpoint.
Error : end_user_number tidak terbentuk dengan baik
Contoh ini menunjukkan kegagalan karena end_user_number tidak diformat dengan benar.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"menu_id": 9,
"end_user_number": "+1 999-657-12",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Respons: Error : end_user_number tidak terbentuk dengan baik
{
"message": "end_user_number is not well formed"
}
Kode Status: 400
Error : Menu dalam status 'pengalihan manual', tidak dapat menerima panggilan
Contoh ini menunjukkan kegagalan saat ID menu yang ditentukan disetel ke pengalihan menu dan tidak dapat menerima panggilan.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Respons: Error : Menu dalam status 'pengalihan manual', tidak dapat menerima panggilan
{
"message": "Menu is in 'manual redirection' state, can't accept calls"
}
Kode Status: 400
Error : Jenis panggilan tidak valid
Contoh ini menunjukkan kegagalan saat permintaan dibuat dan jenis panggilan tidak valid.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "InvalidCallType",
"lang": "en",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Respons: Error : Jenis panggilan tidak valid
{
"message": "Invalid call type"
}
Kode Status: 400
Error : menu_id wajib diisi
Contoh ini menunjukkan permintaan dan respons saat ID menu tidak diberikan, tetapi diperlukan.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"end_user_number": "+1 859-657-9625",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Respons: Error : menu_id wajib diisi
{
"message": "menu_id is required"
}
Kode Status: 400
Error : Hanya ID menu seluler dan web yang diizinkan
Contoh ini menunjukkan permintaan yang gagal saat ID menu yang diberikan bukan ID menu web atau seluler.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"menu_id": 50,
"end_user_number": "+1 859-657-9625",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Respons: Error : Hanya ID menu seluler dan web yang diizinkan
{
"message": "Only mobile and web menu IDs are permitted"
}
Kode Status: 400
Membuat panggilan terjadwal dengan ID menu
Contoh ini menunjukkan cara membuat panggilan terjadwal dengan ID menu tertentu.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"menu_id": 9,
"end_user_number": "+82-10-6861-2345",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Respons: Buat panggilan terjadwal dengan ID menu
{
"id": 515,
"lang": "en",
"call_type": "Voice Inbound (API)",
"status": "queued",
"created_at": "2019-09-10T00:19:14.000Z",
"queued_at": null,
"assigned_at": null,
"connected_at": null,
"ends_at": null,
"scheduled_at": "2019-09-15T00:19:14.421Z",
"wait_duration": 0,
"call_duration": 0,
"hold_duration": 0,
"rating": null,
"has_feedback": false,
"out_ticket_id": null,
"out_ticket_url": null,
"verified": false,
"recording_url": null,
"recording_permission": "not_asked",
"voicemail_reason": "not_voicemail",
"deflection": "no_deflection",
"disconnected_by": "disconnected_by_unknown",
"fail_reason": "nothing",
"fail_details": null,
"support_number": null,
"selected_menu": {
"id": 9,
"name": "Lock Star",
"parent_id": null,
"position": 0,
"deleted": false,
"menu_type": "ivr_menu",
"output_msg": "You selected Lock Star.",
"hidden": false
},
"menu_path": {
"items_count": 1,
"name": "Lock Star",
"materialized_path": "9"
},
"agent_info": null,
"end_user": {
"id": 75,
"identifier": null,
"out_contact_id": "389391400633"
},
"photos": [],
"videos": [],
"transfers": [],
"deflection_details": [],
"participants": [
{
"id": 820,
"type": "end_user",
"status": "waiting",
"call_id": 515,
"user_id": null,
"end_user_id": 75,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
}
],
"offer_type": "cascade",
"offer_events": [
{
"casting_time": "2019-09-10T00:19:14.000Z",
"group": "Group 1"
}
],
"answer_type": "manual",
"outbound_number": "+1 339-219-5276"
}
Kode Status: 201
Membuat panggilan terjadwal dengan ID panggilan
Contoh ini menunjukkan cara membuat panggilan terjadwal dengan ID panggilan tertentu.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"call_id": 514,
"end_user_number": "+82-10-6861-2345",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Respons: Membuat panggilan terjadwal dengan ID panggilan
{
"id": 515,
"lang": "en",
"call_type": "Voice Inbound (API)",
"status": "queued",
"created_at": "2019-09-10T00:19:14.000Z",
"queued_at": null,
"assigned_at": null,
"connected_at": null,
"ends_at": null,
"scheduled_at": "2019-09-15T00:19:14.421Z",
"wait_duration": 0,
"call_duration": 0,
"hold_duration": 0,
"rating": null,
"has_feedback": false,
"out_ticket_id": null,
"out_ticket_url": null,
"verified": false,
"recording_url": null,
"recording_permission": "not_asked",
"voicemail_reason": "not_voicemail",
"deflection": "no_deflection",
"disconnected_by": "disconnected_by_unknown",
"fail_reason": "nothing",
"fail_details": null,
"support_number": null,
"selected_menu": {
"id": 9,
"name": "Lock Star",
"parent_id": null,
"position": 0,
"deleted": false,
"menu_type": "ivr_menu",
"output_msg": "You selected Lock Star.",
"hidden": false
},
"menu_path": {
"items_count": 1,
"name": "Lock Star",
"materialized_path": "9"
},
"agent_info": null,
"end_user": {
"id": 75,
"identifier": null,
"out_contact_id": "389391400633"
},
"photos": [],
"videos": [],
"transfers": [],
"deflection_details": [],
"participants": [
{
"id": 820,
"type": "end_user",
"status": "waiting",
"call_id": 515,
"user_id": null,
"end_user_id": 75,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
}
],
"offer_type": "cascade",
"offer_events": [
{
"casting_time": "2019-09-10T00:19:14.000Z",
"group": "Group 1"
}
],
"answer_type": "manual",
"outbound_number": "+1 339-219-5276"
}
Kode Status: 201
Error : Menu dalam status 'di luar jam kerja', tidak dapat menerima panggilan masuk
Dalam contoh ini, kami menunjukkan skenario kegagalan saat panggilan terjadwal dibuat, tetapi menu yang diberikan berada di luar jam operasional dan oleh karena itu tidak dapat menerima panggilan masuk.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Respons: Error : Menu dalam status 'di luar jam kerja', tidak dapat menerima panggilan masuk
{
"message": "Menu is in 'after hours' state, can't accept incoming calls"
}
Kode Status: 400
Error : Bahasa tidak tersedia
Contoh ini menunjukkan kegagalan saat bahasa yang ditentukan tidak valid.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Scheduled (API)",
"lang": "fr",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Respons: Error : Bahasa tidak tersedia
{
"message": "Language 'fr' is not available"
}
Kode Status: 400
Error : Bahasa tidak ditemukan
Dalam contoh ini, kami menunjukkan skenario kegagalan saat panggilan terjadwal dibuat, tetapi bahasa tidak valid atau tidak tersedia.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Scheduled (API)",
"lang": "xy",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Respons: Error : Bahasa tidak ditemukan
{
"message": "Language 'xy' is not found"
}
Kode Status: 400
Error : ID menu tidak ditemukan
Dalam contoh ini, kami menunjukkan skenario kegagalan saat panggilan terjadwal dibuat, tetapi ID menu yang diberikan tidak valid dan tidak ditemukan.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"menu_id": 9999,
"end_user_number": "+1 859-657-9625",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Respons: Error : ID menu tidak ditemukan
{
"message": "menu_id 9999 is not found"
}
Kode Status: 400
Error : ID menu tidak terbentuk dengan baik
Dalam contoh ini, kami menunjukkan skenario kegagalan saat panggilan terjadwal dibuat, tetapi ID menu yang diberikan salah format.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"menu_id": "menu_999",
"end_user_number": "+1 859-657-9625",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Respons: Error : menu_id tidak terbentuk dengan baik
{
"message": "menu_id is not well formed"
}
Kode Status: 400
Error : Nomor pengguna akhir wajib diisi
Dalam contoh ini, kami menunjukkan skenario kegagalan saat panggilan terjadwal dibuat, tetapi nomor pengguna akhir tidak diberikan.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"menu_id": 9,
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Respons: Error : end_user_number wajib diisi
{
"message": "end_user_number is required"
}
Kode Status: 400
Error : scheduled_at wajib diisi
Dalam contoh ini, kami menunjukkan skenario kegagalan saat panggilan terjadwal dibuat, tetapi nilai waktu yang dijadwalkan tidak ada, padahal diperlukan.
Permintaan
Header:
| Kunci | Nilai | Deskripsi |
|---|---|---|
| Content-Type | application/json |
Isi:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Respons: Error : scheduled_at wajib diisi
{
"message": "scheduled_at is required"
}
Kode Status: 400
Mendapatkan atribut data yang dicadangkan selama panggilan
Endpoint
Method: GET
Type: RAW
URL: https://{subdomain}.{domain}/apps/api/v1/calls/:id/customer_flag
Contoh permintaan dan respons
Bagian ini berisi contoh permintaan dan respons untuk endpoint.
Berhasil
Contoh ini menunjukkan panggilan yang berhasil.
Permintaan
Variabel URL
| Kunci | Nilai | Deskripsi |
|---|---|---|
| id | integer | (Wajib diisi) |
Respons
{
"verified_customer": "boolean",
"bad_actor": "boolean",
"repeat_customer": "boolean"
}
Kode status 0
Memperbarui atribut data yang dicadangkan selama panggilan
Endpoint
Method: PATCH
Type: RAW
URL: https://{subdomain}.{domain}/apps/api/v1/calls/:id/customer_flag
Variabel URL
| Kunci | Nilai | Deskripsi |
|---|---|---|
| id | integer | (Wajib diisi) |
Body
{
"verified_customer": "boolean",
"bad_actor": "boolean",
"repeat_customers": "boolean"
}
Meneruskan parameter data ke agen virtual di tengah sesi
Untuk menggunakan API aplikasi guna meneruskan parameter data ke agen virtual di tengah sesi panggilan, lihat Meneruskan parameter data ke agen virtual di tengah sesi.