วันพฤหัสบดีที่ 6 กุมภาพันธ์ พ.ศ. 2557

ระบบ Asterisk คืออะไร และทำงานอย่างไร

ระบบ Asterisk คืออะไร และทำงานอย่างไร

Asterisk คือ opensource software ที่ทำหน้าที่หลักเป็น Softswitch, IP-PBX หรือที่เรียกว่าตู้ชุมสายโทรศัพท์ระบบ IP ซึ่งมีหน้าที่ในการควบคุมและจัดการบริหาร การเชื่อมต่อ ระหว่างอุปกรณ์โทรศัพท์ผ่านเครื่องข่ายเนทเวอร์ค อีกทั้งยังสามรถเพิ่มเติมประสิทธิ์ภาพและความสามารถในการทำงานได้โดยง่าย

1. Switch (PBX) ตู้ชุมสาย
Asterisk สามารถทำหน้าเป็นอุปกรณ์สลับสายโทรศัพท์ไม่ว่าจะเป็นระบบ IP หรือ hybrid, สามรถทำการตั้งค่าเส้นทางการของการโทรศัพท์โดยตัวเอง, สามารถเพิ่มเติม feature ได้เช่น (ระบบ Voicemail, IVR), รองรับการเชื่อมต่อกับระบบโทรศัพท์พื้นฐานไม่ว่าจะเป็นแบบ analog หรือ digital (ISDN)
2. Gateway
สามารถทำหน้าเป็นอุปกรณ์ที่ใช้ในการเชื่อมต่อระหว่าระบบโทรศัพท์พื้นฐานกับระบบ VoIP เช่นการติดตั้งการ์ดบน Asterisk และ ตั้งค่าให้ ทำงานเป็น Gateway เชื่อมระบบ SIP เข้ากับ ระบบ TDM(PSTN)
3. Feature & Media Server
อีกความสามารถของ Asterisk คือสามารถทำเป็น ระบบตอบรับหรือระบบการประชุมทางโทรศัพท์ เพื่อให้ทำงานเข้ากับระบบโทรศัพท์ที่มีอยู่เดิม ได้อีกด้วย
:ตัวอย่างการ implementation
-สามารถทำเป็น IVR หรือระบบตอบรับ ให้กับตู้ชุมสาย (pabx) เดิมที่ไม่มีระบบตอบรับ
-เชื่อมเข้ากับระบบ Database เพื่อให้ asterisk ทำหน้าที่เหมือนเป็น operator ในการรับสายและตอบคำถามตามที่ลูกค้าต้องการโดยอัตโนมัติ
-ทำเป็น Voice Conference server เพื่อรับการประชุมทางเสียง จากหลายๆจุด
-ระบบ Voice Recognition ทำงานร่วมกับ software ภายนอกเพื่อทำให้ asterisk สามารถที่จะ ตอบโต้กับผู้ใช้งานทางเสียงโดยอัตโนมัติ
-Paging server ทำงานเป็นอุปกรณ์ควบคุมระบบกระจายเสียง PA system

4. Call Center
รองรับการทำงานของระบบ Call-Center อย่างเต็มรูปแบบ เช่น ACD, Queue, IVR, Skill-based routing, etc.
5. Media Conversion
รองรับการทำงานในการแปลงข้อมูลเสียงจาก codec ไปเป็นอีก codec ในกรณีนี้ asterisk จะทำหน้าที่เป็นตัวกลางในการแปลงข้อมูลเสียง

จุดดีและจุดด้อยของ Asterisk

