Lewati ke konten
OmniChannels.ai

Format Nomor Telepon E.164: Cara Konversi dan Validasi

Format nomor telepon E.164 dijelaskan: aturan, cara mengonversi nomor lokal dengan tabel contoh, kebutuhan API WhatsApp dan SMS, regex, dan libphonenumber.

Diperbarui 9 menit baca

Oleh OmniChannels.ai Editorial Team · Ditinjau oleh BroadNet Messaging Solutions Team

Integrasi

Jawaban singkat

E.164 adalah rencana penomoran internasional ITU-T. Nomor E.164 ditulis dengan tanda plus di depan, kode negara, dan nomor nasional, paling banyak 15 digit dan tanpa spasi atau tanda baca, misalnya +971501234567. Untuk mengonversi nomor lokal, buang awalan trunk nasional (biasanya 0) di negara yang memakainya, tambahkan tanda plus dan kode negara, lalu hapus spasi dan tanda kurung.

Di halaman ini
  1. Apa itu format E.164?
  2. Bagaimana cara mengonversi nomor telepon lokal ke E.164?
  3. Seperti apa nomor E.164 di berbagai negara?
  4. Mengapa Italia mempertahankan angka 0 di depan?
  5. Mengapa API SMS dan WhatsApp memerlukan E.164?
  6. Bagaimana cara memvalidasi dan menormalisasi nomor di kode?
  7. Bagaimana cara memperbaiki nomor telepon di spreadsheet?
  8. Contoh kasus: membersihkan daftar pelanggan
  9. Apa saja kesalahan yang umum terjadi?
  10. Bagaimana OmniChannels.ai membantu

Poin penting

  • Nomor E.164 terdiri dari tanda plus, kode negara, dan nomor nasional: paling banyak 15 digit secara total, tanpa spasi, tanda hubung, atau tanda kurung.
  • Konversi berarti membuang awalan trunk nasional, biasanya 0, tetapi tidak semua negara memilikinya: tabel prosedur pemutaran ITU tidak mencantumkan awalan itu untuk Italia, Spanyol, dan Qatar.
  • Meta menyarankan menyertakan tanda plus dan kode panggilan negara dalam permintaan kirim WhatsApp, karena nomor tanpa keduanya akan ditambahi kode negara pengirim dan bisa sampai ke orang yang salah.
  • Regex memeriksa bentuk nomor; pustaka seperti libphonenumber memeriksa apakah nomor itu valid untuk negaranya.
  • Excel dapat menghapus nol di depan dan menampilkan nomor panjang dalam notasi ilmiah, jadi pertahankan kolom telepon berformat Teks.

Panduan ini ditujukan bagi pemasar, analis, dan pengembang yang menangani nomor telepon untuk SMS atau WhatsApp dan membutuhkannya dalam bentuk yang diterima API. Panduan ini menjelaskan apa itu E.164, menunjukkan cara mengonversi nomor dari berbagai negara, dan membahas validasi di kode serta masalah spreadsheet yang merusak nomor sebelum sempat dikirim.

Apa itu format E.164?

E.164 adalah rencana penomoran telekomunikasi publik internasional, yang diterbitkan ITU-T sebagai Rekomendasi E.164. Dalam praktik sehari-hari, istilah ini menggambarkan cara menulis nomor: tanda plus, kode negara, dan nomor nasional, hanya dengan digit.

Nomor E.164 memiliki bagian-bagian berikut:

  • + mewakili awalan panggilan internasional, yang berbeda di tiap negara (00 di banyak tempat, 011 di AS).
  • Kode negara, satu sampai tiga digit, seperti 971 untuk UEA atau 1 untuk AS dan Kanada.
  • Nomor nasional, sisa nomor tanpa awalan trunk nasional.

Rekomendasi tersebut menetapkan panjang maksimum 15 digit, tidak termasuk awalan internasional. Jadi +971501234567 adalah E.164 yang valid (12 digit), sedangkan nilai 17 digit tidak mungkin valid. Entri glosarium E.164 kami memberikan definisi singkat.

Bagaimana cara mengonversi nomor telepon lokal ke E.164?

Hapus pemformatan, buang awalan trunk nasional jika ada, lalu tambahkan tanda plus dan kode negara.

  1. Hapus spasi, tanda hubung, titik, dan tanda kurung. 050 123 4567 menjadi 0501234567.
  2. Hapus awalan panggilan internasional jika nomor memilikinya: 00971... atau 011... menjadi 971....
  3. Buang awalan trunk nasional jika negara itu memakainya. Di banyak negara berupa 0; di AS dan Kanada berupa 1.
  4. Tambahkan kode negara jika belum ada.
  5. Tambahkan tanda plus.

Anda perlu tahu negaranya untuk melakukan ini. 0501234567 baru bermakna jika disertai negara, itulah sebabnya spreadsheet sebaiknya memiliki kolom negara.

