Apa arti kode respons SIP, dan mengapa saya mendapat 503?

Kode respons SIP melaporkan bagaimana percobaan panggilan berakhir, dan 503 dari Bird biasanya adalah penolakan yang tidak dijelaskan di jaringan, bukan kelebihan beban.

Kelas-kelasnya berasal dari HTTP, dan angka-angka yang sudah dikenal bermakna kurang lebih seperti yang Anda harapkan. Satu kode yang umum digunakan memiliki arti yang cukup berbeda dari yang dinyatakan standar.

Apa arti kelas-kelasnya?

SIP menggunakan enam kelas respons, dinomori seperti HTTP dan dibaca dengan cara yang sama. RFC 3261, yang mendefinisikan SIP, menyebutkannya di section 7.2:

1xx: Provisional -- request received, continuing to process the request;
2xx: Success -- the action was successfully received, understood, and accepted;
3xx: Redirection -- further action needs to be taken in order to complete the request;
4xx: Client Error -- the request contains bad syntax or cannot be fulfilled at this server;
5xx: Server Error -- the server failed to fulfill an apparently valid request;
6xx: Global Failure -- the request cannot be fulfilled at any server.

Satu-satunya kelas tanpa padanan HTTP adalah 6xx. Perbedaan antara 4xx dan 6xx adalah cakupan. Client error berarti server ini tidak dapat memenuhi permintaan, sedangkan global failure berarti tidak ada server yang bisa. Tidak ada gunanya mencoba rute alternatif setelah 6xx. Dalam praktiknya Anda jarang melihatnya.

Apa arti kode-kode umum?

403 berarti ujung jauh menolak panggilan. 404 berarti nomor tidak dialokasikan. 486 berarti sistem tujuan berhasil dihubungi dan sedang sibuk. 503 berarti server tidak akan menerima permintaan saat ini. RFC 3261 mendefinisikannya di section 21:

  • 403 Forbidden: "The server understood the request, but is refusing to fulfill it."
  • 404 Not Found: "The server has definitive information that the user does not exist at the domain specified in the Request-URI."
  • 486 Busy Here: "The callee's end system was contacted successfully, but the callee is currently not willing or able to take additional calls at this end system."
  • 503 Service Unavailable: "The server is temporarily unable to process the request due to a temporary overloading or maintenance of the server."

Kata-kata pada 486 mengandung diagnosis: sistem tujuan berhasil dihubungi dengan sukses, lalu menolak. 404 berarti nomor tidak dialokasikan. Keduanya menunjuk ke nomor yang Anda hubungi, bukan ke pengaturan Anda sendiri. Ini kebalikan dari insting yang biasanya dipicu oleh 4xx. Trunk yang berfungsi dengan benar tidak perlu diaudit.

Mengapa panggilan saya mendapat 503?

Dua hal yang sangat berbeda menghasilkan 503, dan log panggilan adalah pembedanya.

503 dengan catatan panggilan yang cocok adalah penolakan. Bird memeriksa caller ID, tujuan, batas akun, dan saldo wallet sebelum melakukan panggilan keluar, dan panggilan yang gagal di salah satu pemeriksaan tersebut ditolak dengan 503. Catatan panggilan memuat alasan penolakan yang menyebutkan pemeriksaan yang gagal. Mencoba lagi panggilan yang sama menghasilkan jawaban yang sama, jadi perbaikannya adalah pengaturan yang ditunjuk alasan tersebut, bukan percobaan ulang.

Alasan sengaja tidak disertakan di jaringan. Sistem telepon Anda hanya menerima 503 tanpa detail; alasan spesifik ada di catatan panggilan yang terautentikasi. Ini adalah keputusan keamanan, bukan kelalaian. SIP INVITE adalah metode yang meminta panggilan, dan siapa saja dapat mengirimkannya kepada Anda. Menyertakan penyebab dalam respons akan memberitahu mereka apakah suatu tujuan diaktifkan, apakah caller ID diverifikasi, atau apakah akun kehabisan saldo.

503 tanpa catatan panggilan sama sekali bukan penolakan. Tidak ada pemeriksaan yang menolak panggilan, sehingga tidak ada alasan untuk dibaca dan tidak ada yang muncul di log. Ini adalah kasus di mana definisi RFC sendiri menjadi panduan yang lebih tepat, dan coba lagi adalah langkah yang benar.

Jadi alurnya adalah: lihat 503 di sisi Anda, lalu cari panggilan tersebut di log. Jika ada, alasan penolakan memberitahu Anda apa yang perlu diubah, dan setiap alasan beserta perbaikannya tercantum di rejected calls. Jika tidak ada, perlakukan sebagai gangguan sementara dan coba lagi, bukan mencari pengaturan yang perlu diperbaiki.

