Difference between revisions of "ENUM Query di OpenSER"
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) |
||
(5 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
* Buat table routing untuk ENUM di konfigurasi OpenSER | * Buat table routing untuk ENUM di konfigurasi OpenSER | ||
+ | |||
+ | ==Logika ENUM Query OpenSER== | ||
+ | |||
+ | Perintah ENUM Query di OpenSER pada dasarnya hanya mengubah alamat / URI agar | ||
+ | dari alamat ENUM menjadi alamat URI SIP. | ||
+ | |||
+ | Setelah menjadi alamat URI SIP, kita dapat dengan mudah memproses call menggunakan routing SIP yang ada. | ||
Line 31: | Line 38: | ||
'''i_enum_suffix''' digunakan saat melalui pencarian menggunakan '''i_enum_query()'''. | '''i_enum_suffix''' digunakan saat melalui pencarian menggunakan '''i_enum_query()'''. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==Test ENUM di OpenSER== | ||
+ | |||
+ | Routing sederhana untuk test ENUM di OpenSER adalah memaksa semua nomor untuk call ke | ||
+ | Echo Test di Asterisk. Misalnya kita sudah melakukna mapping di Server ENUM agar | ||
+ | nomor +62555666666600 di map menjadi 600@server.asterisk. Maka routing tabel untuk test ENUM adalah, | ||
+ | |||
+ | rewriteuri("sip:62555666666600@192.168.0.2"); | ||
+ | prefix("+"); | ||
+ | enum_query("e164.id."); | ||
+ | route(1); | ||
+ | |||
+ | route[1] { | ||
+ | # send it out now; use stateful forwarding as it works reliably | ||
+ | # even for UDP2TCP | ||
+ | if (!t_relay()) { | ||
+ | sl_reply_error(); | ||
+ | }; | ||
+ | exit; | ||
+ | } | ||
Line 36: | Line 67: | ||
==Table Routing ENUM di konfigurasi OpenSER== | ==Table Routing ENUM di konfigurasi OpenSER== | ||
− | + | ||
+ | Teknik query ENUM yang kemungkinan besar berhasil adalah sebagai berikut | ||
+ | |||
+ | # Somewhere in the route[x] section: | ||
+ | |||
+ | # if you want to make ENUM work with numbers starting with "00", | ||
+ | # use the following to convert "00" it into a "+" | ||
+ | |||
+ | if (uri=~"^sip:00[1-9][0-9]*@example\.net") { | ||
+ | # strip leading "00" | ||
+ | # (change example.net to your domainname or skip the stuff after the "@") | ||
+ | strip(2); | ||
+ | # (adjust, if your international prefix is something else than "00") | ||
+ | prefix("+"); | ||
+ | }; | ||
+ | |||
+ | # check if request uri starts with an international phone | ||
+ | # number (+X.), if yes, try to ENUM resolve in e164.arpa. | ||
+ | # if no result, try in nrenum.net | ||
+ | |||
+ | if (uri=~"sip:\+[0-9]+@example\.net") { | ||
+ | # (change example.net to your domainname or skip the stuff after the "@") | ||
+ | if ( !enum_query("e164.arpa.") ) { | ||
+ | enum_query("nrenum.net."); | ||
+ | }; | ||
+ | }; | ||
+ | |||
+ | |||
+ | |||
+ | Alternatif lain yang mungkin bisa di kembangkan, | ||
Line 43: | Line 103: | ||
if (!enum_query("voice")) # if parameter empty, it defaults to "e2u+sip" | if (!enum_query("voice")) # if parameter empty, it defaults to "e2u+sip" | ||
enum_query(""); # E2U+sip | enum_query(""); # E2U+sip | ||
− | |||
} | } | ||
− | + | Alternatif lain yang mungkin juga di kembangkan, | |
if (is_from_user_enum()) { | if (is_from_user_enum()) { | ||
− | enum_query( | + | enum_query(""); |
− | |||
} | } | ||
− | + | ||
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Latest revision as of 12:18, 1 August 2009
Untuk melakukan ENUM Query di OpenSER ada beberapa hal yang perlu dilakukan
- Siapkan modul ENUM di konfigurasi OpenSER.
- Buat table routing untuk ENUM di konfigurasi OpenSER
Logika ENUM Query OpenSER
Perintah ENUM Query di OpenSER pada dasarnya hanya mengubah alamat / URI agar dari alamat ENUM menjadi alamat URI SIP.
Setelah menjadi alamat URI SIP, kita dapat dengan mudah memproses call menggunakan routing SIP yang ada.
Siapkan Modul ENUM di konfigurasi OpenSER
Edit file konfigurasi OpenSER /etc/openser/openser.cfg
# vi /etc/openser/openser.cfg
Masukan beberapa perintah berikut
Load module ENUM
loadmodule "enum.so"
Pada saat ini proses searching ENUM di konfigurasi OpenSER default hanya men-cek sebuah domain ENUM saja.
Kita dapat menset domain tersebut menggunakan perintah berikut (misalnya kita menggunakan e164.id),
modparam("enum", "domain_suffix", "e164.id.") modparam("enum", "i_enum_suffix", "e164.id.")
Default domain yang di search adalah e164.arpa.
domain_suffix akan di tambahkan pada nomor ENUM jika belum ada domain suffix-nya pada saat pencarian ENUM menggunakan enum_query(). i_enum_suffix digunakan saat melalui pencarian menggunakan i_enum_query().
Test ENUM di OpenSER
Routing sederhana untuk test ENUM di OpenSER adalah memaksa semua nomor untuk call ke Echo Test di Asterisk. Misalnya kita sudah melakukna mapping di Server ENUM agar nomor +62555666666600 di map menjadi 600@server.asterisk. Maka routing tabel untuk test ENUM adalah,
rewriteuri("sip:62555666666600@192.168.0.2"); prefix("+"); enum_query("e164.id."); route(1);
route[1] { # send it out now; use stateful forwarding as it works reliably # even for UDP2TCP if (!t_relay()) { sl_reply_error(); }; exit; }
Table Routing ENUM di konfigurasi OpenSER
Teknik query ENUM yang kemungkinan besar berhasil adalah sebagai berikut
# Somewhere in the route[x] section:
# if you want to make ENUM work with numbers starting with "00", # use the following to convert "00" it into a "+"
if (uri=~"^sip:00[1-9][0-9]*@example\.net") { # strip leading "00" # (change example.net to your domainname or skip the stuff after the "@") strip(2); # (adjust, if your international prefix is something else than "00") prefix("+"); };
# check if request uri starts with an international phone # number (+X.), if yes, try to ENUM resolve in e164.arpa. # if no result, try in nrenum.net
if (uri=~"sip:\+[0-9]+@example\.net") { # (change example.net to your domainname or skip the stuff after the "@") if ( !enum_query("e164.arpa.") ) { enum_query("nrenum.net."); }; };
Alternatif lain yang mungkin bisa di kembangkan,
# is this an ENUM destination (leading +?) if (method=="INVITE" && uri=~"sip:\+[0-9]+ at iptel\.org") { if (!enum_query("voice")) # if parameter empty, it defaults to "e2u+sip" enum_query(""); # E2U+sip }
Alternatif lain yang mungkin juga di kembangkan,
if (is_from_user_enum()) { enum_query(""); }