ข้อดี: รองรับการทำงานเกียบจะทุกแบบ คืออะไรที่คิดว่าโทรศัพท์ทำได้ Asterisk ทำได้หมด อะไรที่ไม่คิดว่าจะทำได้ astreisk ก็นำไปประยุกต์ใช้งานได้
ข้อด้อย: เนื่องจาก asterisk มีการออกแบบที่อาจไม่รองรับการขยายตัวขนาดนี้จึงทำให้มีปัญหามากมายในการเพิ่มเติมความสามารถในอนาคต ซึ่ง มีตัวอย่างเหตุผลสนับสนุนด้านล่าง
ตัวอย่างจุดด้อยของ asterisk
สามารถพบ deadlock และ crash ได้บ่อย
พบ memory leak ได้บ่อย
เนื่องจาก architechture ของ asterisk การทำงานเป็นแบบ thread ที่ค่อนข้างที่จะมีข้อจำกัดมาก โดยจะอนุญาติให้เฉพาะ channelตันฉบับและchannelที่ทำการ run application เป็น thread ได้ ฉะนั้น หากเป็นกรณีที่ผู้รับสาย (b-leg) มีการทำอะไรบางอย่างเช่นการโอนสาย, Channel นั้นๆ จะต้องถูกโอนเป็น thread ก่อน ซึ่งจะมีต้องมีการทำ channel masquerade โดยนำ channel เดิมไปใส่ไว้ใน channel ใหม่ ซึ่งเหมือนเป็นการ clone channel นั้นๆขึ้นมาใหม่และทำการ hangup channel เดิมลงไป จีงทำให้ระบบ CDR ของ asterisk นั้น ไม่มีความต่อเนื่องในบางกรณี เช่นการทำ attended transfer ที่เราจะเห็นจำนวน channel เกิดขึ้น 3-4 channel สำหรับการโทรเพียง ครั้งเดียว
มีการใช้ linked-lists เพื่อควบคุม Channel, สำหรับการทำงาน thread ใน asterisk ที่ถูกสร้างขึ้น ในแต่ละ linked-lists จะมี Mutexes ที่ควบคุมการถูก write-access โดยหนึ่ง threaded เท่านั้น ซึ่งอาจนำไปสู่ภาวะที่มีการล้าง บาง channel masquerade ได้ ทำให้เกิด Segmentation Fault ที่ระบบทั้งหมดจะหยุดไปทันที
ระบบ AMI ไม่มีกำหนด structure ที่ดีทำให้การส่งรับ data มีปัญหาในการ เก็บข้อมูล (parse data) ได้ยาก
Asterisk core มีการ link dependencies(shared code) ในบาง modules ลูกของ asterisk เอง ทำให้ในบางกรณีที่เราไม่สามารถที่จะ start asterisk ได้เนืี่องจากปัญหาในบาง modules
Asterisk ไม่มีการป้องกัน API ของตัวเอง ทำให้ในการ develop อะไรขึ้นมาเพิ่มเติมอาจไปทำให้ไปกระทบ กับ funcion และ data structure เดิมได้ง่าย

ระบบที่จำเป็นต่อ Asterisk

1. OS ระบบปฎิบัติการ 32/64 bits
Linux, OpenBSD, FreeBSD, MAC OS X
2 PC Hardware อาจเป็นเครื่อง PC หรือ Server ที่สามารถลงระบบปฏิบัติการ linux ได้
2.1 การ์ดสายนอกเพื่อเชื่อมต่อกับสายโทรศัพท์ทั้งระบบ Digital หรือ Analog มีทั้งที่ติดตั้งภายในเครื่อง หรือ ผ่าน USB Port นอกเครื่อง Server
2.2 เครื่อง Server,

Protocol ที่ Asterisk รองรับ

H.323, Session Initiation Protocol (SIP), Media Gateway Control Protocol (MGCP), and Skinny Client Control Protocol (SCCP) และ Inter-Asterisk eXchange (IAX™)

การทำงานของ Asterisk

อย่างที่รู้กันแล้วว่า Asterisk เป็น software ตัวหนึ่งที่ทำหน้าที่หลักในการควบคุมระบบโทรศัพท์ ซึ่งส่วนใหญ่แล้ว Asterisk จะสามารถทำงานบน Linux OS, FressBSD (not officially support by digium) ซึ่งในการทำงาน ของ Asterisk ผู้ใช้งานจำเป็นต้องสามารถที่จะเข้าใจการทำงาน และ ตั้งค่าต่างๆของ Asterisk ได้
Asterisk เป็น software ที่ทำงานเป็น daemon หรือ เป็น Process หนึ่งที่ทำงานอยู่บนเครื่องคอมพิวเตอร์ โดยการตั้งค่าของ Asterisk เพิ่มที่จะทำให้ ระบบทำงานได้ หรือ เป็นไปตามที่ผู้ใช้งานต้องการนั้น มีอยู่ 2 ลักษณะ คือ
1. แบบ .conf ไฟล์ ซึ่งการตั้งค่าแบบนี้ใช้งานกันอยู่อย่างแพร่หลายไม่ว่าจะเป็น การตั้งโดยผ่าน Web-Interface เช่น FreePBX, โดย ไฟล์ที่เขียนลงไปในระบบจะทำหน้าที่ในการบอกให้ Asterisk ทำงานอย่างที่เราต้องการ
2. แบบ database, เป็นอีกลักษณะในการตั้งค่าบางประเภทของ Asterisk โดยการตั้งค่าลักษณะนี้มีข้อดีในการที่เราสามารถที่จะปรับเปลี่ยนค่าได้ทันที โดยไม่จำเป็นต้อง สั่งให้ Asterisk ทำการอ่านค่าจาก file อีก คร้้ง (reload)

