Technology

Platform: Linux

เริ่มจาก download Asterisk (ในที่นี้จะใช้ version 1.2 ลงบน CentOS 4)
จาก http://www.asterisk.org/downloads มาไว้ที่ /usr/src/ อาจจะใช้คำสั่ง wget เช่น

wget http://ftp.digium.com/pub/libpri/releases/libpri-1.2.4.tar.gz

จากหน้า download มี 4 file ที่ต้องใช้ คือ Asterisk, Zaptel, Libpri และ Sounds
ขณะที่ Addons จะใช้หรือไม่ก็ได้ หรืออาจจะ download source code จาก cvs ก็ได้
โดยกำหนด CVSROOT ดังนี้
export CVSROOT=:pserver:anoncvs:anoncvs@cvs.digium.com:/usr/cvsroot

หลังจาก download แล้ว ให้ทำการ extract
tar zxvf zaptel-*.tar.gz
tar zxvf libpri-*.tar.gz
tar zxvf asterisk-*.tar.gz

จากนั้นให้เริ่ม install จาก zaptel ก่อน เนื่องจาก zaptel เป็นส่วนของ module
ที่ถูก load โดย kernel ทำหน้าที่เป็น driver สำหรับ hardware
cd /usr/src/zaptel-version
make clean
make
make install

ถ้าต้องการ install startup script ที่ /etc/rc.d/init.d/ หรือ /etc/init.d/ ให้ run คำสั่ง
make config

หลังจากนั้นให้ install libpri ซึ่งเป็น library ที่ Asterisk ต้องใช้ ด้วยคำสั่ง
cd /usr/src/libpri-version
make clean
make
make install

แล้วจึงทำการ install asterisk
cd /usr/src/asterisk-version
make clean
make
make install

จากนั้น สร้าง default configuration ด้วยคำสั่ง
make samples

ซึ่ง configuration file จะถูกเก็บไว้ที่ /etc/asterisk
ถ้าต้องการให้หลังจากที่ boot server แล้ว asterisk server ทำงานทันที
ก็สั่ง make config เพื่อสร้าง startup script เหมือนตอนลง zaptel
นอกจากนี้ ก่อนที่จะทำการ compile เราสามารถแก้ Makefile เพื่อทำการ optimize ได้
เช่น enable GSM codec optimization บน x86 CPU ที่รองรับ MMX,
enable debug profiling เป็นต้น

จากนั้นก็ทำการ install asterisk-sounds
cd /usr/src/asterisk-sounds
make install

ทำการ load module zaptel และ ztdummy (module ที่ทำหน้าที่เป็น timing source)
ถ้าใช้ zaptel เพื่อติดต่อกับ ztdummy อย่างเดียวก็ไม่จำเป็นต้องแก้ไข /etc/zaptel.conf
ใช้คำสั่ง modprobe เพื่อ load module และ lsmod เพื่อดูรายชื่อ module ที่ถูก load
modprobe zaptel
modprobe ztdummy

สามารถสั่ง asterisk เพื่อ start asterisk server ได้โดยตรง
แต่ถ้าหลังจากที่ลง asterisk ได้สั่งสร้าง startup script ไว้ แนะนำให้ใช้คำสั่ง
service asterisk start
service asterisk stop
เพื่อทำการ start/stop asterisk

เมื่อ asterisk server ทำงาน จะสามารถ connect server ได้ ด้วยคำสั่ง
asterisk -r

Concept: Communication

VoIP หรือ Voice over IP เป็นสิ่งที่กำลังจะเข้ามาเปลี่ยนชีวิตของคนทั่วไปมากขึ้น
เหมือนตอนที่เว็บเริ่มเข้ามามีบทบาทในชีวิตประจำวัน จนแพร่หลายเหมือนทุกวันนี้
ซึ่งหลักการของ VoIP ก็คือเทคโนโลยีที่ส่งผ่านสัญญาณเสียงผ่านระบบ Internet

