เขียน dialplan ขั้นพื้นฐาน (ต่อ)

เขียน dialplan ขั้นพื้นฐาน (ต่อ)

1. ตัวแปร
จากตัวอย่างในตอนที่แล้ว เราได้ extensions.conf ดังนี้

====================================================

[from-mm]                                          ; context สำหรับ incoming จาก Mouthmun
exten => s,1,Answer()                        ; รับ call
exten => s,n,Dial(SIP/2000,20)             ; Dial extension 2000 โดยมี timeout = 20 วินาที
exten => s,n,Hangup()

[from-sip]                                                         ; context สำหรับโทรภายใน และโทรออก
exten => 2000,1,Answer()
exten => 2000,n,Dial(SIP/2000,20)
exten => 2000,n,Hangup()

exten => 2001,1,Answer(0)
exten => 2001,n,Dial(SIP/2001,20)
exten => 2001,n,Hangup()

exten => _00XXXXXXXX,1,Dial(SIP/mm/${EXTEN})
exten => _668XXXXXXXX,1,Dial(SIP/mm/${EXTEN})
exten => _662XXXXXXX,1,Dial(SIP/mm/${EXTEN})

====================================================

จะเห็นว่าใน 3 บรรทัดสุดท้ายมี ${EXTEN}   สักษณะเช่นนี้ คือ ${NAME} เรียกว่าตัวแปร
${EXTEN} มีค่าเท่ากับ เลขหมายปลายทางที่ผู้โทรกด

${EXTEN:1}   มีค่าเท่ากับ   ตัดตัวเลขตัวแรกออกจากเลขหมายปลายทางที่ผู้โทรกด
ตัวอย่างเช่น

exten => _900XXXXXXXX,Dial(SIP/mm/${EXTEN:1})

ถ้าเรากด 90018067894 ระบบจะตัด 9 ออกแล้ว Dial เฉพาะ 0018067894

2. Application Goto()
ใน extensions.conf ของเรา เมื่อมีสายเข้ามา ระบบจะ ring ที่ extension 2000
ถ้าเราต้องการให้มีระบบตอบรับอัตโนมัติเราจะต้องใช้ Application Goto() มาช่วย

Application Goto() จะใช้ในการบังคับให้ระบบข้ามไป process ในบรรทัดที่ต้องการ
มีรูปแบบ ดังนี้

exten => 123,1,Goto(context,extension,priority)
หรือ
exten => 123,1,Goto(extension,priority)   ถ้าอยู่ใน context เดียวกัน

มาดูตัวอย่างกันเลย modify จาก extensions.conf เดิม   ปรับเฉพาะ context ขาเข้า
context โทรภายในและโทรออกคงไว้เช่นเดิม

====================================================

[from-mm]                                          ; context สำหรับ incoming จาก Mouthmun
exten => s,1,Answer()                        ; รับ call
exten => s,2,Background(th-mainmenu)     ; ข้อความต้อนรับ บอกให้ผู้โทรกดเลขหมายต่างๆ
exten => s,3,WaitExten()                       ; รอรับตัวเลขที่ผู้โทรกด

exten => t,1,Goto(s,2)                         ; ถ้าผู้โทรไม่กดนานกว่า timeout (10s) ให้กลับไปที่
; mainmenu

exten => i,1,Playback(th-invalid)        ; ถ้าผู้โทรกดเลขหมายนอกเหนือจากที่กำหนดให้ระบบ
; play soundfile เพื่อบอกผู้โทร
exten => i,2,Goto(s,2)                         ; แล้วกลับไปที่ mainmenu

exten => 2000,1,Dial(SIP/2000,20)        ; ถ้าผู้โทรกด 2000 ให้ระบบ ring extension 2000
exten => 2001,1,Dial(SIP/2001,20)        ; ถ้าผู้โทรกด 2001 ให้ระบบ ring extension 2001

[from-sip]                                                         ; context สำหรับโทรภายใน และโทรออก
exten => 2000,1,Answer()
exten => 2000,n,Dial(SIP/2000,20)
exten => 2000,n,Hangup()

exten => 2001,1,Answer(0)
exten => 2001,n,Dial(SIP/2001,20)
exten => 2001,n,Hangup()

exten => _00XXXXXXXX,1,Dial(SIP/mm/${EXTEN})
exten => _668XXXXXXXX,1,Dial(SIP/mm/${EXTEN})
exten => _662XXXXXXX,1,Dial(SIP/mm/${EXTEN})

====================================================

3. Branching with Application GotoIf()
entensions.conf ในข้อ 2 สามารถทำงานได้   แต่อาจจะเกิด loop ไม่รู้จบได้   สมมติว่ามีผูโทรเข้ามา
แล้วไม่กดอะไรเลย   ระบบจะรอจน timeout (default = 10s) แล้ว play mainmenu   และจะวน
loop อย่างนี้ไปเรื่อยๆ   ระบบจะเสีย incoming trunk ไปโดยเปล่าประโยชน์   จะต้องมีการกำหนดให้นับ
จำนวน loop ถ้าครบก็ให้ Hangup()

GotoIf() จะมีการใช้งาน ดังนี้

exten => 123,1,GotoIf(Expression?destination1:destination2)

โดยที่ destination1, destination2 คือ

– priority label หรือ
– extention,priority label หรือ
– contect,extension,priority label

ดูตัวอย่าง โดยการ modify extensions.conf ในข้อ 2 เพื่อไม่ให้

======================================================

[from-mm]

exten => s,1,Answer()
exten => s,2,Set(COUNT=0)                                         ; Set counter = 0
exten => s,3,Background(th-mainmenu)
exten => s,4,Set(COUNT=$[${COUNT} + 1])                  ; เพิ่ม counter
exten => s,5,GotoIf($[${COUNT} = 3]?stopping:goingon) ; เช็ค counter = 3 หรือไม่ (กำหนด maximum loop ที่นี่)
exten => s,6(stopping),Hangup()                                    ; counter = 3 ให้ Hangup()
exten => s,7(goingon),WaitExten()                                 ; counter < 3 ให้ทำงานต่อ

exten => t,1,Goto(s,3)
exten => i,1,Playback(th-invalid)
exten => i,2,Goto(s,3)

exten => 2000,1,Dial(SIP/2000,20)
exten => 2001,1,Dial(SIP/2001,20)

[from-sip]

exten => 2000,1,Answer()
exten => 2000,n,Dial(SIP/2000,20)
exten => 2000,n,Hangup()

exten => 2001,1,Answer()
exten => 2001,n,Dial(SIP/2001,20)
exten => 2001,n,Hangup()

exten => _00XXXXXXXX,1,Dial(SIP/mm/${EXTEN})าย
exten => _668XXXXXXXX,1,Dial(SIP/mm/${EXTEN})
exten => _662XXXXXXX,1,Dial(SIP/mm/${EXTEN})

======================================================

4. ส่งท้าย
ลองคอนฟิกดูครับ มี feedback อะไรก็ mail มาได้ครับที่ adventek@adventek.biz

เขียน dialplan ขั้นพื้นฐาน