โดยหลังจากที่การตั้งค่าต่างๆเสร็จสิ้น Asterisk ก็จะสามารถทำงานได้ทันที โดย ในกรณีที่เป็น ระบบ SIP/IAX/etc. เครื่องลูกข่ายต่างๆก็จะสามารถที่จะเชื่อมต่อเข้ามายังระบบ ผ่านระบบเครือข่าย อนึ่งหากต้องการที่จะให้ Asterisk ทำงานกับ Telephony Hardware เช่น การ์ดสายนอก หรือ กล่องสายนอกต่างๆ ก็ต้องทำการติดตั้งค่าใน Asterisk ด้วย

Features ที Asterisk รองรับ

Call features
ADSI On-Screen Menu System
Alarm Receiver
Append Message
Authentication
Automated Attendant (ระบบตอบรับอัตโนมัติ)
Blacklists (การทำ backlist ใช้ในการ filter ผู้ใช้งานโทรศัพท์ที่โทรเข้าได้)
Blind Transfer (การโอนสายแบบโอนขาด หรือ โอนโดยไม่ถามผู้ที่เราจะโอนไปหาก่อน)
Call Detail Records (การจัดเก็บข้อมูลการโทรศัพท์ในระบบโดยระเอียด)
Call Forward on Busy (การโอนสายไปยังผู้อื่นในกรณ์ที่สายนั้นๆไม่ว่าง)
Call Forward on No Answer (การโอนสายไปยังผู้อื่นในกรณ์ที่สายนั้นๆไม่รับสาย)
Call Forward Variable
Call Monitoring (การดู status (ipaddress,ping time) ของ Client ที่เชื่อมต่อมายังระบบ)
Call Parking
Call Queuing
Call Recording
Call Retrieval
Call Routing (DID & ANI)
Call Snooping
Call Transfer
Call Waiting
Caller ID
Caller ID Blocking
Caller ID on Call Waiting
Calling Cards
Conference Bridging
Database Store / Retrieve
Database Integration
Dial by Name
Direct Inward System Access
Distinctive Ring
Distributed Universal Number Discovery (DUNDi™)
Do Not Disturb
E911
ENUM
Fax Transmit and Receive (3rd Party OSS Package)
Flexible Extension Logic
Interactive Directory Listing
Interactive Voice Response (IVR)
Local and Remote Call Agents
Macros
Music On Hold
Music On Transfer:
- Flexible Mp3-based System
- Random or Linear Play
- Volume Control
Predictive Dialer
Privacy
Open Settlement Protocol (OSP)
Overhead Paging
Protocol Conversion
Remote Call Pickup
Remote Office Support
Roaming Extensions
Route by Caller ID
SMS Messaging
Spell / Say
Streaming Media Access
Supervised Transfer
Talk Detection
Text-to-Speech (via Festival)
Three-way Calling
Time and Date
Transcoding
Trunking
VoIP Gateways
Voicemail:
- Visual Indicator for Message Waiting
- Stutter Dialtone for Message Waiting
- Voicemail to email
- Voicemail Groups
- Web Voicemail Interface
Zapateller

Computer-Telephony Integration
AGI (Asterisk Gateway Interface)
Graphical Call Manager
Outbound Call Spooling
Predictive Dialer
TCP/IP Management Interface

Scalability
TDMoE (Time Division Multiplex over Ethernet)
Allows direct connection of Asterisk PBX
Zero latency
Uses commodity Ethernet hardware
Voice-over IP
Allows for integration of physically separate installations
Uses commonly deployed data connections
Allows a unified dialplan across multiple offices

Codecs
ADPCM
G.711 (A-Law & μ-Law)
G.722
G.723.1 (pass through)
G.726
G.729 (through purchase of a commercial license)
GSM
iLBC
Linear
LPC-10
Speex

Protocols
IAX™ (Inter-Asterisk Exchange)
H.323
SIP (Session Initiation Protocol)
MGCP (Media Gateway Control Protocol
SCCP (Cisco® Skinny®)

Traditional Telephony Interoperability
E&M
E&M Wink
Feature Group D
FXS
FXO
GR-303
Loopstart
Groundstart
Kewlstart
MF and DTMF support
Robbed-bit Signaling (RBS) Types
MFC-R2 (Not supported. However, a patch is available

PRI Protocols
4ESS
BRI (ISDN4Linux)
DMS100
EuroISDN
Lucent 5E
National ISDN2
NFAS

ไม่มีความคิดเห็น:

แสดงความคิดเห็น