** หลายๆท่านเข้าใจผิดว่า Echo Canceller จะใช้ได้กับทุกๆ Channel บน Asterisk ครับ มันใช้ได้เฉพาะ DAHDI Channel เท่านั้นนะครับ ใช้ได้ทั้ง Analog และ Digital Card เลย ส่วน Channel อื่นๆอย่างเช่น SIP/IAX2/H.323 ไม่ได้ใช้ครับ ดังนั้นหากโทรผ่าน SIP/IAX2/H.323 แล้วได้ยิน Echo หล่ะก็ ไม่เกี่ยวกับ Echo Canceller บน Asterisk นะครับ ไม่ต้องสงสัยเลย **
ไม่ยากครับ ผมมีวิธีให้ตรวจสอบอยู่ 2 วิธี (หากท่านใดมีวิธีอื่นๆนอกเหนือจากนี้ โพสต์แนะนำได้เลยนะครับ)
1. รันคำสั่ง service dahdi status
- โค้ด: เลือกทั้งหมด
service dahdi status
ผลลัพธ์
- โค้ด: เลือกทั้งหมด
### Span 1: WCTDM/4 "Wildcard S400P Prototype Board 5" (MASTER)
1 FXO FXSKS (In use) (EC: OSLEC - INACTIVE)
2 FXO FXSKS (In use) (EC: OSLEC - INACTIVE) RED
3 FXO FXSKS (In use) (EC: OSLEC - INACTIVE) RED
4 FXO FXSKS (In use) (EC: OSLEC - INACTIVE) RED
ดูบรรทัด EC:OSLEC - INACTIVE นะครับ ความหมายคือ ใช้ Echo Canceller แบบ OSLEC (Open Source Line Echo Canceller) และยังไม่ทำงาน (INACTIVE) ที่ยังไม่ทำงานเพราะว่ายังไม่มีการโทรผ่านพอร์ตบนการ์ด ส่วนตัวอักษร RED นั้นโชว์ว่าผมยังไม่ได้ต่อสายโทรศัพท์ไว้
ทีนี้มาดูตอนโทรผ่านการ์ดบ้าง โทรค้างไว้แล้วรันคำสั่ง dahdi show status ใหม่ ผลจะได้แบบนี้
- โค้ด: เลือกทั้งหมด
### Span 1: WCTDM/4 "Wildcard S400P Prototype Board 5" (MASTER)
1 FXO FXSKS (In use) (EC: OSLEC - ACTIVE)
2 FXO FXSKS (In use) (EC: OSLEC - INACTIVE) RED
3 FXO FXSKS (In use) (EC: OSLEC - INACTIVE) RED
4 FXO FXSKS (In use) (EC: OSLEC - INACTIVE) RED
สังเกตุว่า INACTIVE เปลี่ยนเป็น ACTIVE แล้ว
2. เข้า Asterisk แล้วรันคำสั่ง dahdi show channel x
โดยตัว x เป็นหมายเลขพอร์ตที่เราต้องการดู เช่น dahdi show channel 1 หรือ dahdi show channel 2 เป็นต้น
- โค้ด: เลือกทั้งหมด
asterisk -r
dahdi show channel 1
ผลลัพธ์
- โค้ด: เลือกทั้งหมด
Channel: 1
File Descriptor: 23
Span: 1
Extension:
Dialing: no
Context: from-pstn
Caller ID:
Calling TON: 0
Caller ID name:
Mailbox: none
Destroy: 0
InAlarm: 0
Signalling Type: FXS Kewlstart
Radio: 0
Owner: <None>
Real: <None>
Callwait: <None>
Threeway: <None>
Confno: -1
Propagated Conference: -1
Real in conference: 0
DSP: no
Busy Detection: yes
Busy Count: 3
Busy Pattern: 0,0
TDD: no
Relax DTMF: no
Dialing/CallwaitCAS: 0/0
Default law: ulaw
Fax Handled: no
Pulse phone: no
DND: no
Echo Cancellation:
128 taps
currently OFF
Wait for dialtone: 0ms
Actual Confinfo: Num/0, Mode/0x0000
Actual Confmute: No
Hookstate (FXS only): Offhook
สังเกตุตรงบรรทัด Echo Cancellation นะครับ มีค่า currently เป็น OFF หมายความว่ายังไม่มีการใช้ Echo Canceller
ทีนี้มาลองโทรผ่านการ์ดดู แล้วรันคำสั่ง dahdi show channel 1 ใหม่อีกรอบ ผลลัพธ์
- โค้ด: เลือกทั้งหมด
Channel: 1
File Descriptor: 23
Span: 1
Extension:
Dialing: no
Context: from-pstn
Caller ID:
Calling TON: 0
Caller ID name:
Mailbox: none
Destroy: 0
InAlarm: 0
Signalling Type: FXS Kewlstart
Radio: 0
Owner: DAHDI/1-1
Real: DAHDI/1-1
Callwait: <None>
Threeway: <None>
Confno: -1
Propagated Conference: -1
Real in conference: 0
DSP: yes
Busy Detection: yes
Busy Count: 3
Busy Pattern: 0,0
TDD: no
Relax DTMF: no
Dialing/CallwaitCAS: 0/0
Default law: ulaw
Fax Handled: no
Pulse phone: no
DND: no
Echo Cancellation:
128 taps
currently ON
Wait for dialtone: 0ms
Actual Confinfo: Num/0, Mode/0x0000
Actual Confmute: No
Hookstate (FXS only): Offhook
บรรทัด currently เปลี่ยนเป็น ON แล้ว
บทความที่เกี่ยวข้อง
วิธีติดตั้งการ์ด TDM410P + DAHDI 2.6.0 บน Asterisk
วิธีติดตั้งการ์ด TDM400P บน Asterisk