1. บทเริ่ม
Asterisk dialplan เป็นกลไกของระบบที่จะควบคุม call flow ตามที่เราต้องการ
dialplan จะอยู่ในไฟล์ /etc/asterisk/extensions.conf   dialplan ประกอบด้วย
4 ส่วนหลักๆ คือ contexts, extensions, priority และ applications

2. Contexts
Context คือ section ย่อยของ dialplan   context เป็นกลุ่มของ extensions
extensions ใน context หนึ่ง จะแยกจากกันอย่าเด็ดขาดจาก extensions ใน
context อื่นๆ     context จะมีรูปแบบ ดังนี้

[context-name1]
exten => xxx,1,app1()
exten => xxx,n,app2()


[context-name2]
exten => 123,1,app1()
extex => 123,n,app2()

extensions ที่ถัดจาก context ใดๆ ก็จะอยู่ใน context นั้น จนกว่าจะเริ่ม context ใหม่
ชื่อ context จะประกอบด้วย A-Z, a-z, 0-9, – (hyphen), _ (underscore)
ตัวอย่างเช่น
[incoming]
[outbound-sip-trunk]
[iax_trunk] เป็นต้น
อย่าใช้ [globals] หรือ [general] เพราะ [general] จะใช้กำหนดเรื่องทั่วไปของ dialplan ส่วน
[globals] จะกำหนด global variables ซึ่งเราจะเรีบนรู้ต่อไป

ชื่อ context ยาวได้ถึง 79 ตัวอักษร !!!   มีเวลาก็ลองทดสอบดู !!!

3. Extensions
Extension คือ step ในการทำงานของระบบ   เมื่อมี call เข้ามาระบบต้องเช็คว่า call จัดอยู่ใน context ใด
ระบบก็จะใช้ extensions ใน context นั้นๆ ในการ process โดยจะทำตาม priority ที่เราจะกล่าวถึงต่อไป
รูปแบบของ extension
exten => name,priority,application
ตัวอย่าง
exten => 2000,1,Answer()
extension name = 2000
priority = 1
application = Answer()

s extension (start extension)
ในกรณีที่มี incoming call มาจาก trunks เช่น PSTN (TOT เป็นต้น), SIP trunk (Voip providers)
calls เหล่านี้จะไม่มีข้อมูล extension (เลขหมายภายใน) ปลายทาง   ดังนั้นจะต้องมี
extension พิเศษรับ calls เหล่านี้ นั่นคือ extension s

exten => s,1,Answer()
exten => s,n,App1()
exten => s,n,App2()

i extension (invalid extension)
ในบางกรณีระบบต้องการรับ input จากผู้โทร   ถ้าผู้โทรกด input ที่นอกเหนือจากที่ระบบต้องการ
call นั้นจะถูกส่งไปที่ i extension เพื่อ run app ที่แจ้งให้ผู้โทรทราบว่ากดผิด (เช่น ระบบ IVR)

exten => i,1,App1()

t extension (timeout extension)
ในกรณีที่ระบบต้องการ input จากผู้โทร   แต่ผู้โทรไม่กด input ใดๆ จนกะทั่ง timeout ระบบ
ก็จะส่ง call นั้นไปยัง t extension เพื่อ run app ที่กำหนดไว้ต่อไป (เช่นระบบ IVR)

exten => t,1,App2()

extension wildcards
[1236-9]     หมายถึง 1 หรือ 2 หรือ 3 หรือ 6 หรือ 7 หรือ 8 หรือ 9   ตัวใดตัวหนึ่งเพียงตัวเดียวเท่านั้น
X                หมายถึง 0 ถึง 9   ตัวใดตัวหนึ่งเพียงตัวเดียวเท่านั้น
Z                หมายถึง 1 ถึง 9   ตัวใดตัวหนึ่งเพียงตัวเดียวเท่านั้น
N                หมายถึง 2 ถึง 9   ตัวใดตัวหนึ่งเพียงตัวเดียวเท่านั้น
.                 หมายถึง   ตัวเลขอะไรก็ได้หนึ่งตัวหรือมากกว่าหนึ่งตัวก็ได้

exten => 20XX,1,Answer()

20XX จะหมายถึง 2000 ถึง 2099   เป็นต้น

4. Priority
แต่ละ extension อาจจะมีหลาย steps     priority คือ ลำดับของ steps   ดูตัวอย่าง
[incoming]
exten => 2000,1,Answer()
exten => 2000,2,Playback()
exten => 2000,3,Hangup()

ระบบจะ process context incoming ตามลำดับ priority คือ 1,2,3

ถ้าเราเรีบงลำดับใหม่
[incoming]
exten => 2000,3,Hangup()
exten => 2000,2,Playback()
exten => 2000,1,Answer()

ระบบก็จะทำงานเหมือนเดิมตามตัวอย่างข้างบน คือ ดูลำดับ priority แล้วจะไล่ทำ
Answer(), Playback() และ Hangup()

อย่างไรก็ตามถ้าใน context มีหลายๆ steps แล้วเราต้องการแก้ไขโดยการ
เพิ่มหรือลด steps เราก็ต้องแก้ไข priority ใหม่ทั้ง context ทำให้ไม่สะดวก
เราจึงนิยมเขียนแบบ unnumbered priorities คือ

[incoming]
exten => 2000,1,Answer()
exten => 2000,n,Playback()
exten => 2000,n,Hangup()

n = next ระบบจะทำ priority 1 แล้วจะทำบรรทัดถัดไป ดังนั้นเราสามารถเพิ่มหรือลด
steps ได้โดยไม่ต้องเปลี่ยน priority

5. Applications
Application คือ โปรแกรมที่ทำงานต่างๆ เช่น Answer() จะเป็น app ที่ตอบรับ call
ที่เข้ามาที่ channel,   Playback(soundfile) จะเป็น app ที่เล่น soundfile เพื่อให้ผู้ที่
โทรมารับทราบข้อมูล,   Hangup() เป็น app ที่วางสาย   จะเห็นว่าบาง app จะต้อง
argument ตัวอย่างเช่น   Playback(soundfile)   argument คือ soundfile (ไม่ต้องมี
file extension)

6. มาดูตัวอย่าง
ถ้าคุณต้องการทดลองตามตัวอย่าง คุณจะต้องมีอย่างน้อย 2 extensions และ 1 trunk
จะดูตามบทความในตอนที่ 2 ก็ได้   sip.conf มี extensions 2000, 2001 และ 1 SIP
trunk ติดต่อกับ voip.mouthmun.com

ตัวอย่างแรกเป็นการรับ call จาก trunk

[from-mm]                                          ; context สำหรับ incoming จาก Mouthmun
exten => s,1,Answer()                        ; รับ call
exten => s,n,Dial(SIP/2000,20)             ; Dial extension 2000 โดยมี timeout = 20 วินาที
exten => s,n,Hangup()

ตัวอย่างข้างบน ถ้ามี call จาก trunk เข้ามาระบบจะ forward call ไปที่ extension 2000
เราจะเพิ่ม context [from-sip] สำหรับการโทรภายในและโทรออก

====================================================

[from-mm]                                          ; context สำหรับ incoming จาก Mouthmun
exten => s,1,Answer()                        ; รับ call
exten => s,n,Dial(SIP/2000,20)             ; Dial extension 2000 โดยมี timeout = 20 วินาที
exten => s,n,Hangup()