Seperti apa nomor E.164 di berbagai negara?

Tabel menunjukkan contoh. Nomor-nomor ini hanyalah contoh ilustrasi, bukan pelanggan sebenarnya. Kode panggilan berasal dari data regulasi kami; awalan trunk berasal dari tabel prosedur pemutaran ITU.

Negara Kode panggilan Awalan trunk (tabel ITU) Bentuk lokal (contoh) E.164
UEA +971 0 050 123 4567 +971501234567
Arab Saudi +966 0 051 234 5678 +966512345678
Qatar +974 tidak tercantum 5512 3456 +97455123456
Kenya +254 0 0712 345 678 +254712345678
Inggris +44 0 07700 900123 +447700900123
Jerman +49 0 0151 12345678 +4915112345678
India +91 0 098765 43210 +919876543210
Spanyol +34 tidak tercantum 612 345 678 +34612345678
Italia (seluler) +39 tidak tercantum 312 345 6789 +393123456789
Italia (telepon rumah) +39 tidak tercantum 06 1234 5678 +390612345678
Amerika Serikat +1 1 (202) 555-0123 +12025550123

Tabel ITU adalah posisi yang dipublikasikan pada Desember 2011, jadi anggap sebagai panduan pola dan konfirmasikan negara tertentu dengan pustaka atau regulator.

Mengapa Italia mempertahankan angka 0 di depan?

Karena di Italia angka 0 merupakan bagian dari nomor, bukan awalan trunk. Tabel prosedur pemutaran ITU menunjukkan Italia (kode negara 39) tanpa awalan nasional, sehingga tidak ada yang perlu dibuang. Nomor geografis Italia diawali 0, seperti pada contoh gaya Roma 06 1234 5678, dan tetap mempertahankannya dalam bentuk internasional: +390612345678. Nomor seluler Italia diawali 3 dan tidak punya nol untuk dipertahankan, jadi 312 345 6789 menjadi +393123456789.

Jangan menerapkan "selalu buang nol" sebagai aturan umum. Tabel yang sama juga tidak mencantumkan awalan trunk untuk Spanyol dan Qatar, dan datanya berubah, yang menjadi alasan kuat untuk memakai pustaka bagi apa pun yang tidak bisa Anda periksa sendiri.

Mengapa API SMS dan WhatsApp memerlukan E.164?

Karena perutean bergantung pada nomor yang tidak ambigu. Nomor tanpa kode negara bisa milik banyak negara, sehingga platform dapat mengirim ke pasar yang salah, menerapkan aturan sender ID yang salah, dan menagih tarif yang salah. Tarif, registrasi sender ID, dan jam kirim promosi semuanya diterapkan per negara tujuan, dan kode negara adalah cara mengidentifikasi tujuan itu.

Apa kata Meta tentang nomor WhatsApp?

Dokumentasi Meta tentang format nomor telepon pengguna WhatsApp menyatakan bahwa tanda plus, tanda hubung, tanda kurung, dan spasi didukung dalam permintaan kirim pesan, dan sangat menyarankan menyertakan tanda plus serta kode panggilan negara. Jika tanda plus tidak ada, kode panggilan negara pengirim ditambahkan ke nomor, yang dapat menyebabkan pesan terkirim ke nomor yang salah. Contoh Meta: untuk pengirim di India (kode 91), (631) 555-1234 terkirim ke +916315551234, sedangkan +1 (631) 555-1234 terkirim dengan benar. Meta juga mencatat bahwa untuk Brasil dan Meksiko, Cloud API dapat mengubah awalan tambahan yang muncul pada sebagian nomor, dan menyebut ini perilaku standar.

Pendekatan yang aman: simpan E.164 yang bersih dan kirim persis itu.

Bagaimana dengan SMS?

API SMS juga mengharapkan nomor internasional lengkap. Sebagian meminta digit tanpa tanda plus; formatnya berbeda antar API dan protokol, jadi periksa dokumentasi API yang Anda gunakan dan uji dengan nomor Anda sendiri. Lihat kirim SMS lewat API dan kirim pesan WhatsApp lewat API untuk contoh yang berfungsi.

Bagaimana cara memvalidasi dan menormalisasi nomor di kode?

Gunakan regex untuk pemeriksaan bentuk yang cepat dan pustaka untuk validasi yang sesungguhnya.

Pemeriksaan bentuk E.164 yang umum:

// Plus, a non-zero first digit, then 1 to 14 more digits: 15 digits at most
const E164 = /^\+[1-9]\d{1,14}$/;

function looksLikeE164(value) {
  return E164.test(value);
}

looksLikeE164("+971501234567"); // true
looksLikeE164("0501234567");    // false: no plus or country code
looksLikeE164("+0501234567");   // false: country codes do not start with 0

