เทคนิคการแก้ปัญหาเรื่อง DTMF บนการ์ด Asterisk

Asterisk Opensource IP Pbx

เทคนิคการแก้ปัญหาเรื่อง DTMF บนการ์ด Asterisk

โพสต์โดย nuiz » 22 มิ.ย. 2011 12:54

สำหรับเครื่องที่ติดตั้งการ์ด Asterisk เข้าไปไม่ว่าจะเป็น Analog เช่น X100P, TDM410P หรือว่า Digital เช่น TE110P ก็ตาม (การ์ดรุ่นอื่นๆด้วยนะครับ ไม่จำกัดว่าจะต้องเฉพาะที่ผมยกมาเป็นตัวอย่าง) อาจจะมีปัญหาที่ว่าสายที่โทรเข้ามา พอฟัง IVR แล้วกดเลือกได้บ้าง ไม่ได้บ้าง ปัญหานี้เกิดจาก Asterisk มันดีเท็ค DTMF ได้ไม่ชัวร์ครับ ได้บ้าง ไม่ได้บ้าง

*** Asterisk มันจะดีเท็คสัญญาณ DTMF เฉพาะสายที่โทรเข้ามานะครับ ส่วนสายที่โทรออกไป ทางฝั่งปลายทางจะเป็นคนดีเท็ค ***
*** การ์ด Analog/Digital ไม่มี DTMFMODE=RFC2833 นะครับ หลายท่าน "เข้าใจผิด" ซึ่งการโทรเข้ามายัง Asterisk ผ่านทางการ์ด หรือการโทรออกจาก Asterisk ผ่านทางการ์ด ไม่ได้มี RTP เข้ามาเกี่ยวข้องเลยแม้แต่น้อย เพราะไม่ได้มีการส่งออกผ่านIP ในขณะที่ RFC2833 หรือ SIP INFO เป็นการรับส่ง DTMF ผ่านทาง RTP ***
*** การ detect สัญญาณ DTMF จะรวมถึงกรณีที่ Asterisk โทรออกไปหาปลายทางผ่านทางการ์ด ปลายทางรับสาย แล้วกดปุ่ม DTMF ส่งมา เราจะเห็นการใช้งานลักษณะนี้ได้จากบริการ Callback ครับ ***
*** ถ้า Asterisk ดีเท็คสัญญาณ DTMF ได้ชัวร์แล้ว การใช้งานอย่างอื่นก็จะไม่มีปัญหาเลยครับ ไม่ว่าจะเป็นกดฟัง IVR กด PIN กดเบอร์ปลายทาง หรือแม้กระทั่งส่งต่อไปยัง SIP Server ผ่านทาง IP ***

ผมมีวิธีตรวจสอบและแก้ปัญหาเรื่อง DTMF มาฝากครับ

1. เช็คบรรทัด relaxdtmf ในคอนฟิก
เช็คว่าค่า elaxdtmf ของพอร์ตที่เรากำลังใช้รับสายเข้ามา (เป็นพอร์ตที่ใช้โทรออกก็ได้นะครับ เซ็ตไว้เลย) มีค่าเป็น yes หรือ no ต้องเป็น "yes" ครับ

โค้ด: เลือกทั้งหมด
asterisk -rx "dahdi show channel 1"


Channel: 1
File Descriptor: 21
Span: 1
Extension:
Dialing: no
Context: from-zaptel
Caller ID:
Calling TON: 1
Caller ID name:
Mailbox: none
Destroy: 0
InAlarm: 0
Signalling Type: ISDN PRI
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: 500,500
TDD: no
Relax DTMF: no
Dialing/CallwaitCAS: 0/0
Default law: alaw
Fax Handled: no
Pulse phone: no
DND: no
Echo Cancellation:
128 taps
(unless TDM bridged) currently OFF
Wait for dialtone: 0ms
PRI Flags: Call
PRI Logical Span: Implicit
Hookstate (FXS only): Onhook

ปรากฏว่าของผมเป็น relaxdtmf=no ครับ ต้องแก้ไขให้มันเป็น yes ด่วนเลย

2. แก้ไขบรรทัด relaxdtmf
เปิดไฟล์ /etc/asterisk/chan_dahdi.conf เพิ่มหรือแก้ไขบรรทัด relaxdtmf

relaxdtmf=yes

3. รีสตาร์ท Dahdi

โค้ด: เลือกทั้งหมด
asterisk -rx "dahdi restart"


คำสั่งนี้จะรีสตาร์ทการ์ด Asterisk ทุกการ์ดที่มีติดตั้งในเครื่อง ดังนั้นสายจะหลุด แต่สายที่โทรผ่าน IP จะไม่หลุดครับ เพราะไม่เกี่ยวกัน

4. ตรวจสอบ

โค้ด: เลือกทั้งหมด
asterisk -rx "dahdi show channel 1"


Channel: 1
File Descriptor: 21
Span: 1
Extension:
Dialing: no
Context: from-zaptel
Caller ID:
Calling TON: 0
Caller ID name:
Mailbox: none
Destroy: 0
InAlarm: 0
Signalling Type: ISDN PRI
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: 500,500
TDD: no
Relax DTMF: yes
Dialing/CallwaitCAS: 0/0
Default law: alaw
Fax Handled: no
Pulse phone: no
DND: no
Echo Cancellation:
128 taps
(unless TDM bridged) currently OFF
Wait for dialtone: 0ms
PRI Flags:
PRI Logical Span: Implicit
Hookstate (FXS only): Onhook

บรรทัด relaxdtmf เปลี่ยนจาก no เป็น yes แล้วครับ

5. ลองโทรเข้าอีกทีครับ
คราวนี้น่าจะชัวร์แล้ว

*** ถ้าคอนฟิกในเครื่องของท่านเป็น relaxdtmf=yes อยู่แล้ว แต่มีปัญหาการดีเท็ค DTMF ก่อนอื่นเช็คให้ชัวร์ก่อนครับว่าใช่พอร์ตนี้แน่ๆ แล้วก็ลองเพิ่มค่า rxgain ดู ก็อยู่ในไฟล์ /etc/asterisk/chan_dahdi.conf นี่แหล่ะครับ ถ้าเพิ่มก็ยังไม่ดีขึ้น ก็ต้องลองโทรผ่านสายนี้ดูแล้วครับ ดูว่ามีเสียงซ่าๆ หรือมีเสียงสะท้อนหรือเปล่า อาจมีก็ได้นะครับ ***

บทความที่เกี่ยวข้อง
OSLEC - Line Echo Canceller สำหรับ Asterisk
ติดตั้งและใช้งานการ์ด X100P
ติดตั้งและใช้งานการ์ด E1 TE110P
** หากมีปัญหากับอุปกรณ์ที่ซื้อมาเองหรือบริการที่ทำขึ้นมาเอง ให้โพสต์ถามในเว็บบอร์ดนี้นะครับ **
** งานเร่งด่วนติดต่อว่าจ้างที่เบอร์ 08-5161-9439 อีเมล์ iamaladin@gmail.com ไลน์ NuizVoip ครับ **
nuiz
Diamond Member
 
โพสต์: 7058
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33

ย้อนกลับไปยัง Asterisk SIP Server

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: Google [Bot] และ บุคคลทั่วไป 8 ท่าน

cron