[from-sip]                                                         ; context สำหรับโทรภายใน และโทรออก
exten => 2000,1,Answer()
exten => 2000,n,Dial(SIP/2000,20)
exten => 2000,n,Hangup()

exten => 2001,1,Answer(0)
exten => 2001,n,Dial(SIP/2001,20)
exten => 2001,n,Hangup()

exten => _00XXXXXXXX,1,Dial(SIP/mm/${EXTEN})
exten => _668XXXXXXXX,1,Dial(SIP/mm/${EXTEN})
exten => _662XXXXXXX,1,Dial(SIP/mm/${EXTEN})

======================================================

_ (underscore)   บอกให้ระบบทราบว่าที่ตามมาจะเป็น extension wildcards
_00XXXXXXXX     เป็น extension wildcards สำหรับเลขหมายของ Mouthmun
คือ ขึ้นต้นด้วย 00 แล้วตามด้วยตัวเลขอีก 8 ตัว
_668XXXXXXXX   เป็น extension wildcards สำหรับโทรจาก Mouthmun เข้ามือถือ
ประเทศไทย
_662XXXXXXX     เป็น extension wildcards สำหรับโทรจาก Mouthmun เข้าโทรศัพท์บ้าน
ในเขตกรุงเทพฯ และปริมณฑล

SIP/mm/${EXTEN}     หมายถึงโทรออกที่ trunk ชื่อ mm (definded ใน sip.conf)
${EXTEN} หมายถึงเลขหมายปลายทางที่ผู้โทรกดเพื่อโทรออก

อ่านบทความอื่นๆ http://www.be2hand.com/scripts/shop.php?user=adventek&do=view_article

คอนฟิก Asterisk 1.6.1.1 เบื้องต้นครับ

1. คอนฟิกไฟล์ของ Asterisk จะอยู่ที่ /etc/asterisk โดยมีคอนฟิกไฟล์เบื้องต้น ดังนี้
– /etc/zaptel.conf   เป็นคอนฟิกไฟล์เกี่ยวกับ driver ของการ์ดต่างๆ เช่น
TDM400P, X100P เป็นต้น
– /etc/asterisk/zapata.conf   เป็นคอนฟิกไฟล์ของ Asterisk ที่กำหนดพารามิเตอร์
ต่างๆ ให้กับ channels ของการ์ดที่ติดตั้ง
– /etc/asterisk/sip.conf   เป็นคอนฟิกไฟล์สำหรับ sip protocol
– /etc/asterisk/iax.conf   เป็นคอนฟิกไฟล์สำหรับ iax protocol
– /etc/asterisk/extensions.conf เป็นคอนฟิกไฟล์ที่กำหนด dial plan ทำให้ระบบ
ทำงานตาม flow ที่ต้องการ
– /etc/asterisk/voicemail.conf   เป็นคอนฟิกไฟล์ที่กำหนด voicemail

เนื่องจากระบบที่เราติดตั้งในตอนที่ 1 ไม่มีการ์ดใดๆ (TDM400P, X100P etc.)
เลย ดังนั้นเราไม่จำเป็นต้องคอนฟิก /etc/zaptel.conf และ /etc/asterisk/zapata.conf
เราจะคอนฟิก 3 ไฟล์ คือ
– /etc/asterisk/sip.conf
– /etc/asterisk/extensions.conf
– /etc/asterisk/voicemail.conf

2. ก่อนลงมือให้ backup ไฟล์เดิมไว้ก่อน
#cd /etc/asterisk                 ; ไปที่ directory ที่ต้องการ
#mv sip.conf sip.conf.bak      ; เปลี่ยนชื่อไฟล์ต้นฉบับ
#touch sip.conf                   ; สร้างไฟล์ใหม่ ขณะนี้ยังเป็นไฟล์ที่ว่างเปล่า
แล้ว edit ไฟล์ sip.conf ดังนี้

[general]

register=username:password@voip.mouthmun.com   ; Register to Mouthmun, ต้องไปสร้าง account
; Mountmun ก่อนนะครับ
port=5060                                   ; Port to bind to (SIP is 5060)
bindaddr=0.0.0.0                          ; Address to bind to (all addresses on machine)
allow=all                                       ; Allow all codecs
match_auth_username=yes            ; What is it?

[mm]                                           ; This is for outgoing SIP trunk to Mouthmun

username=yourusername                ; Username that you get from Mouthmun
type=friend
secret=password                           ; Password from Mouthmun
nat=yes
host=voip.mouthmun.com              ; Mouthmun SIP server
fromuser=yourusername                 ; Username that you get from Mouthmun
fromdomain=voip.mouthmun.com    ; Mouthmun SIP server
dtmfmode=rfc2833
disallow=all
defaultexpirey=20
canreinvite=no
allow=g729
allow=ulaw
allow=alaw
context=from-sip                             ; This will relate to /etc/asterisk/extensions.conf

[yourusername]                                 ; Incoming from Mouthmun, ใช้ username ที่ได้จาก Mouthmun มาเป็น context
; ที่จริงแล้วจะตั้งชื่ออะไรก็ได้
canreinvite=no
quality=no
type=user
fromuser=yourusername                   ; Username that you get from Mouthmun
username=yourusername                  ; Username that you get from Mouthmun
secret=password                             ; Password from Mouthmun
context=from-mm                           ; This will relate to /etc/asterisk/extensions.conf

[2000]                                           ; This is our extension nember

type=friend                                     ; This device takes and makes calls
username=2000                               ; Username on device
secret=1234                                   ; Password for device
host=dynamic                                  ; This host is not on the same IP addr every time
context=from-sip                              ; Inbound calls from this host go here
mailbox=100@default                        ; Define voicemail for extension 2000
; This will relate to /etc/asterisk/voicemail.conf

[2001]                                            ; Same patterm as of extension 2000

type=friend
username=2001
secret=1234
host=dynamic
context=from-sip
mailbox=101@default

3. edit /etc/asterisk/extensions.conf ดังนี้ (อย่าลืม backup ไฟล์ต้นฉบับ)

[general]

static=yes           ; These two lines prevent the command-line interface
writeprotect=yes ; from overwriting the config file. Leave them here.

[from-sip]

;
; If the number dialed by the calling party was “2000”, then
; Dial the user “2000” via the SIP channel driver. Let the number
; ring for 20 seconds, and if no answer, proceed to priority 2.
;

exten => 2000,1,Dial(SIP/2000,20)

;
;

exten => 2000,2,Voicemail(100@default)
exten => 2000,3,PlayBack(vm-goodbye)
exten => 2000,4,Hangup

;
; Now, what if the number dialed was “2001”?
;

exten => 2001,1,Dial(SIP/2001,20)
exten => 2001,2,Voicemail(101@default)
exten => 2001,3,PlayBack(vm-goodbye)
exten => 2001,4,Hangup

;
; Define a way so that users can dial a number to reach
; voicemail. Call the VoicemailMain application with the
; number of the caller already passed as a variable, so
; all the user needs to do is type in the password.
;

exten => 2999,1,VoicemailMain()

;
; According to SIP in sip.conf – sip outbound to mm
;