Rejected, Failed, atau yang lain?

Kode SIP hanya setengah dari jawaban. Status panggilan adalah setengahnya lagi, dan membaca keduanya bersama-sama adalah cara agar masing-masing berguna.

StatusApa yang terjadi
answeredTujuan mengangkat panggilan
no_answerBerdering dan tidak diangkat sebelum waktu habis
rejectedDitolak, bukan diteruskan
failedDicoba tetapi tidak berhasil, dan respons SIP adalah yang diterima
unknownTidak ada respons akhir yang diterima, sehingga hasilnya tidak dapat ditentukan

Rejected mencakup dua penolakan yang berbeda, dan alasan penolakan adalah pembedanya. Jika ada alasan, Bird menolak panggilan tersebut dan alasan menyebutkan pemeriksaan yang gagal, dengan 503 di atas sebagai kodenya. Jika tidak ada alasan, ujung jauh langsung menolaknya dan respons SIP memuat kode dari ujung jauh itu sendiri. Panggilan masuk yang ditolak oleh nomor yang dihubunginya juga berstatus rejected tanpa alasan, karena tidak gagal dalam pemeriksaan apa pun milik Bird. Apa yang diatur pada nomor tersebut dicatat sebagai inbound route-nya.

Failed sama sekali bukan penolakan. Panggilan dicoba tetapi tidak berhasil. Di sinilah 486 atau 404 berada.

Dua status tambahan ada di API dan tidak pernah muncul di catatan. busy dan canceled dicadangkan untuk panggilan masuk yang dikirim ke nomor Anda sendiri. busy mencakup pihak yang dipanggil dan menolak panggilan karena sibuk. canceled mencakup pemanggil yang menutup sebelum panggilan diangkat. Keduanya tidak pernah diterbitkan, dan kedua hasilnya dilaporkan sebagai failed. Membaca failed bersama dengan respons SIP adalah cara membedakannya. Percabangan pada salah satu status tersebut tidak pernah berjalan, dan pencarian di catatan Anda untuk keduanya tidak menghasilkan apa pun.

Tabel di atas adalah hasil yang dapat dimiliki panggilan yang berakhir. Panggilan yang masih berlangsung berstatus ringing atau in_progress, sehingga saat memfilter daftar panggilan Anda juga menemui keduanya. Daftar ini juga terbuka ke arah lain: tangani yang Anda kenali dan perlakukan nilai yang tidak dikenali sebagai status yang tidak Anda tangani, bukan sebagai kesalahan.

Bagaimana cara melihat ini di banyak panggilan sekaligus?

Satu panggilan per satu bukan alat yang tepat untuk menemukan pola. Endpoint statistik suara mengagregasi kode respons di seluruh trafik Anda, yang memungkinkan Anda membedakan masalah sistemik dari nomor yang buruk.

Kenaikan 503 berkaitan dengan akun atau konfigurasi Anda, karena itu adalah penolakan dari Bird sendiri. Kenaikan 486 atau 404 berkaitan dengan nomor yang dihubungi. Yang pertama dapat Anda perbaiki di pengaturan, dan yang kedua biasanya berarti daftar nomor perlu dibersihkan.

Pemecahan masalah suara membahas kasus-kasus individual. Log panggilan mencakup isi setiap catatan, termasuk call ID yang perlu dikutip saat hanya Bird yang dapat menyelesaikan suatu alasan.

Singkatnya

  1. Apakah 503 merupakan penolakan bergantung pada log panggilan.

    503 dengan catatan panggilan adalah penolakan, dan catatan tersebut menyebutkan alasannya. 503 tanpa catatan bukan penolakan, dan layak untuk dicoba lagi.

  2. Rejected dan Failed adalah hasil yang berbeda.

    Rejected berarti panggilan ditolak. Failed berarti panggilan dicoba tetapi tidak berhasil, dan kode SIP adalah respons yang diterima.

  3. 486 atau 404 berkaitan dengan nomor yang Anda hubungi.

    Busy dan unallocated adalah jawaban dari ujung jauh, sehingga menunjuk ke tujuan, bukan ke konfigurasi Anda.

  4. Dua status panggilan ada tetapi tidak pernah diterbitkan.

    busy dan canceled dicadangkan untuk panggilan masuk. Keduanya tidak pernah diterbitkan, dan kedua hasilnya dilaporkan sebagai failed.

Terapkan dalam praktik.

Lanjutkan dengan dokumentasi, panduan, dan contoh untuk topik ini.

Dapatkan ringkasan implementasi

Bangun di jaringan yang sama.

Kunci API uji coba langsung tersedia untuk Anda. Akses produksi terbuka saat Anda menambahkan metode pembayaran dan memverifikasi pengirim.

Ide Anda berikutnya. Siap terhubung.