Menyambungkan Panggilan Dengan cmd Originate()

Jadi intinya ada request begini:

Operator diminta menyambungkan sebuah ekstensi ke nomer PSTN/GSM. Hanya saja, pada saat penyambungan panggilan, si operator tidak perlu harus menunggu sampe panggilan ke PSTN/GSM tersambung dulu lalu transfer call ke ekstensi. Maunya dial, nomer PSTN/GSM, lalu dial ekstensi yang melakukan request, setelah itu operator mengerjakan yang lain lagi.

Saya ngebayangin akan ada dua input, yaitu nomer PSTN/GSM, lalu nomer ekstensi, yang didial sekaligus. Untuk membedakan mana yang nomer PSTN/GSM dan mana nomer ekstensi, perlu dibuat delimiter, dalam hal ini saya memilih dua buah tanda pagar. Jadi jika ingin melakukan dial dengan hasil di atas, cukup dengan (misal): 08123456789##2002.

Karena kebetulan yang panjang digitnya tetap adalah nomer ekstensi (4 digit), ditambah delimiter dua tanda pagar, sementara nomer PSTN/GSM panjangnya bisa berbeda-beda, maka perlu dibagi seperti di dialplan berikut, lalu masing-masing nomer PSTN/GSM dan nomer ekstensi dimasukkan ke variabel terpisah, untuk bisa dijadikan input perintah Originate().

[stextbox id=”grey” mode=”css” shadow=”false” color=”FFFFFF” bgcolor=”000000″]exten =>_XXXXX.##ZXXX,1,NoOp()
same => n,Set(Tujuan=${EXTEN::-6})
same => n,Set(Ekstensi=${EXTEN:-4:4})
same => n,Originate(DAHDI/g0/${Tujuan},exten,from-internal,${Ekstensi},1)
same => n,Hangup()[/stextbox]

di baris Set(Tujuan=${EXTEN::-6}) jika diterapkan ke 08123456789##2002, akan menghilangkan 6 karakter terakhir, yang sisanya adalah nomer PSTN/GSM 08123456789 (karakter ##2002 dihilangkan), lalu dimasukkan ke variale Tujuan.

Set(Ekstensi=${EXTEN:-4:4}) jika diterapkan ke 08123456789##2002, akan menghitung 4 digit dari belakang, dan menghilangkan selain 4 digit tersebut. Selanjutnya 4 digit ini dimasukkan ke variabel Extensi.

Setelah mendapatkan dua variable Tujuan dan Ekstensi, kita bisa menjalankan perintah Originate() di baris:

same =>n,Originate(DAHDI/g0/${Tujuan},exten,from-internal,${Ekstensi},1)

perintah tersebut jika dinterpolasi akan seperti:

same =>n,Originate(DAHDI/g0/08123456789,exten,from-internal,2002,1)

Untuk contoh manipulasi variable bisa dibaca di:

https://wiki.asterisk.org/wiki/display/AST/Manipulating+Variables+Basics

Tips

Untuk membuat dialplan seperti di atas, ada baiknya jika dibuat context khusus, karena dialplan tersebut sangat rentan fraud jika kita tidak berhati-hati. Misal, kita bisa memasukkan dialplan tersebut ke dalam context yang hanya bisa diakses oleh ekstensi khusus operator, atau bisa dengan menambahkan auth password dialplan.

Berikut ini cuplikan dari buku Asterisk™ : The Definitive Guide mengenai contoh digit manipulation:

More Advanced Digit Manipulation
The ${EXTEN} variable properly has the syntax ${EXTEN:x:y}, where x is the starting
position and y is the number of digits to return. Given the following dial string:
94169671111
we can extract the following digit strings using the ${EXTEN:x:y} construct:
• ${EXTEN:1:3} would contain 416
• ${EXTEN:4:7} would contain 9671111
• ${EXTEN:-4:4} would start four digits from the end and return four digits, giving
us 1111
• ${EXTEN:2:-4} would start two digits in and exclude the last four digits, giving us
16967
• ${EXTEN:-6:-4} would start six digits from the end and exclude the last four digits,
giving us 67
• ${EXTEN:1} would give us everything after the first digit, or 4169671111 (if the
number of digits to return is left blank, it will return the entire remaining string)

This is a very powerful construct, but most of these variations are not very common in
normal use. For the most part, you will be using ${EXTEN} (or perhaps ${EXTEN:1} if
you need to strip off an external access code, such as a prepended 9).

Leave a Reply

Your email address will not be published. Required fields are marked *