exten => _00[1-9].,1,Dial(SIP/mm/${EXTEN})     ; Dial Mouthmun user
exten => _66[1-9].,1,Dial(SIP/mm/${EXTEN})     ; Dial fixed or mobile phone
; in Thailand (66 is Thailand
; country code

;
; sip inbound from mm
;

[from-mm]
exten => s,1,Answer
exten => s,n,Dial(SIP/2000,20)                          ; route inbound call to extension 2000
exten => s,n,Hangup

4. edit /etc/asterisk/voicemail.conf ดังนี้ (อย่าลืม backup ไฟล์ต้นฉบับ)

[general]

format=wav|gsm

;
; format: password, name, email address for attached voicemail msgs
;

[default]
100 => 1234,Vitaya P,vitaya@adventek.biz
101 => 1234,Vitaya P,vitaya@adventek-th.com

5. หลังจากคอนฟิกไฟล์เรียบร้อยแล้วให้ reload Asterisk ดังนี้

เข้าสู่ Asterisk CLI interface

[root@ast16 asterisk]# asterisk -r
Asterisk 1.6.1.1, Copyright (C) 1999 – 2008 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type ‘core show warranty’ for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type ‘core show license’ for details.
=========================================================================
Connected to Asterisk 1.6.1.1 currently running on ast16 (pid = 3600)
Verbosity is at least 3
ast16*CLI>

แล้วใช้คำสั่ง reload ดังนี้

ast16*CLI>reload

ถึงตอนนี้ Asterisk ก็ run ด้วยคอนฟิกใหม่เรียบร้อยแล้ว ให้คอนฟิก softphone
2 เครื่อง เบอร์ 2000 และ 2001 ต่อเข้าระบบ Asterisk แล้วเริ่มทดสอบได้เลย

ดูการคอนฟิก softphone (x-lite) ได้จากลิ้งค์
http://www.be2hand.com/scripts/shop.php?do=article_detail&news_id=5886&user=adventek

ติดตั้ง Asterisk 1.6.1.1 บน CentOS 5.3

1. Hardware
ผมจะติดตั้ง Asterisk 1.6.1.1 บน CentOS 5.3 บน Notebook Compaq nx9040
วางแผนไว้ว่าจะไม่ใช้ GUI (FreePBX, Asterisk-GUI) สเปค Notebook nx9040 คือ
– CPU Centrino 1.5 GHz
– RAM 1 GB
– HD ประมาณ 20 GB
– LAN card 100 Mbps
ขั้นแรกผมลง Centos 5.3 โดยเลือกแบบ server ไม่มี GUI   ขณะที่ลง OS ก็มี
Internet connection อยู่

2. Compile Asterisk
เนื่องจากผมไม่สามารถหา RPM binary file ของ Asterisk ได้   จำเป็นต้อง compile
การ compile Asterisk 1.6.x บน CentOS 5.x ผมอ่านจากเอกสารใน www.voip-info.org External Link
ลอง search ดู หรือไม่ก็อ่านที่ผมสรุปจากการลอง compile ดูก็ได้ ดังนี้

2.1 ติดตั้ง dependencies และ packages ที่จำเป็นในการ compile
#yum -y install gcc gcc-c++ kernel-devel bison openssl-devel \
libtermcap-devel ncurses-devel doxygen curl-devel newt-devel \
mlocate lynx tar wget nmap bzip2 mod_ssl crontabs vixie-cron \
speex speex-devel unixODBC unixODBC-devel libtool-ltdl \
libtool-ltdl-devel mysql-connector-odbc mysql mysql-devel \
mysql-server php-mysql php-mbstring php-mcrypt flex screen\
subversion

2.2 เช็ค kernel.xxx kernel-devel และ kernel-headers ต้องเป็น version เดียวกัน
ถ้าไม่เป็น version เดียวกันก็จัดการด้วย
#yum -y install kernel.xxx kernel-devel kernel-headers
(xxx หมายถึง architecture ของ CPU)

2.3 จะยังไม่ติดตั้ง mysql-server และ asterisk-addons packages

2.4 ทำตามขั้นตอนได้เลย
#mkdir -p /usr/src/asterisk
#cd /usr/src/asterisk
#wget http://downloads.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz External Link
#wget http://downloads.digium.com/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz External Link
#wget http://downloads.digium.com/pub/libpri/libpri-1.4-current.tar.gz External Link
#tar -zxvf dahdi-linux-complete-current.tar.gz
#tar -zxvf asterisk-1.4-current.tar.gz
#tar -zxvf libpri-1.4-current.tar.gz

#cd /usr/src/asterisk/libpri-VERSION          (แทน VERSION ด้วยตัวเลข version ทีมีอยู่จริง)
#make clean
#make
#make install

#cd /usr/src
#ln -s kernels linux
#cd /usr/src/asterisk/dahdi-linux-complete-VERSION
#make all
#make install
#make config
#chkconfig dahdi on
#service dahdi start

#cd /usr/src/asterisk/asterisk-VERSION
#make clean
#./configure

#Choose which options to install … (ตาม default ก็ OK)

#make menuselect
#make
#make install

Install sample files in /etc/asterisk, install docs/manpages and set to start on boot …

#make samples
#make progdocs
#make config
#chkconfig asterisk on
#service asterisk start

ถึงตอนนี้ Asterisk server ก็น่าจะ run แล้ว ลอง connect ดู
#asterisk -r
ก็จะได้ message ว่า Asterisk 1.6.1.1 กำลัง run อยู่
เป็นอันเสร็จสิ้นการติดตั้ง

อ่านบทความอื่นๆ
http://www.be2hand.com/scripts/shop.php?user=adventek&do=view_article

การติดตั้ง Asterisk

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

Credit: http://gaiz.exteen.com/20070322/asterisk

VoIP (Voice Over Internet Protocol)

เกิดขึ้นครั้งแรกเมื่อปี 1973 โดยองค์กรที่ชื่่อว่า ARPANET (Advanced Research Project Agency Network) โดยมีวัตถุประสงค์ นำเอาเทคโนโลยีเข้ามาช่วยประหยัดต้นทุนการติดต่อสื่อสาร โดยการใช้งานระบบเครือข่ายให้มีประโยชน์และมีประสิทธิภาพมากขึ้น

หรือ ชื่ออื่น IP Telephony, Internet telephony, หรือ Digital Phone เป็นการสื่อสารทางเสียงผ่านโครงข่ายอินเทอร์เน็ต หรือโครงข่ายอื่นๆ ที่ใช้อินเทอร์เน็ตโปรโตคอล สัญญาณเสียงจะถูกตัดแบ่งเป็นแพ็คเก็ตวิ่งผ่านไปบนโครงข่ายที่ใช้สำหรับการ สื่อสารข้อมูลทั่วไป แทนการใช้วงจรเฉพาะตามวิธีการสื่อสารในระบบโทรศัพท์แบบดั้งเดิม เปรียบได้กับการให้รถยนต์วิ่งแทรกกันได้ตามช่องว่างที่มีอยู่ของถนน แทนการให้รถยนต์คันเดียวจองถนนวิ่งแบบผูกขาด ข้อดีของวีโอไอพีก็คือการสามารถใช้โครงข่ายได้อย่างมีประสิทธิภาพ ทำให้สามารถให้บริการได้ในอัตราค่าบริการที่ถูกลงมา

VoIP สามารถแบ่งได้เป็น 3 ลักษณะ
1. คอมพิวเตอร์ส่วนบุคคล ไปยัง คอมพิวเตอร์ส่วนบุคคล ( PC to PC )
PC มีการติดตั้ง sound card และไมโครโฟน ที่เชื่อมต่ออยู่กับเครือข่าย IP การประยุกต์ใช้ PC และ IP-enabled telephones สามารถสื่อสารกันได้แบบจุดต่อจุด หรือ แบบจุดต่อหลายจุด โดยอาศัย software ทางด้าน IP telephony

2. คอมพิวเตอร์ส่วนบุคคล ไปยัง โทรศัพท์พื้นฐาน ( PC to Phone )
เป็น การเชื่อมเครือข่ายโทรศัพท์เข้ากับ เครือข่าย IP ทำให้โดยอาศัย Voice trunks ที่สนับสนุน voice packet ทำให้สามารถใช้ PC ติดต่อกับ โทรศัพท์ระบบปกติได้

3. โทรศัพท์กับโทรศัพท์ ( Telephony )
เป็น การใช้โทรศัพท์ธรรมดา ติดต่อกับโทรศัพท์ธรรมดา แต่ในกรณีนี้จริงๆแล้วประกอบด้วยขั้นตอนการส่งเสียงบนเครือข่าย Packet ประเภทต่างๆซึ่งทั้งหมดติดต่อกันระหว่างชุมสายโทรศัพท์ (PSTN) การติดต่อกับ PSTN หรือ การใช้โทรศัพท์ร่วมกับเครือข่ายข้อมูลจำเป็นต้องใช้ gateway

สำหรับมาตราฐานของวีโอไอพี มี 2 รูปแบบ คือ

1. H.323 Standard
สำหรับ มาตรฐาน H.323 นั้น จริงๆ แล้วไม่ได้ถูกออกแบบมาให้ใช้งานกับระบบเครือข่ายที่ใช้ Internet Protocol (IP) นอกจากนั้นมาตรฐาน H.323 ยังมีการทำงานที่ค่อนข้างช้า โดยปกติแล้วเราจะเสนอการใช้งานมาตรฐาน H.323 ให้กับลูกค้าก็ต่อเมื่อในระบบเดิมของลูกค้ามีการใช้งานมาตรฐาน H.323 อยู่แล้วเท่านั้น

  • มาตรฐาน H.323 เป็นมาตรฐานภายใต้ ITU-T (International Telecommunications Union) Standard
  • ใน ตอนแรกนั้น มาตรฐาน H.323 ได้ถูกพัฒนาขึ้นมาเพื่อเป็นมาตรฐานสำหรับการทำ Multimedia Conferencing บนระบบเครือข่าย LAN เป็นหลัก แต่มาในตอนหลังจึงถูกพัฒนาให้ครอบคลุมถึงการทำงานกับเทคโนโลยี VoIP ด้วย
  • มาตรฐาน H.323 สามารถรองรับการทำงานได้ทั้งแบบ Point-to-Point Communications และแบบ Multi-Point Conferences
  • อุปกรณ์ต่างๆ จากหลากหลายยี่ห้อ หรือหลายๆ Vendors นั้นสามารถที่จะทำงานร่วมกัน (Inter-Operate) ผ่านมาตรฐาน H.323 ได้

2. SIP (Session Initiation Protocol) Standard
มาตรฐาน SIP นั้นถือเป็นมาตรฐานใหม่ในการใช้งานเทคโนโลยี VoIP โดยที่มาตรฐาน SIP นั้น ได้ถูกออกแบบมาให้ใช้งานกับระบบ IP โดยเฉพาะ ซึ่งโดยปกติแล้วเราจะแนะนำให้ลูกค้าใหม่ที่จะมีการใช้งาน VoIP ให้มีการใช้งานอยู่บนมาตรฐาน SIP…

  • มาตรฐาน SIP นั้นเป็นมาตรฐานภายใต้ IETF Standard ซึ่งถูกออกแบบมาสำหรับการเชื่อมต่อ VoIP
  • มาตรฐาน SIP นั้นจะเป็นมาตรฐาน Application Layer Control Protocol สำหรับการเริ่มต้น (Creating), การปรับเปลี่ยน (Modifying) และการสิ้นสุด (Terminating) ของ Session หรือการติดต่อสื่อสารหนึ่งครั้ง
  • มาตรฐาน SIP จะมีสถาปัตยกรรมการทำงานคล้ายคลึงการทำงานแบบ Client-Server Protocol
  • เป็นมาตรฐานที่มี Reliability ที่ค่อนข้างสูง Vendors นั้นสามารถที่จะทำงานร่วมกัน (Inter-Operate) ผ่านมาตรฐาน H.323 ได้

การส่งสัญญาณเสียง
ครั้ง เมื่อมีเครือข่ายไอพีกว้างขวางและเชื่อมโยงกันมากขึ้น ความต้องการส่งสัญญาณข้อมูลเสียงที่ได้คุณภาพก็เกิดขึ้น สิ่งที่สำคัญ คือระบบประกันคุณภาพการสื่อสาร โดยจัดลำดับความสำคัญ หรือจองช่องสัญญาณไว้ให้ก่อน ระบบการสื่อสารในรูปแบบใหม่นี้ จะต้องกระทำโดยเราเตอร์

การส่งเสียงบนเครือข่ายไอพี หรือเรียกว่า VoIP-Voice Over IP เป็นระบบที่นำสัญญาณข้อมูลเสียงมาบรรจุลงเป็นแพ็กเก็ต ไอพี แล้วส่งไปโดยที่เราเตอร์มีวิธีการปรับตัวเพื่อรับสัญญาณแพ็กเก็ต และยังแก้ปัญหาบางอย่างให้ เช่น การบีบอัดสัญญาณเสียง ให้มีขนาดเล็กลง การแก้ปัญหาเมื่อมีบางแพ็กเก็ตสูญหาย หรือได้มาล่าช้า

http://tn-home.blogspot.com/2009/08/introduction-to-voip.html

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

การสื่อสารผ่านทางเครือข่ายไอพีต้องมี เราเตอร์ที่ทำหน้าที่พิเศษเพื่อ ประกันคุณภาพช่องสัญญาณไอพีนี้ เพื่อให้ข้อมูลไปถึง ปลายทางหรือกลับมาได้อย่างถูกต้อง และอาจมีการให้สิทธิพิเศษก่อนแพ็กเก็ตไอพีอื่น เพื่อการให้บริการที่ทำให้เสียงมีคุณภาพ

จากระบบดังกล่าวนี้เอง จึงสามารถนำมาประยุกต์ใช้กับระบบเชื่อมโยงเครือข่ายโทรศัพท์ระหว่างองค์กร โดยองค์กรสามารถ ใช้ระบบสื่อสารทางโทรศัพท์ผ่านทางเครือข่ายไอพี


ตัวอย่าง Application การใช้งานเทคโนโลยี VoIP
1. PBX to PBX Connection
* ทั้ง 2 ฝั่งของสำนักงานจะสามารถใช้งานตู้สาขา PBX ของสำนักงานอีกฝั่งเปีรยบเสมือนตู้สาขา PBX ของฝั่งตัวเอง
* Users ภายในไม่จำเป็นต้องทำการ Dial ออกไปบนระบบโทรศัพท์ PSTN เพื่อทำการเชื่อมต่อเข้ากับตู้สาขา PBX ของสำนักงานอีกฝั่ง

2. Long Line PBX Extension
* เป็นการเชื่อมต่อที่สำนักงานใหญ่ขยายการเชื่อมต่อตู้สาขา PBX ไปที่สำนักงานสาขาที่ไม่มีตู้ PBX ใช้งานอยู่
* ทางสำนักงานสาขาสามารถใช้งานตู้ PBX ผ่านทางสำนักงานใหญ่ได้เสมือนกับเป็นตู้สาขา PBX ของฝั่งตนเอง

3. Teleworker / Local Access
* เป็นการเชื่อมต่อที่ยินยอมให้ Remote User ฝั่งสำนักงานใหญ่สามารถใช้งานโทรศัพท์เข้ามาที่สำนักงานใหญ่ แล้วใช้ระบบเครือข่ายของสำนักงานใหญ่เชื่อมต่อไปยังสำนักงานสาขาผ่าน เทคโนโลยี VoIP เพื่อสามารถใช้ งานโทรศัพท์ในพื้นที่ของสำนักงานสาขาได้โดยเสียค่าบริการในอัตราของพื้นที่ ของสำนักงานสาขานั้น ๆ

4. Service Provider CPE (Customer Premises Equipment)
* ผู้ให้บริการต่าง ๆ เช่น ISP สามารถที่จะเสนอบริการเสริมต่าง ๆ ทางด้าน VoIP บนระบบเครือข่ายความเร็วสูงที่มีการใช้งานอยู่เดิมแล้ว

อุปกรณ์เชื่อมต่อ เพื่อใช้งาน VoIP

สำหรับอุปกรณ์ในการเชื่อมต่อกับระบบ VoIP ไม่ว่าระบบ VoIP จะเป็นลักษณะ SoftSwitch หรือ HardSwitch อุปกรณ์ที่ใช้เชื่อมต่อ ก็ยังทำหน้าที่ 2 อย่างหลัก ๆ คือ

1. ทำหน้าที่แปลงสัญญาณเสียง,ภาพที่อยู่ในรูปแบบอนาล๊อกให้อยู่ในรูปแบบดิจิตอล

2. ทำหน้าที่บีบอัดข้อมูลเสียงมภาพที่อยู่ในรูปแบบดิจิตอล ให้มีขนาดที่เล็กลง เพื่อให้ใช้เวลาที่ส่งผ่านได้เร็วขึ้น

อุปกรณ์ที่ใช้เชื่อมต่อกับระบบ VoIP นั้น แบ่งออกได้ 2 ประเภทคือ

1. ที่เป็น Software ซึ่งมักจะเรียกกันว่า SoftPhone ข้อดีสำหรับการใช้งาน SoftPhone ไม่ต้องเสียเงินซื้ออุปกรณ์ที่เป็น Hardware เพราะ SoftPhone ส่วนให้มีให้ Download ฟรี นอกเสียจาก ต้องการ SoftPhone ที่มีความสามารถพิเศษเช่น สามารถส่งผ่านข้อมูลได้ทั้งภาพและเสียง หรือ สามารถใช้สำหรับการประชุมหลาย ๆ คู่สาย สำหรับข้อเสียคือ ในขณะที่ใช้งาน,รอการติดต่อ จำเป็นจะต้องเปิดเครื่องคอมพิวเตอร์ไว้ จึงทำให้ไม่สะดวกมากนัก และคุณภาพเสียงของ SoftPhone ยังขึ้นอยู่กับประสิทธิภาพของคอมพิวเตอร์ด้วย

2. ที่เป็น Hardware ไม่ว่าจะเป็น IP Phone, IP Video Phone, Phone Adapter, VoIP Gate หรือ Wi-Fi Phone ให้คุณภาพเสียงที่ดี แต่ก็ต้องศึกษาคุณสมบัติของตัวอุปกรณ์ เพราะบางครั้งอาจไม่รองรับกับระบบ VoIP ที่เชื่อมต่อ

ประโยชน์ของระบบวีโอไอพี

* ค่าใช้จ่ายในการสื่อสารถูกลงและสะดวกสบายมากยิ่งขึ้น
* ไม่มีขีดจำกัดในการขยายเครือข่าย ทุกที่ทั่วโลก ที่สามารถเชื่อมต่ออินเตอร์เน็ตได้
* เพิ่มความยืดหยุ่นในการติดต่อสื่อสาร ระหว่างสาขาขององค์กร หรือองค์กรกับองค์กร
* สามารถยุบรวมระบบเครือข่าย ทำให้ลดการเดินสาย Cable ใหม่
* รอบรับการขยายตัวของระบบในอนาคต
* ลดค่าใช้จ่ายในการดูแลและจัดการระบบ
* สามารถใช้งานร่วมกับอุปกรณ์สือสารไร้สายอื่่น ๆ เช่น โทรศัพท์มือถือ และ PDA
* เพิ่มประสิทธิภาพในการติดต่อกับลูกค้า โดยการพัฒนาต่อยอด เช่น เชื่อมกับระบบ CRM

จุดด้อยของวีโอไอพี
จุด ด้อยของวีโอไอพีก็คือ ในบางกรณีคุณภาพเสียงอาจจะไม่ดีเท่าโทรศัพท์ปกติ และอาจจะมีการดีเลย์หรือการที่สัญญาณเสียงเดินทางมาช้า ทำให้พูดสวนกันไม่ได้ถนัด ต้องรอให้แต่ละฝ่ายพูดให้จบก่อนจึงจะพูดได้ แต่ปัญหานี้ได้รับการปรับปรุงขึ้นมาอย่างต่อเนื่องจนแทบจะไม่มีความแตกต่าง อีกต่อไป ข้อเสียอีกประการหนึ่งก็คือ โทรศัพท์วีโอไอพี จะใช้งานไม่ได้เมื่อไฟฟ้าดับ หรืออินเทอร์เน็ตเกิดขัดข้อง

อนาคตของวีโอไอพี
วี โอไอพี หรือที่มักจะเรียกกันย่อๆว่าวอยส ์จะได้รับความนิยมมากขึ้น เนื่องจากคุณภาพที่ได้รับปรับปรุงและค่าใช้จ่ายที่ถูก จนในที่สุดอาจจะกลายเป็นบริการฟรี เช่น เดียวกับการใช้งานอินเทอร์เน็ตอื่นๆ เช่น การสืบค้นเว็บไซต์ การใช้อีเมล เพราะอันที่จริงก็ไม่มีความแตกต่างกันมากนัก ผู้ใช้บริการเพียงแต่จ่ายค่าเชื่อมต่ออินเทอร์เน็ตเท่านั้น

ทิศทางบริการแห่งยุค

Voice over IP เกิดขึ้นพร้อมๆ กับการให้บริการอินเทอร์เน็ต และได้กลายเป็นบริการยอดนิยมของผู้ที่เชี่ยวชาญด้านคอมพิวเตอร์ และนักศึกษา ซึ่งมีเวลาแต่ไม่มีเงิน เมื่อไม่นานมานี้ และในปัจจุบัน Voice over IP ก็กำลังได้รับความนิยมจากผู้ใช้เพิ่มมากขึ้นเรื่อยๆ การไม่สามารถเปิดให้บริการโทรศัพท์ด้วยเสียงผ่านอินเทอร์เน็ตจากเครือข่าย ที่มีอยู่เดิม อาจทำให้ผู้ให้บริการ เช่น เวอริซอน, เอสบีซี และเบลล์เซาธ์ ต้องสูญเสียส่วนแบ่งในตลาดโทรคมนาคมมูลค่า 200,000 ล้านดอลลาร์ได้ เนื่องจาก เมื่อใช้ Voice over IP ลูกค้ามีอิสระในการใช้เครือข่ายของผู้ให้บริการเดิม หรือจะเปลี่ยนผู้ให้บริการใหม่ อย่างเช่น บริษัทผู้ให้บริการทีวีตามสาย (เคเบิล ทีวี) หรือธุรกิจเกิดใหม่ อย่าง Net2Phone และ Vonage ได้ ประกอบกับ การใช้งาน Voice over IP ไม่จำเป็นต้องโทรศัพท์ผ่านพีซีที่ใช้ไมโครโฟนเป็นอุปกรณ์เสริมอีกต่อไป แม้ว่าอุปกรณ์ดังกล่าว กำลังจะกลับมาอีกครั้งตามกระแสนิยมบริการ อย่าง Skype ซึ่งพัฒนาขึ้นโดยอาศัยสถาปัตยกรรมของคาซา และทำให้การโทรศัพท์แบบพีซีกับพีซีง่ายขึ้น ขณะที่คิดค่าธรรมเนียมเหมือนโทรศัพท์ทั่วไป คือ เพียง 100 ดอลลาร์เท่านั้น นับตั้งแต่เปิดตัวไปเมื่อเดือนเมษายนที่ผ่านมา โวเนจ ผู้ให้บริการ Voice over IP ชั้นนำ สามารถดึงดูดให้ลูกค้า 85,000 คน จ่ายค่าบริการ 15 – 35 ดอลลาร์ต่อเดือน

แนวโน้มวงการโทรคมฯ

เมื่อ เร็วๆนี้ บริษัท นีเมอร์เทส รีเสิร์ช ในชิคาโก ทำสำรวจ 42 บริษัท ซึ่งคิดเป็น 70% ของบริษัทที่มีรายได้มากกว่า 1,000 ล้านดอลลาร์ และพบว่า ประชาชนเกือบ 2 ใน 3 ใช้โทรศัพท์ผ่านอินเทอร์เน็ต ขณะที่อีก 20% ที่เหลือ กำลังทดลองใช้เทคโนโลยีดังกล่าว จึงไม่แปลกใจว่าทำไมเมื่อเดือนธันวาคมที่ผ่านมา เอที แอนด์ ที, เควสต์, คอกซ์ คอมมิวนิเคชันส์, และไทม์ วอร์เนอร์ เทเลคอม จึงตบเท้าทยอยเปิดตัวบริการ Voice over IP ของตัวเอง
Voice over IP สร้างความตื่นเต้นให้กับลูกค้า นางแคธี มาร์ติน รองประธานอาวุโสเอที แอนด์ ที ผู้ซึ่งผลักดันให้บริการโทรศัพท์ผ่านอินเทอร์เน็ต ของมา เบลล์ กลายเป็นบริการยอดนิยม 100 อันดับแรกในตลาดผู้บริโภคทั่วไปและองค์กรธุรกิจของสหรัฐ กล่าว พร้อมเสริมว่า คำว่า แจ๋ว ไม่ได้ถูกนำมาใช้ในภาคโทรคมนาคมเลย นับตั้งแต่การมาถึงของโทรศัพท์ในทศวรรษ 1950 เป็นต้นมา แต่ความยืดหยุ่นของโทรศัพท์ผ่านอินเทอร์เน็ต อาจทำให้ผู้ใช้ต้องอุทานคำดังกล่าว เพื่อแสดงออกถึงความพอใจในการใช้งาน
ขณะ ที่นายเดวิด ไอเซนเบิร์ก ที่ปรึกษาด้านโทรคมนาคมอิสระ ขยายความเรื่องความยืดหยุ่นของบริการ Voice over IP ไว้ว่า โทรศัพท์ผ่านอินเทอร์เน็ต ทำงานบนมาตรฐานเปิด จึงแตกต่างจากเครือข่ายโทรศัพท์พื้นฐาน ที่ต้องถูกควบคุมอย่างเข้มงวดและเสียค่าใช้จ่ายสูงในการเพิ่มลูกเล่นใหม่ ด้วย Voice over IP

คุณสามารถพัฒนาฟังก์ชันใหม่ได้เร็วเท่ากับการ เขียนโปรแกรม นายไอเซนเบิร์ก ซึ่งร่วมงานกับเบลล์ แลบส์ของเอที แอนด์ ที มากว่า 12 ปี กล่าว
ในปัจจุบันการส่งสัญญาณเสียงกับข้อมูล จะถูกส่งผ่านโครงข่ายที่แยกจากกัน แต่แนวโน้มของการสื่อสารโทรคมนาคมในอนาคตอันใกล้นี้ จะเป็นลักษณะการรวมบริการหลายๆ อย่างไว้ในโครงข่ายเดียว ซึ่งสามารถให้บริการได้ทั้งสัญญาณเสียง, ข้อมูล, ภาพ ภายใต้โครงข่าย แบบแพ็คเกจ โดยการส่งข้อมูลทั้งสัญญาณภาพ และเสียงเป็นชุดของข้อมูล ที่สัญญาณเสียง จะถูกแปลงเป็นข้อมูล ก่อนที่จะถูกส่ง ในโครงข่าย โดยใช้ไอพีโปรโตคอล (Internetworking Protocol: IP) ซึ่งกำลังเป็นสิ่งทีได้รับ ความสนใจ เป็นอย่างมาก ทั้งในส่วนขององค์กร ธุรกิจ และผู้ให้บริการโครงข่ายหลายราย

ส่วนสิ่งที่ผลักดันให้ VoIP ภายใต้ ไอพี เทเลโฟนนี่ (IP Telephony) เป็นที่ต้องการทางด้านการตลาด คือ

ประการ แรก โอกาสที่จะติดต่อ สื่อสารระหว่างประเทศ โดยผ่านเครือข่ายอินเทอร์เน็ต หรืออินทราเน็ต โดยมีราคาที่ถูกกว่าโครงข่ายโทรศัพท์ทั่วไป

ประการ 2 การพัฒนารูปแบบการสื่อสารใหม่ๆ เพิ่มขึ้นในปัจจุบัน โดยที่ส่วนหนึ่งถูกพัฒนาขึ้นให้สามารถใช้งานใน VoIP ทำให้สามารถติดต่อสื่อสารได้กว้างไกลมากขึ้น

ประการ 3 การเป็นที่ยอมรับ และรับเอาคอมพิวเตอร์เข้ามาใช้ในชีวิตประจำวัน ในช่วง 10 ปีที่ผ่านมาอย่างมากมาย รวมทั้งการเพิ่ม จำนวนขึ้นของผู้ใช้งานอินเทอร์เน็ตในปัจจุบัน เป็นส่วนหนึ่งที่ทำให้ VoIP ได้รับความนิยมในการติดต่อสื่อสาร

ประการ 4 มีการใช้ประโยชน์จากระบบ Network ที่มีการพัฒนาให้ดียิ่งๆ ขึ้นไปในปัจจุบัน ให้สามารถใช้งาน ได้ทั้งในการส่งข้อมูล และเสียงเข้าด้วยกัน

ประการ 5 ความก้าวหน้าทางด้านการประมวลผลของคอมพิวเตอร์ ช่วยลดต้นทุนในการสร้างเครือข่ายของ VoIP ในขณะที่ ความสามารถ การให้บริการมีมากขึ้น ส่งผลให้ธุรกิจต่างๆ เข้ามาร่วมใน VoIP มากขึ้น

ประการ 6 ความต้องการที่จะมีหมายเลขเดียวในการติดต่อสื่อสารทั่วโลก ทั้งด้านเสียง, แฟกซ์ และข้อมูล ถึงแม้ว่าบุคคลนั้น จะย้ายไปที่ใด ก็ตามก็ยังคงสามารถใช้หมายเลขเดิมได้ เป็นความต้องการของผู้ใช้งานและธุรกิจ

ประการ 7 การเพิ่มขึ้นอย่างมากมายของการทำรายการต่างๆ บน e-Commerce ในปัจจุบัน ผู้บริโภคต่างก็ต้องการการ บริการที่มีคุณภาพ และมีการโต้ตอบกันได้ระหว่างที่กำลังใช้ อินเทอร์เน็ตอยู่ ซึ่ง VoIP สามารถเข้ามาช่วยในส่วนนี้ได้

ประการ 8 การเติบโตอย่างรวดเร็วของ Wireless Communication ในปัจจุบัน ซึ่งผู้ใช้ในกลุ่มนี้ต้องการ การติดต่อสื่อสาร ที่ราคาถูกลง แต่มีความยืดหยุ่นในการใช้งาน ดังนั้น ตลาดกลุ่มนี้ถือว่า เป็นโอกาสของ VoIP

จากอดีตมีการส่งข้อมูลผ่าน โครงข่ายวงจรของชุมสายโทรศัพท์ (Circuit Switching) ทำให้เกิดการใช้งานโครงข่ายได้ ไม่เต็มประสิทธิภาพ มากเท่าที่ควร เพราะแต่ละวงจร หรือเส้นทางถูกกำหนดให้ผู้ใช้เพียงคนเดียวเท่านั้น แม้ว่าวงจร หรือเส้นทางนั้นๆ จะว่างอยู่ก็ตาม แต่ในปัจจุบันเริ่มมีการใช้งานแบบแพ็คเกจสวิตชิ่ง (Packet Switching) มากขึ้น โดยการแบ่งข้อมูลที่จะส่งออกเป็นแพ็คเกจย่อยๆ และทำการส่งไปตามเส้นทางต่างๆ กัน อันเป็นการกระจายทราฟฟิก (Traffic) ทั้งหมดในโครงข่ายให้ใช้งานได้อย่างเต็มประสิทธิภาพ ทำให้โครงข่ายมีความยืดหยุ่นและคล่องตัวมากขึ้น ซึ่งหลักการของแพ็คเกจ สวิตชิ่งนี้ได้นำมาใช้เป็น Voice Over Packet เนื่องจากมีการปรับปรุง การทำงาน (Performance) บน Packet Switching ทำให้ Performance per Cost ของ Packet Switching ในอนาคตดีกว่า Circuit Switching

ทิศทางของการ ใช้บริการโทรศัพท์แบบเสียง มีแนวโน้มของการเจริญเติบโตค่อนข้างต่ำ ในขณะที่อัตราการเจริญ เพิ่มของการ ใช้โทรศัพท์แบบข้อมูลมีการเติบโตอย่างรวดเร็ว อันเนื่องจากการใช้งานที่แพร่หลายในทั่วโลก และนับจากที่เทคโนโลยีอินเทอร์เน็ต ได้พัฒนามาจนกระทั่งระบบโทรศัพท์บนอินเทอร์เน็ต (VoIP)

VoIP – Voice over Internet Protocol

VoIP – Voice over Internet Protocol (also called IP Telephony, Internet telephony and Digital Phone) is the routing of voice conversations over the Internet or any other IP-based network.voip diagram VoIP in easy words

SIP – Session Initiation Protocol – is a protocol developed by the IETF MMUSIC Working Group proposed standard and to initiate, modify and complete an interactive user session that involves multimedia elements, such as video, voice, instant messaging, online games and virtual reality.

PSTN – public switched telephone network – is the concentration of public networks of circuit-switched world, like the Internet is the concentration of global public network packet-switched and IP-based.

ISDN– Integrated Service Digital Network – is a type of telephone system of circuit-switched network designed to enable the digital transmission (as opposed to analog) voice and data over copper telephone wires common, which means better quality and faster than the available with analogue systems.

PBX – Switchboard (also known as the Telephone for Private Business) – is a telephone exchange owned by a private company, as opposed to the plant that is owned by a telecommunications operator or a telephone company.

IVR – in telephony, interactive voice response – is a computer system that allows a person, typically the caller on the phone, please select from a menu of voice and interface with a computer system.

DID – Direct Dialing internal (also called DDI in Europe) is a feature offered by phone companies for use with the switchboard of its clients through which the telephone company assigns a range of issues connected to the switchboard of his client.

RFC – Request for comments (the plural is Requests for comments, in which case its acronym in English are RFCs) is one in a series of briefing papers numbered Internet standards and that both commercial and freeware software on the Internet and communities Unix still widely.

http://www.syednetworks.com/voip-in-easy-words

การติดตั้ง Asterisk สำหรับระบบ VoIP

ดาวน์โหลดโปรแกรม Asterisk เวอร์ชั่น 1.6.2.2

# fetch http://www.freebsd.sru.ac.th/download/VoIP/asterisk-1.6.2.2.tar.gz

เริ่มติดตั้ง

# cd เข้าไปในตำแหน่งที่ดาวน์โหลดโปรแกรมไว้
# tar zvfx asterisk-1.6.2.2.tar.gz
# cd asterisk-1.6.2.2
# ./configure –prefix=/usr/local/asterisk

เรียบเรียงโดย อ.ปริญญา น้อยดอนไพร สาขาวิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี มหาวิทยาลัยราชภัฏสุราษฎร์ธานี

ที่มา 1 :: http://www.asterisk.org
ที่มา 2 :: http://www.voip-info.org/wiki/view/Asterisk+FreeBSD
ที่มา 3 :: http://freeware-thai.blogspot.com/2009/03/voice-over-ip.html
ที่มา 4 :: http://www.thaiasteriskclub.com/index.php?board=7.0