และ Opensource ที่มีชื่อเสียงด้านนี้ก็คงไม่พ้น "Asterisk" (http://www.asterisk.org/)
ถ้าใครอยากจะหาซื้อ textbook สักเล่มมาอ่าน ขอแนะนำหนังสือชื่อ
"Asterisk: The Future of Telephony" ที่เขียนโดย Leif Madsen,
Jared Smith และ Jim Van Meggelen ของสำนักพิมพ์ O'Reilly

Asterisk คือ Software ที่ทำหน้าที่เป็น "PBX (Private Branch eXchange)"
สำหรับจัดการกับระบบโทรศัพท์บนเครือข่าย Internet

หน้าที่ของ PBX ก็คือทำการเชื่อมต่อการโทร. ของระบบโทรศัพท์ส่วนบุคคล
หรือมองง่ายๆว่า เป็นบริษัทนึง องค์กรนึง ก็ได้ ยกตัวอย่างเช่น
บริษัท D มีพนักงานอยู่ 500 คน แยกเป็นหลายๆแผนก ทำงานอยู่คนละชั้นกัน
ประโยชน์ของ PBX คือ ทางบริษัท ไม่จำเป็นต้องมีเบอร์โทรศัพท์จริงๆ
สำหรับพนักงานทุกคน แต่มีแค่เบอร์ไม่กี่เบอร์ และมีระบบ PBX สำหรับติดต่อภายใน
หน้าที่ของ PBX คือ ทำการเชื่อมต่อเบอร์ภายในบริษัท เช่น เวลาผู้จัดการฝ่ายขาย
จะติดต่อกับ หัวหน้าฝ่ายบุคคล ก็แค่กดหมายเลขภายในของหัวหน้าฝ่ายบุคคล
แต่เวลาจะโทร. ออกไปยังลูกค้า ก็อาจจะกด 9 ก่อน เพื่อต่อออกไปยังเบอร์ภายนอก
ขณะที่คนภายนอกเวลาโทร. เข้ามายังบริษัทอาจจะมี operator ค่อยทำหน้าที่
ต่อโทรศัพท์ ไปยังหมายเลขภายในผ่านทาง "Telephone switchboard"
หรือถ้า PBX ที่ดีๆหน่อย อาจจะมีระบบที่เรียกว่า "IVR (Interactive Voice Response)"
ที่เป็นระบบตอบรับ เช่น ให้กดหมายเลขภายใน หรือ กด 0 เพื่อติดต่อ operator

สำหรับ Asterisk แล้วจะแตกต่างจาก PBX ที่เคยมีมาก็ตรงที่ทำงานบน Internet
เป็น server ที่คอยจัดการกับการโทร. ของโทรศัพท์ ซึ่งหลักการก็คือ
พนักงานภายในอาจจะมี IP phone (โทรศัพท์ที่ทำงานบนระบบ Internet) หรือ
computer ที่ลงโปรแกรม Softphone ที่ทำหน้าที่เหมือนเป็นโทรศัพท์บน computer
ตัวอย่างของโปรแกรมพวกนี้ เช่น X-Lite (http://www.xten.com/)
ทั้ง IP phone และ Softphone ทำหน้าที่เป็น client ซึ่งเมื่อ register กับ Asterisk แล้ว
จะทำให้โทร. ไปหาหมายเลขอื่นที่ register กับ Asterisk ไว้ได้
(อุปกรณ์โทรศัพท์ทั่วไป จะถูกเรียกว่า "Traditional telephony equipment")
ส่วนกรณีที่โทร. ออกไปยังหมายเลขอื่นนอกบริษัท server ที่ลง Asterisk ต้องมี card
ที่ใช้ ต่อกับระบบโทรศัพท์สาธารณะ PSTN (Public Switched Telephone Network)

Asterisk ถูกพัฒนาขึ้นโดย Mark Spencer จากบริษัท Digium Inc.
เป็น Software ที่ทำงานบนระบบปฏิบัติการหลายระบบ ทั้ง Linux, Max OS X, OpenBSD,
FreeBSD และ Sun Solaris แต่ Distribution ของ Linux ที่เป็นที่นิยมสำหรับ
ติดตั้ง Asterisk ก็คือ CentOS (อันนี้ไม่แน่ใจว่าเพราะอะไร แต่พยายามลงบน Ubuntu แล้วยุ่งมากกว่า)
ซึ่งเป็น Linux distribution ที่พัฒนามาจาก Red Hat Enterprise Linux (RHEL)

สำหรับ CentOS แล้วตอนลง ถ้าจะ้เอาง่ายก็ลงแบบ Full เลยก็ได้
ซึ่งในมุมมองของผมแล้วที่ผมเห็นว่า Linux ที่มาจากค่าย Red Hat ทั้ง RHEL, Fedora,
CentOS และ Whitebox linux เองดูจะมีภาษีกว่า ค่ายอื่นในการทำเป็น server
เพราะว่าเมื่อเราลงแบบ Full installation แล้ว ผมเองไม่เคยเจอปัญหาเรื่อง dependency เลย
และถึงจะไม่ลงแบบ Full แต่ package ต่างๆ ก็อยู่ใน CD หรือไฟล์ iso อยู่แล้ว
การจะลงเพิ่มจึงค่อนข้างสะดวกมาก

ใครที่อยากลองเล่น Asterisk แนะนำให้ใช้ CentOS แล้วเอา Asterisk มาลงได้เลย