Regex hanya memeriksa panjang dan karakter. Regex ini menerima +99999999999 padahal nomor seperti itu tidak ada. Untuk validasi yang sesungguhnya, gunakan libphonenumber, pustaka sumber terbuka milik Google untuk mengurai, memformat, dan memvalidasi nomor telepon internasional, tersedia untuk Java, C++, dan JavaScript, dengan port komunitas di bahasa lain. README-nya menjelaskan isValidNumber sebagai validasi penuh untuk suatu wilayah dengan memakai informasi panjang dan awalan, serta menunjukkan cara memformat nomor yang sudah diurai sebagai E.164.

# pip install phonenumbers  (a Python port of libphonenumber)
import phonenumbers

def to_e164(raw, default_region):
    try:
        number = phonenumbers.parse(raw, default_region)  # e.g. "AE", "SA", "GB"
    except phonenumbers.NumberParseException:
        return None
    if not phonenumbers.is_valid_number(number):
        return None
    return phonenumbers.format_number(number, phonenumbers.PhoneNumberFormat.E164)

print(to_e164("050 123 4567", "AE"))   # +971501234567 if the number is valid for the UAE
print(to_e164("+44 7700 900123", "GB"))

Port ditulis oleh pengembang luar, jadi nilai kualitas port yang Anda pilih. Urai dengan wilayah default yang diambil dari negara pelanggan Anda, lalu simpan hasil E.164-nya. Simpan juga masukan mentahnya, agar Anda dapat mengurai ulang jika aturan berubah.

Normalisasikan di titik masuk, yaitu di formulir pendaftaran, impor CRM, atau API, bukan saat pengiriman. Nomor yang ditulis dua cara menjadi dua kontak yang masing-masing menerima kampanye yang sama.

Bagaimana cara memperbaiki nomor telepon di spreadsheet?

Format kolom telepon sebagai Teks sebelum Anda memasukkan atau menempelkan nomor. Masalah yang umum adalah:

Masalah Yang terjadi Solusi
Nol di depan hilang 0501234567 menjadi 501234567 Format sel sebagai Teks lebih dulu; atau mulai isian dengan apostrof
Notasi ilmiah Nomor panjang tampil sebagai 9.71501E+11 Format sebagai Teks; Excel menyimpan presisi numerik 15 digit
Tanda plus hilang Sel numerik mungkin tidak mempertahankan + Format sebagai Teks, lalu periksa karakter pertama kolom
Spasi dan tanda hubung 971 50 123 4567 Hapus dengan Find and Replace atau SUBSTITUTE
Kode negara tidak ada Hanya nomor lokal Tambahkan kolom negara; bentuk nomor dengan rumus

Microsoft mendokumentasikan bahwa Excel menghapus nol di depan dan mengubah angka besar menjadi notasi ilmiah, dan bahwa nomor yang dimasukkan sebelum format Teks diterapkan harus dimasukkan ulang. Saat Anda membuka file CSV secara langsung, Excel menerapkan format default pada setiap kolom, jadi gunakan Text Import Wizard atau From Text/CSV untuk menandai kolom telepon sebagai teks.

Untuk daftar seluler UEA yang tersimpan sebagai 050 123 4567 di kolom A, rumus ini membentuk E.164 sebagai teks:

="+971"&RIGHT(SUBSTITUTE(A2," ",""),9)

Rumus ini mengambil sembilan digit terakhir setelah spasi dihapus, jadi hanya cocok untuk nomor dengan bentuk seperti itu. Salin hasilnya dan tempel sebagai nilai sebelum menyimpan ke CSV. Pemformat nomor telepon mengonversi nomor tanpa rumus, dan panduan kami tentang mengirim SMS massal dari Excel atau CSV menunjukkan alur unggah yang lengkap.

Contoh kasus: membersihkan daftar pelanggan

"Souq Rafiq" (fiktif), peritel di Dubai, mengekspor 8.000 kontak dari tiga sistem dengan nomor seperti 0501234567, 971 50 123 4567, +971-50-123-4567, dan 00971501234567.

  1. Analis menambahkan kolom negara dari negara penagihan tiap pelanggan.
  2. Sebuah skrip mengurai setiap baris dengan negara sebagai wilayah default, sehingga keempat format menjadi +971501234567.
  3. Baris yang gagal validasi masuk ke lembar tinjauan, bukan dikirim.
  4. Duplikat dihapus setelah normalisasi, yang menyatukan keempat format menjadi satu kontak.
  5. Pencarian HLR menandai nomor tidak aktif sebelum kampanye. Lihat HLR lookup dijelaskan.
  6. Kolom yang sudah bersih disimpan sebagai Teks lalu diunggah.

Normalisasi lebih dulu adalah yang membuat pemeriksaan duplikat berfungsi; sebelumnya, pelanggan yang sama tampak seperti empat orang.

Apa saja kesalahan yang umum terjadi?

  • Selalu membuang nol di depan. Sebagian negara, seperti Italia, tidak memiliki awalan trunk.
  • Mempertahankan nol dan menambahkan kode negara, menghasilkan +9710501234567.
  • Mengirim tanpa tanda plus ke WhatsApp, sehingga kode negara pengirim ditambahkan.
  • Memakai regex sebagai validasi. Regex memeriksa bentuk, bukan validitas.
  • Membiarkan Excel memperlakukan nomor telepon sebagai angka, sehingga nol hilang atau berubah menjadi notasi ilmiah.
  • Menormalisasi saat pengiriman alih-alih saat data masuk.
  • Mengira format yang valid berarti nomor dapat dihubungi. Nomor yang dipindahkan operator atau diputus tetap gagal.
  • Memercayai tabel statis. Rencana penomoran berubah; gunakan pustaka yang dipelihara.

Bagaimana OmniChannels.ai membantu

OmniChannels.ai menerima nomor internasional untuk SMS dan WhatsApp melalui satu REST API, dan kampanye-nya menerima unggahan Excel dan CSV dengan pratinjau dan penyaringan duplikat. BroadNet menyediakan HLR dan pencarian nomor, sehingga Anda dapat memeriksa apakah nomor yang berformat benar itu aktif. Baca dokumentasi API SMS dan dokumentasi API WhatsApp untuk kolom permintaan yang tepat, atau hubungi tim kami mengenai onboarding.

Pertanyaan yang sering diajukan

Apa itu format E.164?

E.164 adalah rencana penomoran telepon internasional yang didefinisikan oleh Rekomendasi ITU-T E.164. Dalam penggunaan sehari-hari, nomor E.164 adalah tanda plus, kode negara, dan nomor nasional yang ditulis hanya dengan digit, paling banyak 15 digit secara total. Format ini mengidentifikasi sebuah nomor secara unik di seluruh dunia, itulah sebabnya platform dan API pesan memintanya.

Bagaimana cara mengonversi nomor telepon ke E.164?

Hapus spasi, tanda hubung, dan tanda kurung. Buang awalan trunk nasional jika negara itu memakainya, biasanya angka 0 di depan. Tambahkan tanda plus dan kode negara. Jadi nomor UEA 050 123 4567 menjadi +971501234567. Negara seperti Italia mempertahankan angka 0 di depan nomor telepon rumah, jadi periksa aturan negaranya atau gunakan pustaka.

Berapa digit yang boleh dimiliki nomor E.164?

Paling banyak 15 digit, dihitung dari kode negara dan nomor nasional, tanpa menghitung awalan panggilan internasional. Tanda plus bukan digit. Banyak nomor nasional jauh lebih pendek. Nilai yang lebih dari 15 digit tidak mungkin menjadi nomor E.164 yang valid dan biasanya menandakan kesalahan tempel atau sel spreadsheet yang rusak.

Apakah API WhatsApp memerlukan tanda plus?

Dokumentasi Meta menyatakan tanda plus, tanda hubung, tanda kurung, dan spasi didukung dalam permintaan kirim pesan, dan sangat menyarankan menyertakan tanda plus serta kode panggilan negara. Tanpa tanda plus, kode panggilan negara pengirim ditambahkan ke nomor, yang dapat membuat pesan terkirim ke nomor lain yang salah. Kirim E.164 lengkap agar aman.

Mengapa Excel menghapus angka nol atau mengubah nomor telepon saya?

Excel memperlakukan nomor telepon yang diketik sebagai angka sebagai nilai numerik. Microsoft mendokumentasikan bahwa ini menghapus nol di depan dan menampilkan nomor panjang dalam notasi ilmiah, karena Excel menyimpan presisi 15 digit. Format kolom sebagai Teks sebelum memasukkan atau menempelkan nomor, atau mulai isian dengan apostrof, dan masukkan ulang nomor yang diketik sebelumnya.

Apakah nomor E.164 yang valid juga nomor yang dapat dihubungi?

Tidak. Nomor bisa berformat benar tetapi belum dialokasikan, sudah diputus, atau sudah dipindahkan operator. Validasi format hanya memeriksa bentuk dan panjang untuk sebuah negara. Untuk mengetahui apakah nomor aktif dan di jaringan mana, gunakan HLR atau pencarian nomor sebelum pengiriman dalam jumlah besar.

Sumber

  1. Recommendation ITU-T E.164: The international public telecommunication numbering plan
  2. Dialling procedures (international prefix, national (trunk) prefix and national (significant) number), ITU Operational Bulletin No. 994, 15.XII.2011
  3. WhatsApp user phone number formats — WhatsApp Business Platform, Meta for Developers
  4. Keeping leading zeros and large numbers — Microsoft Support
  5. libphonenumber — Google, open-source library on GitHub