เทคนิคการติดตั้งและใช้งาน Asterisk Card - X100P

Elastix IP Pbx

Moderator: jubjang

เทคนิคการติดตั้งและใช้งาน Asterisk Card - X100P

โพสต์โดย nuiz » 17 มิ.ย. 2011 11:42

มันเป็นอะไรที่ค้างคาใจผมมาเป็นช่วงระยะเวลาหนึ่ง ประมาณ 2 ปีเห็นจะได้ ผมอยากเล่นการ์ด Analog ดูบ้าง มีท่านหนึ่งซึ่งเป็นสมาชิกในเว็บนี้ (โทษทีผมจำชื่อไม่ได้) เคยให้การ์ด X100P การ์ดสีแดงให้ผมยืมเทส ผมเอามาเทสแล้วปรากฏว่าเครื่องมองไม่เห็นการ์ดเลย ก็เลยคืนเจ้าของไป ขอบคุณอีกครั้งหนึ่งครับ

พอไม่ได้เล่น (อ่านแล้วก็นึกๆเอา) ก็รู้สึกไม่ค่อยมั่นใจที่จะตอบปัญหาหรือให้คำแนะนำแก่คนที่มาโพสต์ถามปัญหา ก็เลยตัดสินใจซื้อมาเล่นซะเลย ซื้อมา 4 การ์ดเลยครับ เป็นการ์ด X100P สีเขียว การ์ด X100P สีแดง การ์ด TDM410P (3 FXO + 1 FXS) แล้วก็ TE110P เป็นการ์ด E1 กะว่าจะเล่นให้หนำใจไปเลย

เอาหล่ะครับ มาเริ่มกันที่การ์ด X100P สีเขียวกันเลย

ตัวการ์ดด้านหน้าและด้านหลัง

รูปภาพ

รูปภาพ

ติดตั้งในคอม

รูปภาพ

รูปภาพ

รูปภาพ

พอดีมีเบอร์โทรศัพท์ว่างอยู่เบอร์นึงพอดี ก็เลยต่อเข้าไป เสียบสายโทรศัพท์ในช่อง LINE นะครับ ส่วนช่อง PHONE เอาไว้ต่อกับเครื่องโทรศัพท์ (หรือไม่ต่อก็ได้) เอาไว้พ่วงเบอร์กันใช้ ซึ่งใช้โทรออกหรือรับสายเข้าได้โดยไม่ยุ่งเกี่ยวกับตัวการ์ดเลย ผมลองดูโดยการปิดเครื่องคอม ปรากฏว่าโทรออกได้ รับสายได้ ผ่านทางเบอร์โทรศัพท์ที่เอามาต่อกับช่อง LINE แต่การใช้งานโดยทั่วๆไปก็ไม่เห็นมีใครเอาเครื่องมาพ่วงนะครับ

ผมเคยสงสัยว่าจำเป็นต้องเสียบสายโทรศัพท์เข้าช่อง LINE ด้วยมั๊ย ปรากฏว่าจริงๆแล้วไม่จำเป็นครับ เสียบช่องไหนก็ได้ เพราะว่าช่อง LINE และ PHONE มันต่อถึงกันโดยไม่มีชิ้นส่วนอิเล็กทรอนิกส์ใดๆมาขวางเลย ลายปริ้นท์มันต่อถึงกัน เพราะฉะนั้นเสียบช่องไหนก็ได้ แต่ถึงจะเสียบช่องไหนก็ได้ ผมว่าเอาตามที่คนผลิตเขาปั๊มไว้บนการ์ดนั่นแหล่ะ

หน้า Hardware Detector ใน Elastix
ล๊อกอินเข้าเว็บ Elatix แล้วคลิ๊ก "Hardware Detector" ก็จะมองเห็นการ์ดแบบนี้ครับ

รูปภาพ

Elastix มองเห็นการ์ดแล้ว แต่ว่าพอร์ตยังเป็นสีเทาอยู่ สังเกตุที่พอร์ตนะครับ ตัวเลขด้านซ้ายมือ ในรูปคือ "1" คือหมายเลขพอร์ต ยังไม่รู้ว่าเป็นพอร์ตประเภทไหน FXO หรือว่า FXO ให้คลิ๊กที่ปุ่ม Detect New Hardware ครับ พอร์ตก็จะเปลี่ยนไปเป็น "สีเขียว" แบบรูปนี้

รูปภาพ

ตอนนี้ Asterisk ก็รู้แล้วว่าพอร์ตเป็นแบบ FXO

ถ้า Elastix มองไม่เห็นการ์ด (แต่ต้องชัวร์ว่าการ์ดไม่เสียและสล๊อตไม่เสีย) ก็อาจจะเป็นไปได้ว่าตอนบู๊ตเครื่อง Dahdi มันไม่รัน ลองหาทางแก้ปัญหาตามบทความนี้ครับ เทคนิคการอัพเกรด Elastix และแก้ปัญหาเรื่อง Card

สถานะพอร์ต
สีเขียวคือมีสัญญาณโทรศัพท์ (แรงดันไฟกระแสตรงที่มากับสายโทรศัพท์ ประมาณ 48 โวลต์) สีชมพูคือไม่มีสัญญาณโทรศัพท์ ตามรูปครับ

รูปภาพ


คอนฟิกรับสายเข้า

** ผมเทสกับ Elastix 2.0 **

วิธีการคอนฟิก Elastix ให้รับที่โทรเข้ามาทางการ์ด X100P ตามนี้ครับ
1. ล๊อกอินเข้าเว็บ Elastix แล้วคลิ๊กแท๊ป "PBX"

2. คลิ๊กที่ "ZAP Channel DIDs"

ช่อง Channel ใส่หมายเลขพอร์ต FXO ดูจากหน้า "Hardware Detector" ครับ เครื่องผมโชว์หมายเลข 1 ก็เลยใส่เลข 1
ช่อง Description ใส่อะไรก็ได้ให้สื่อความหมายว่าพอร์ตนี้เอาไว้ทำอะไร
ช่อง DID ใส่เบอร์โทรศัพท์ ใส่แบบไหนก็ได้ เช่นเบอร์โทรศัพท์ที่เอามาต่อกับพอร์ตนี้ เบอร์ภายในจากตู้สาขา หรือเบอร์มั่วๆ เบอร์นี้เอาไว้อ้างอิงในการทำงานของ Asterisk เอาเป็นว่าใส่อย่าให้ซ้ำกับเบอร์อื่นๆใน Elastix เป็นพอครับ

เสร็จแล้วกดปุ่ม "Apply Changes" และอาจจะกดปุ่ม "Apply Configuration Changes Here" ตามก็ได้ (หรือยังไม่ต้องกด รอให้คอนฟิกเมนูอื่นให้เสร็จก่อน)

รูปภาพ

รูปภาพ

สังเกตุบรรทัด context=from-zaptel ในรูปบนนะครับ เราต้องไปแก้คอนฟิกที่ๆหนึ่งจาก context=from-pstn ไปเห็น context=from-zaptel มันถึงจะโทรเข้าได้ ย้ำครับว่ามันถึงจะโทรเข้าได้

** ดูวิธีการแก้ไขค่า context ตอนท้ายๆของบทความนี้ **

3. คอนฟิก Extensions หรือ IVR หรือ Queues หรือ Ring Groups หรือ DISA หรือ...

คอนฟิกไว้เพื่อรับสายเวลามีคนโทรเข้ามาที่พอร์ต FXO หน่ะครับ ก็แล้วแต่ว่าเราต้องการใช้พอร์ต FXO ไว้ทำอะไร ผมเอาง่ายๆสุดคือเวลามีคนโทรเข้ามาแล้วก็ให้โยนมาที่เบอร์ Extension ของผม
อันนี้ผมคิดว่าคอนฟิกเป็นกันหมดแล้ว เลยไม่ขอยกตัวอย่าง

4. คอนฟิก Inbound Routes

คอนฟิกเพื่อโอนสายที่โทรเข้ามาไปยังจุดหมายปลายทางที่เราคอนฟิกไว้ในข้อ 3
คลิ๊กเมนู "Inbound Routes" ด้านซ้ายมือ แล้วคอนฟิก
Description ใส่รายละเอียดสั้นๆว่าเราเอาไว้ทำอะไร
DID Number ใส่เบอร์โทรศัพท์ ใส่ให้เหมือนกับเบอร์ที่ใส่ในช่อง DID ของเมนู "ZAP Channel DIDs" ในข้อ 2 เลยนะครับ ไม่งั้นจะหากันไม่เจอ
ส่วนตรง "Set Destination" ด้านล่างก็คลิ๊กเลือกว่าจะโยนไปที่ไหนเวลาที่มีใครโทรเข้ามา
เสร็จแล้วคลิ๊ก "Submit"

รูปภาพ

5. แก้ไขไฟล์ /etc/asterisk/dahdi-channels.conf
แก้ไข context=from-pstn เป็น context=from-zaptel

ของเดิม

; Span 1: WCFXO/0 "Generic Clone Board 1" (MASTER)
;;; line="1 WCFXO/0/0"
signalling=fxs_ks
callerid=asreceived
group=0
context=from-pstn
channel => 1
callerid=
group=
context=default

ให้แก้ไขบรรทัด context=from-pstn เป็น context=from-zaptel
ส่วนบรรทัด context=default และบรรทัดอื่นๆปล่อยไว้ตามเดิม เสร็จแล้วคลิ๊ก "Save"

6. กลับมาที่ PBX คลิ๊ก "Apply Configuration Changes Here"

7. เทสโทรเข้าได้เลยครับ เวอร์คแน่นอน

การ์ด X100P รองรับ CallerID นะครับ ซึ่งประโยชน์ของฟีเจอร์นี้ก็คือเวลาเราเอาเบอร์โทรศัพท์ที่รองรับ CallerID มาต่อ เบอร์คนโทรเข้าก็จะมาโชว์ในระบบด้วย เราก็จะรู้ว่าใครโทรเข้ามา สะดวกดีครับ

คอนฟิกให้โทรออก
สำหรับการคอนฟิกให้โทรออกได้ทางพอร์ต FXO เราต้องสร้าง Trunk และ Outbound Route (ในขณะที่การคอนฟิกเพื่อรับสายเข้าทางพอร์ต FXO เราไม่ต้องสร้าง Trunk)

1. สร้าง Trunks เลือกเป็นแบบ "ZAP Trunk"

รูปภาพ

Trunk Description ตั้งชื่อ
Maximum Channels ใส่ 1 เท่ากับจำนวนพอร์ตในการ์ด ซึ่งจะทำให้ Asterisk รู้ว่า Trunk นี้โทรออกได้ทีละสาย
Dial Rules ใส่ฟอร์แม็ตเบอร์โทรศัพท์ที่จะส่งออกทาง Trunk ซึ่ง X. หมายถึงจะส่งตัวเลขทุกหลักที่ได้รับ จะไม่แก้ไข
Zap Identifier (trunk name) ใส่หมายเลขพอร์ตของการ์ด ดูหมายเลขพอร์ตได้จากหน้าเว็บ "Hardware Detector"
ที่เหลือก็ปล่อยไว้ตามเดิมครับ แล้วกด "Submit Change"

2. สร้าง Outbound Routes
เมนู Outbound Routes

รูปภาพ

Route Name ตั้งชื่อ
Dial Patterns ตั้งเบอร์หลักแรกที่จะกด ควรตั้งไม่ให้ซ้ำกับที่มีอยู่แล้ว ไม่งั้นอันที่เราทำนี้อาจจะไม่เวอร์คก็ได้ (เพราะถ้าซ้ำ Elastix มันจะเลือกใช้อันแรกที่เจอ) ในตัวอย่างผมตั้งว่า ถ้ายูสเซอร์กด 0 ตามด้วยเลขอะไรก็ได้ ให้ส่งมาทางนี้
Trunk Sequence เลือก Trunk ที่จะใช้โทรออก เลือกได้หลาย Trunk ครับ เรียงลำดับตามที่เลือกไว้
ที่เหลือก็ปล่อยไว้ตามเดิม แล้วกด "Submit Changes"

3. กดปุ่ม "Apply Configuration Changes Here"
4. เทสโทรออก

มีเท่านี้ครับสำหรับการติดตั้ง คอนฟิก และใช้งานการ์ด Analog X100P

คำสั่งบน CentOS และ Asterisk
มาดูคำสั่งบน CentOS และ Asterisk กันครับ เอาไว้ดู Status และแก้ปัญหาการ์ด

โค้ด: เลือกทั้งหมด
# dmesg
dahdi: Telephony Interface Registered on major 196
dahdi: Version: 2.3.0.1
ACPI: PCI Interrupt 0000:02:02.0[A] -> GSI 19 (level, low) -> IRQ 209
wcfxo: DAA mode is 'FCC'
Found a Wildcard FXO: Generic Clone
dahdi_echocan_oslec: Registered echo canceler 'OSLEC'
dahdi: Registered tone zone 0 (United States / North America)


โค้ด: เลือกทั้งหมด
# lspci
02:02.0 Communication controller: Tiger Jet Network Inc. Tiger3XX Modem/ISDN interface

ถ้า CentOS ไม่เจอการ์ด ก็ต้องลองย้าย Slot PCI ดูครับ เผื่อ Slot จะมีปัญหา

โค้ด: เลือกทั้งหมด
# lsmod
dahdi_echocan_oslec     6912  1
echo                    9600  1 dahdi_echocan_oslec
wcfxo                  16160  1
dahdi                 197192  6 dahdi_echocan_oslec,wcfxo
crc_ccitt               6337  1 dahdi

คำสั่ง lsmod เช็คว่ามีการโหลด module อะไรบ้างเกี่ยวกับการ์ด

โค้ด: เลือกทั้งหมด
# service dahdi status
### Span  1: WCFXO/0 "Generic Clone Board 1" (MASTER)
  1 FXO        FXSKS       (In use) (SWEC: OSLEC) (battery)

เช็คสถานะของ Dahdi มองเห็นการ์ดปกติ

โค้ด: เลือกทั้งหมด
# dahdi_hardware
pci:0000:02:02.0     wcfxo+       e159:0001 Wildcard X101P clone


โค้ด: เลือกทั้งหมด
# dahdi_scan
[1]
active=yes
alarms=OK
description=Generic Clone Board 1
name=WCFXO/0
manufacturer=Digium
devicetype=Generic Clone
location=PCI Bus 02 Slot 03
basechan=1
totchans=1
irq=209
type=analog
port=1,FXO

คำสั่ง dahdi_scan นี้นะครับ ระบบจะบอกคอนฟิกที่พอร์ต 1 ใช้ในขณะนี้ ตัวเลขในเครื่องหมาย [] คือหมายเลขพอร์ต โดยดึงคอนฟิกมาจากไฟล์หลายๆไฟล์มาผสมกัน

โค้ด: เลือกทั้งหมด
# dahdi_test
Opened pseudo dahdi interface, measuring accuracy...
99.992% 100.000% 99.994% 99.994% 99.994% 99.993% 99.994% 99.994%
99.994% 99.995% 99.994% 99.994% 99.994% 99.994% 99.994% 99.995%
99.994% 99.994% 99.993% 99.994% 99.994% 99.994% 99.991% 99.997%
99.994% 99.995% 99.993% 99.994% 99.994% 99.994% 99.994% 99.994%
99.993% 99.994% 99.994% 99.994% 99.993% 99.995% 99.994% 99.994%
99.994% 99.994% 99.994% 99.994% 99.994% 99.994% 99.993% 99.993%
99.995% 99.994% 99.994% 99.994% 99.994% 99.994% 99.994% 99.993%
99.995% 99.994% 99.994% 99.994% 99.994% 99.994% 99.994% 99.994%
99.994% 99.994% 99.994% 99.996% 99.994% 99.994% 99.994% 99.994%
99.993% 99.995% 99.994% 99.994% 99.994% 99.994%
--- Results after 78 passes ---
Best: 100.000 -- Worst: 99.991 -- Average: 99.993949, Difference: 100.006051


โค้ด: เลือกทั้งหมด
# dahdi_speed
Count: 985399


คำสั่งใน Asterisk Console
ลองเข้ามาดูคำสั่งใน Asterisk Console ครับ

โค้ด: เลือกทั้งหมด
elastix-a*CLI> dahdi restart
Destroying channels and reloading DAHDI configuration.
  == Unregistered channel -2
  == Unregistered channel 1
  == Parsing '/etc/asterisk/chan_dahdi.conf':   == Found
  == Parsing '/etc/asterisk/dahdi-channels.conf':   == Found
  == Parsing '/etc/asterisk/chan_dahdi_additional.conf':   == Found
  == Parsing '/etc/asterisk/users.conf':   == Found
    -- Reconfigured channel 1, FXS Kewlstart signalling
    -- Automatically generated pseudo channel


โค้ด: เลือกทั้งหมด
elastix-a*CLI> dahdi show channels
   Chan Extension  Context         Language   MOH Interpret        Blocked    State     
pseudo            default                    default                         In Service
      1            from-zaptel                default                         In Service


โค้ด: เลือกทั้งหมด
elastix-a*CLI> dahdi show channel 1
Channel: 1
File Descriptor: 20
Span: 1
Extension:
Dialing: no
Context: from-zaptel
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: no
TDD: no
Relax DTMF: no
Dialing/CallwaitCAS: 0/0
Default law: ulaw
Fax Handled: no
Pulse phone: no
DND: no
Echo Cancellation:
        128 taps
        (unless TDM bridged) currently OFF
Wait for dialtone: 0ms
Actual Confinfo: Num/0, Mode/0x0000
Actual Confmute: No
Hookstate (FXS only): Onhook

บรรทัด Span หมายถึงหมายเลขการ์ด การ์ดนี้เป็นการ์ดที่ 1
บรรทัด Channel หมายถึงหมายเลขพอร์ต (บนการ์ด) การ์ดหนึ่งๆอาจจะมีหลายพอร์ต แต่สำหรับการ์ด X100P การ์ดนี้มีพอร์ตเดียวครับ

โค้ด: เลือกทั้งหมด
elastix-a*CLI> dahdi show status
Description                              Alarms  IRQ    bpviol CRC4   Fra Codi Options  LBO
Generic Clone Board 1                    OK      0      0      0      CAS Unk           0 db (CSU)/0-133 feet (DSX-1)


โค้ด: เลือกทั้งหมด
elastix-a*CLI> dahdi show version
DAHDI Version: 2.3.0.1 Echo Canceller: OSLEC


โค้ด: เลือกทั้งหมด
elastix-a*CLI> dahdi show cadences
r1: 125,125,2000,4000
r2: 250,250,500,1000,250,250,500,4000
r3: 125,125,125,125,125,4000
r4: 1000,500,2500,5000


Status ตอนมีการโทร

โค้ด: เลือกทั้งหมด
elastix-a*CLI> dahdi show channel 1
Channel: 1
File Descriptor: 20
Span: 1
Extension:
Dialing: no
Context: from-zaptel
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: no
TDD: no
Relax DTMF: no
Dialing/CallwaitCAS: 0/0
Default law: ulaw
Fax Handled: no
Pulse phone: no
DND: no
Echo Cancellation:
        128 taps
        (unless TDM bridged) currently ON
Wait for dialtone: 0ms
Actual Confinfo: Num/0, Mode/0x0000
Actual Confmute: No
Hookstate (FXS only): Offhook


ตัดสายที่กำลังคุยกัน หรือสายที่ค้าง

โค้ด: เลือกทั้งหมด
elastix-a*CLI> dahdi destroy channel 1
Disconnected from Asterisk server


เทคนิคที่จะช่วยแก้ปัญหาการใช้งานการ์ด X100P และการ์ด FXO ทั่วไป
ต่อไปนี้เป็นปัญหาที่เจอกันบ่อยๆในการใช้งานพอร์ต FXO ครับ
1. สายค้าง
วางสายแล้วพอร์ต FXO ไม่ยอมวางสาย ทำให้โทรเข้าไม่ได้อีก จนกว่าจะสั่ง disconnect (คำสั่งบน Asterisk Console คือ dahdi destroy channel X โดยที่ X คือหมายเลขพอร์ตที่ค้าง) ปัญหานี้เกิดจากพอร์ต FXO ดีเท็คสัญญาณ Disconnect Tone หรือ Busy Tone ไม่ได้ ซึ่งค่า Default ของพอร์ต FXO ก็ไม่ได้ให้มันดีเท็คสัญญาณนี้ด้วย
วิธีการแก้ไขนะครับ
1. เปิดไฟล์ /etc/asterisk/chan_dahdi.conf
ไฟล์นี้แก้ไขได้เลยนะครับ ไม่ต้องเป็นห่วงว่า Elastix จะเขียนทับ
2. เอาเครื่องหมาย ; หน้าบรรทัด busydetect และ busycount ออก
;Uncomment these lines if you have problems with the disconection of your analog lines
busydetect=yes
busycount=3
3. บันทึกไฟล์ และรีโหลด
elastix-a*CLI> dahdi restart
4. เช็ค
elastix-a*CLI> dahdi show channel 1
Channel: 1
Busy Detection: yes
Busy Count: 3
Busy Pattern: 0,0
บรรทัด Busy Pattern นี้นะครับ เอาไว้ให้เราตั้งค่า Tone On/Off ของสัญญาณ Busy Tone/Disconnect Tone ได้เผื่อว่าเบอร์โทรศัพท์ที่เราเอามาต่อมันจะมีสัญญาณ Busy ผิดแปลกไปจากมาตรฐาน ซึ่งค่ามาตรฐานก็ใช้ดีฟอลท์ของประเทศ us ครับ โดยข้อมูลสัญญาณ Tone ต่างๆของ us รวมทั้งประเทศต่างๆ อยู่ในไฟล์ /etc/asterisk/indications.conf ครับ ขอบอกว่าประเทศไทยของเราก็มีกะเขาด้วยนะครับ ดูที่ [th]

ถ้าแก้ไขพารามิเตอร์ busydetect แล้วยังไม่หาย ก็อาจจะเป็นไปได้ว่า สัญญาณ Busy Tone ที่ส่งมาทางสายโทรศัพท์นั้นนะครับ มันไม่ได้อยู่ในรูปแบบที่ Asterisk รับรู้ อย่างนี้ก็ต้องเพิ่มบรรทัดนี้เข้าไปครับ

busypattern=500,500

ซึ่งหมายความว่า ถ้า Asterisk พบว่ามีสัญญาณ Tone ที่มีรูปแบบ On นาน 500 ms (หรือ 0.5 sec) และ Off นาน 500 ms และเกิดต่อเนื่องในช่วง busycount มันจะคิดว่าเป็น Busy tone แล้วก็จะตัดสาย

2. กดปุ่ม "Detect New Hardward" ในหน้า "Hardware Detector" แล้ว โทรเข้าพอร์ต FXO ไม่ได้
สาเหตุคือ เมื่อเรากดปุ่ม Detect New Hardware มันจะแก้ค่าบรรทัด context= จาก context=from-zaptel (ซึ่งใช้งานได้) ไปเป็น context=from-pstn (ตามค่าดีฟอล์ ซึ่งใช้งานไม่ได้)
ให้แก้ไขไฟล์ /etc/asterisk/dahdi-channels.conf

; Span 1: WCFXO/0 "Generic Clone Board 1" (MASTER)
;;; line="1 WCFXO/0/0 FXSKS (In use) (SWEC: OSLEC) (EC: OSLEC)"
signalling=fxs_ks
callerid=asreceived
group=0
context=from-zaptel

เซฟไฟล์แล้วรีสตาร์ท Dahdi

elastix-a*CLI> dahdi restart

หรือตอนที่เกิดปัญหา เข้า Asterisk Console แล้วพิมพ์คำสั่ง dahdi show channel 1 ก็จะเห็นครับว่า Context มันไม่ใช่ from-zaptel

elastix-a*CLI> dahdi show channel 1
Channel: 1
Context: from-pstn

ถ้าเวอร์ค บรรทัด Context จะเป็นแบบนี้

elastix-a*CLI> dahdi show channel 1
Channel: 1
File Descriptor: 20
Span: 1
Extension:
Dialing: no
Context: from-zaptel

วิธีแก้ไขให้กดปุ่ม "Detect New Hardware" ได้โดยไม่ทำให้คอนฟิกเปลี่ยน
เปิดไฟล์ /etc/dahdi/genconf_parameters
เพิ่มบรรทัดนี้เข้าไปครับ จะเพิ่มไว้เป็นบรรทัดแรกหรือบรรทัดสุดท้ายก็ได้ครับ

context_lines from-zaptel

บันทึกไฟล์ แล้วลองกด "Detect New Hardware" เล่นดูเลยครับ อ่อ แล้วถ้ากำลังมีคนใช้สายอยู่ ห้ามกดปุ่มนี้เล่นนะครับ เพราะมันจะชัทดาวน์ Asterisk แล้วสั่งสตาร์ทใหม่ สายที่โทรอยู่จะถูกตัดทิ้งหมดเลย

3. มี Echo
คุยๆไปก็ได้ยินเสียงตัวเองสะท้อนกลับมา อาจจะได้ยินฝั่งเราหรือฝั่งปลายทางก็ได้ ลองเช็คคอนฟิกพอร์ตดูนะครับว่ามีเปิดใช้ Echo Canceller หรือยัง

โค้ด: เลือกทั้งหมด
# service dahdi status

### Span  1: WCFXO/0 "Generic Clone Board 1" (MASTER)
  1 FXO        FXSKS       (In use) (battery)


ผลลัพท์ไม่โชว์ Echo Canceller ซึ่งอาจจะเป็นสาเหตุทำให้ได้ยินเสียงตัวเองสะท้อนกลับมา ให้เลือกใช้งาน Echo Canceller สักแบบครับ ผมแนะนำ OSLEC ซึ่งมีติดตั้งมาพร้อมกับ Elastix อยู่แล้ว วิธีการเปิด Echo Canceller ใช้งาน
วิธีการทำก็ไม่ยากครับ เข้าหน้าเว็บ "Hardware Detector" คลิ๊กที่ "Configuration of Span" ที่ช่อง Drop-down list เลือก OSLEC คลิ๊ก "Save" และ "Close"

รูปภาพ

รูปภาพ

ตรวจสอบอีกรอบก็จะเห็นว่ามี Echo Canceller ใช้งานแล้ว
โค้ด: เลือกทั้งหมด
# service dahdi status
### Span  1: WCFXO/0 "Generic Clone Board 1" (MASTER)
  1 FXO        FXSKS       (In use) (SWEC: OSLEC) (battery)


SWEC ย่อมาจาก Soft Ware Echo Canceller


เพิ่มเติมเกี่ยวกับ Port Status
มาดูคำสั่ง service dahdi status กันอีกรอบครับ มีคำว่า RED แสดงว่าไม่ได้ต่อสายโทรศัพท์ หรือสายโทรศัพท์ไม่มีสัญญาณ และถ้าเป็น battery หมายถึงดีเท็คสัญญาณโทรศัพท์ได้

โค้ด: เลือกทั้งหมด
# service dahdi status

### Span  1: WCFXO/0 "Generic Clone Board 1" (MASTER) RED
  1 FXO        FXSKS       (In use) (SWEC: OSLEC)  RED

### Span  1: WCFXO/0 "Generic Clone Board 1" (MASTER)
  1 FXO        FXSKS       (In use) (SWEC: OSLEC) (battery)


ส่วนคำว่า battery นั้นแสดงว่าพอร์ตดีเท็คสัญญาณจากสายโทรศัพท์ เป็นสัญญาณไฟกระแสตรง ถ้าไม่ได้ต่อสายโทรศัพท์ไว้จะมีคำว่า RED แทนครับ

เป็นอันว่าการติดตั้งและคอนฟิกใช้งานรวมทั้งการแก้ปัญหาการใช้งานการ์ด X100P ก็สำเร็จครับ ผมหวังว่าบทความนี้คงจะช่วยแก้ปัญหาให้แก่บางท่านได้บ้าง ปัญหามันไม่ได้มีเพียงเท่านี้นะครับ ผมว่ายังมีอีกเยอะที่ยังไม่เจอ ยังไงถ้าเจอแล้วรบกวนโพสต์บอกด้วยนะครับ จะได้ช่วยหาทางแก้และจะได้เป็นประโยชน์ต่อท่านอื่นๆ

บทความที่เกี่ยวข้อง
Elastix
วิธีการติดตั้ง Elastix 2.0
OSLEC - Line Echo Canceller สำหรับ Asterisk
ติดตั้งและใช้งานการ์ด E1 TE110P
เทคนิคการแก้ปัญหา DTMF บนการ์ด Asterisk
เทคนิคการรับส่ง Fax ด้วย Elastix ตอนที่ 1 - ส่ง Fax จาก PSTN -> Elastix -> Email
เทคนิคการรับส่ง Fax ด้วย Elastix ตอนที่ 2 - ส่ง Fax ทางเว็บ
เทคนิคการรับส่ง Fax ด้วย Elastix ตอนที่ 3 - โปรแกรม Winprint HylaFAX
เทคนิคการติดตั้งการ์ด X100P
เทคนิคการติดตั้งการ์ด TDM410P บน Elastix
เทคนิคการติดตั้งการ์ด TDM400P
เทคนิคการคอนฟิกพอร์ต FXO ของการ์ด TDM410P
ขอบคุณสำหรับทุกคำถามและทุกคำตอบครับ
nuiz
Diamond Member
 
โพสต์: 1675
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33

Re: เทคนิคการติดตั้งและใช้งาน Asterisk Card - X100P

โพสต์โดย smuchcha » 27 ก.ค. 2011 00:59

สอบถามเรื่องการตั้ง Group Trunk ครับ

ถ้าผมมี X100P จำนวน 2 ใบและมีเบอร์โทรศัพท์บ้านสองเบอร์เอาไว้โทรออกและรับสายครับทั้งสองเบอร์
ผมต้องการตั้งเวลาโทรออกโดยกำหนดเป็น Group Trunk แทนการกำหนด Channel ครับ

ผมต้องไปแก้ที่
1.ไฟล์ /etc/asterisk/dahdi-channels.conf ผมต้องแก้ไขอะไรบ้างครับ
ขอเดิมใน file มีค่าดังนี้
; Span 1: WCFXO/0 "Wildcard X100P Board 1" (MASTER) RED
;;; line="1 WCFXO/0/0 FXSKS (EC: OSLEC)"
signalling=fxs_ks
callerid=asreceived
group=0 (อันนี้หมายถึงว่าอยุ๋ใน Group 0 หรือเปล่าครับ)
;context=from-pstn
context=from-zaptel
channel => 1
callerid=
group= (อันนี้หมายถึงอะไรครับ ให้ผมใส่ เลข Group เพิ่มเหรอครับ)
context=default


; Span 2: WCFXO/1 "Wildcard X100P Board 2"
;;; line="2 WCFXO/1/0 FXSKS (EC: OSLEC)"
signalling=fxs_ks
callerid=asreceived
group=0 (อันนี้หมายถึงว่าอยุ๋ใน Group 0 หรือเปล่าครับ)
;context=from-pstn
context=from-zaptel
channel => 2
callerid=
group= (อันนี้หมายถึงอะไรครับ ให้ผมใส่ เลข Group เพิ่มเหรอครับ)
context=default


2. การกำหนด "PBX" -> "Trunks" -> "Add ZAP Trunk (DAHDI compatible mode)"
ช่อง Zap Identifer (trunk name) ผมต้องใส่ค่าเป็นอะไรครับ ผมเห็นตัวอย่างมีทั้ง G0 / g0 / r0 / R0 ด้วยนะครับ
ผมต้องใส่ค่าอย่างไรครับ


ท่านผู้รู้ช่วยตอบหน่อยครับ
smuchcha
Silver Member
 
โพสต์: 43
ลงทะเบียนเมื่อ: 27 ส.ค. 2010 10:36

Re: เทคนิคการติดตั้งและใช้งาน Asterisk Card - X100P

โพสต์โดย nuiz » 27 ก.ค. 2011 09:28

ตอบข้อ 2 นะครับ ข้อแรกก็ยังงงๆอยู่ว่าจะตั้งหมายเลข group จะใส่ตรง group บรรทัดบนหรือบรรทัดล่าง ว่าจะเทสอยู่ แต่ปกติก็จะใส่บรรทัดบนหน่ะครับ อยากให้มันอยู่กรุ๊ป 0 ก็ใส่ 0 อยากให้อยู่กรุ๊ป 8 ก็ใส่ 8

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

ส่วน R และ r หมายถึง round robbin เลือกพอร์ตแบบเรียงลำดับไปเรื่อยๆ 1, 2, 3, ... ทุกพอร์ตจะถูกใช้เท่าๆกัน ไม่หนักไปที่พอร์ตแรกๆหรือพอร์ตท้ายๆเหมือนกรณีแรก วนไปเรื่อยๆ และผมก็จำไม่ได้อีกเช่นกันว่า R นี่มันเริ่มจากพอร์ตแรกหรือพอร์ตสุดท้าย ฝากลองด้วยครับ

ส่วนตัวเลขด้านหลัง เป็นหมายเลขกรุ๊ป
ขอบคุณสำหรับทุกคำถามและทุกคำตอบครับ
nuiz
Diamond Member
 
โพสต์: 1675
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33

Re: เทคนิคการติดตั้งและใช้งาน Asterisk Card - X100P

โพสต์โดย smuchcha » 27 ก.ค. 2011 21:16

หลังจากได้ทำการทดสอบได้สามารถโทรออกเป็น trunk group แทน channel ได้แล้วคัรบ
มีการกำหนดค่าเป็นสองกลุ่มคือ
กลุ่มที่ 1 คือ channel ที่ 1 - 2
กลุ่มที่ 2 คือ channel ที่ 3 - 6

[root@elastix ~]# cat /etc/asterisk/dahdi-channels.conf
; Autogenerated by /usr/sbin/dahdi_genconf on Sat Jun 25 07:13:35 2011 -- do not hand edit
; Dahdi Channels Configurations (chan_dahdi.conf)
;
; This is not intended to be a complete chan_dahdi.conf. Rather, it is intended
; to be #include-d by /etc/chan_dahdi.conf that will include the global settings
;

; Span 1: WCFXO/0 "Wildcard X100P Board 1" (MASTER) RED
;;; line="1 WCFXO/0/0 FXSKS (EC: OSLEC)"
signalling=fxs_ks
callerid=asreceived
group=0,1
;context=from-pstn
context=from-zaptel
channel => 1
callerid=
group=
context=default


; Span 2: WCFXO/1 "Wildcard X100P Board 2"
;;; line="2 WCFXO/1/0 FXSKS (EC: OSLEC)"
signalling=fxs_ks
callerid=asreceived
group=0,1
;context=from-pstn
context=from-zaptel
channel => 2
callerid=
group=
context=default


; Span 3: WCTDM/4 "Wildcard S400P Prototype Board 5"
;;; line="3 WCTDM/4/0 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0,2
;context=from-pstn
context=from-zaptel
channel => 3
callerid=
group=
context=default

;;; line="4 WCTDM/4/1 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0,2
;context=from-pstn
context=from-zaptel
channel => 4
callerid=
group=
context=default

;;; line="5 WCTDM/4/2 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0,2
;context=from-pstn
context=from-zaptel
channel => 5
callerid=
group=
context=default

;;; line="6 WCTDM/4/3 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0,2
;context=from-pstn
context=from-zaptel
channel => 6
callerid=
group=
context=default


ต่อไปก็กำหนดค่าที่ หน้าเว็บ
PBX-->PBX config--> Trunk
จากนั้นกด Add Zap Trunk (DAHDI compatibility mode)
ตัวอย่างการกำหนดค่า
Outbound Caller ID: "0293xxxxx"<0293xxxxx>
Maximum Channels : 2 (ใส่จำนวน channel ที่อยู่ใน group)
Dial Rules: X.
Zap Identifier (trunk name) : g1 (สำหรับ trunk ของ group 1)


ทดสอบสามารถโทรออกได้ครับ
เพื่อเติมเรื่องตัวอักษร g / G / r /R
วิธีระบุหมายเลข Group เราต้องใส่ตัวอักษรนำหน้าหมายเลข Group เช่น G0, g0, R0 หรือไม่ก็ r0 ซึ่งจะใช้ G หรือ g หรือ R หรือ r นั้นก็อยู่ที่ว่าจะให้ Asterisk เลือก Channel ใน Group ยังไง ตามนี้ครับ
G เลือก channel มากที่สุดก่อน
g เลือก channel น้่อยที่สุดก่อน
R เลือกแบบ round-robin โดยเริ่มจาก channel ที่มากที่สุดก่อน
r เลือกแบบ round-robin โดยเริ่มจาก channel ที่น้อยที่สุดก่อน
smuchcha
Silver Member
 
โพสต์: 43
ลงทะเบียนเมื่อ: 27 ส.ค. 2010 10:36

Re: เทคนิคการติดตั้งและใช้งาน Asterisk Card - X100P

โพสต์โดย pipat123 » 23 ส.ค. 2011 16:37

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

== Using SIP RTP CoS mark 5
-- Executing [0158@from-internal:1] Macro("SIP/101-00000017", "user-callerid,SKIPTTL,") in new stack
-- Executing [s@macro-user-callerid:1] Set("SIP/101-00000017", "AMPUSER=101") in new stack
-- Executing [s@macro-user-callerid:2] GotoIf("SIP/101-00000017", "0?report") in new stack
-- Executing [s@macro-user-callerid:3] ExecIf("SIP/101-00000017", "1?Set(REALCALLERIDNUM=101)") in new stack
-- Executing [s@macro-user-callerid:4] Set("SIP/101-00000017", "AMPUSER=101") in new stack
-- Executing [s@macro-user-callerid:5] Set("SIP/101-00000017", "AMPUSERCIDNAME=Top") in new stack
-- Executing [s@macro-user-callerid:6] GotoIf("SIP/101-00000017", "0?report") in new stack
-- Executing [s@macro-user-callerid:7] Set("SIP/101-00000017", "AMPUSERCID=101") in new stack
-- Executing [s@macro-user-callerid:8] Set("SIP/101-00000017", "CALLERID(all)="Top" <101>") in new stack
-- Executing [s@macro-user-callerid:9] ExecIf("SIP/101-00000017", "0?Set(CHANNEL(language)=)") in new stack
-- Executing [s@macro-user-callerid:10] GotoIf("SIP/101-00000017", "1?continue") in new stack
-- Goto (macro-user-callerid,s,19)
-- Executing [s@macro-user-callerid:19] NoOp("SIP/101-00000017", "Using CallerID "Top" <101>") in new stack
-- Executing [0158@from-internal:2] Set("SIP/101-00000017", "_NODEST=") in new stack
-- Executing [0158@from-internal:3] Macro("SIP/101-00000017", "record-enable,101,OUT,") in new stack
-- Executing [s@macro-record-enable:1] GotoIf("SIP/101-00000017", "1?check") in new stack
-- Goto (macro-record-enable,s,4)
-- Executing [s@macro-record-enable:4] ExecIf("SIP/101-00000017", "0?MacroExit()") in new stack
-- Executing [s@macro-record-enable:5] GotoIf("SIP/101-00000017", "0?Group:OUT") in new stack
-- Goto (macro-record-enable,s,15)
-- Executing [s@macro-record-enable:15] GotoIf("SIP/101-00000017", "0?IN") in new stack
-- Executing [s@macro-record-enable:16] ExecIf("SIP/101-00000017", "1?MacroExit()") in new stack
-- Executing [0158@from-internal:4] Macro("SIP/101-00000017", "dialout-trunk,2,0158,,") in new stack
-- Executing [s@macro-dialout-trunk:1] Set("SIP/101-00000017", "DIAL_TRUNK=2") in new stack
-- Executing [s@macro-dialout-trunk:2] GosubIf("SIP/101-00000017", "0?sub-pincheck,s,1") in new stack
-- Executing [s@macro-dialout-trunk:3] GotoIf("SIP/101-00000017", "0?disabletrunk,1") in new stack
-- Executing [s@macro-dialout-trunk:4] Set("SIP/101-00000017", "DIAL_NUMBER=0158") in new stack
-- Executing [s@macro-dialout-trunk:5] Set("SIP/101-00000017", "DIAL_TRUNK_OPTIONS=tr") in new stack
-- Executing [s@macro-dialout-trunk:6] Set("SIP/101-00000017", "OUTBOUND_GROUP=OUT_2") in new stack
-- Executing [s@macro-dialout-trunk:7] GotoIf("SIP/101-00000017", "0?nomax") in new stack
-- Executing [s@macro-dialout-trunk:8] GotoIf("SIP/101-00000017", "0?chanfull") in new stack
-- Executing [s@macro-dialout-trunk:9] GotoIf("SIP/101-00000017", "0?skipoutcid") in new stack
-- Executing [s@macro-dialout-trunk:10] Set("SIP/101-00000017", "DIAL_TRUNK_OPTIONS=") in new stack
-- Executing [s@macro-dialout-trunk:11] Macro("SIP/101-00000017", "outbound-callerid,2") in new stack
-- Executing [s@macro-outbound-callerid:1] ExecIf("SIP/101-00000017", "0?Set(CALLERPRES()=)") in new stack
-- Executing [s@macro-outbound-callerid:2] ExecIf("SIP/101-00000017", "0?Set(REALCALLERIDNUM=101)") in new stack
-- Executing [s@macro-outbound-callerid:3] GotoIf("SIP/101-00000017", "1?normcid") in new stack
-- Goto (macro-outbound-callerid,s,6)
-- Executing [s@macro-outbound-callerid:6] Set("SIP/101-00000017", "USEROUTCID="Top"<101>") in new stack
-- Executing [s@macro-outbound-callerid:7] Set("SIP/101-00000017", "EMERGENCYCID=") in new stack
-- Executing [s@macro-outbound-callerid:8] Set("SIP/101-00000017", "TRUNKOUTCID=122") in new stack
-- Executing [s@macro-outbound-callerid:9] GotoIf("SIP/101-00000017", "1?trunkcid") in new stack
-- Goto (macro-outbound-callerid,s,12)
-- Executing [s@macro-outbound-callerid:12] ExecIf("SIP/101-00000017", "1?Set(CALLERID(all)=122)") in new stack
-- Executing [s@macro-outbound-callerid:13] ExecIf("SIP/101-00000017", "1?Set(CALLERID(all)=Top<101>)") in new stack
-- Executing [s@macro-outbound-callerid:14] ExecIf("SIP/101-00000017", "0?Set(CALLERID(all)=)") in new stack
-- Executing [s@macro-outbound-callerid:15] ExecIf("SIP/101-00000017", "0?Set(CALLERPRES()=prohib_passed_screen)") in new stack
-- Executing [s@macro-dialout-trunk:12] ExecIf("SIP/101-00000017", "0?AGI(fixlocalprefix)") in new stack
-- Executing [s@macro-dialout-trunk:13] Set("SIP/101-00000017", "OUTNUM=0158") in new stack
-- Executing [s@macro-dialout-trunk:14] Set("SIP/101-00000017", "custom=DAHDI/1") in new stack
-- Executing [s@macro-dialout-trunk:15] ExecIf("SIP/101-00000017", "0?Set(DIAL_TRUNK_OPTIONS=M(setmusic^))") in new stack
-- Executing [s@macro-dialout-trunk:16] Macro("SIP/101-00000017", "dialout-trunk-predial-hook,") in new stack
-- Executing [s@macro-dialout-trunk-predial-hook:1] MacroExit("SIP/101-00000017", "") in new stack
-- Executing [s@macro-dialout-trunk:17] GotoIf("SIP/101-00000017", "0?bypass,1") in new stack
-- Executing [s@macro-dialout-trunk:18] GotoIf("SIP/101-00000017", "0?customtrunk") in new stack
-- Executing [s@macro-dialout-trunk:19] Dial("SIP/101-00000017", "DAHDI/1/0158,300,") in new stack
-- Called 1/0158
-- Hungup 'DAHDI/1-1'
== Spawn extension (macro-dialout-trunk, s, 19) exited non-zero on 'SIP/101-00000017' in macro 'dialout-trunk'
== Spawn extension (from-internal, 0158, 4) exited non-zero on 'SIP/101-00000017'
-- Executing [h@from-internal:1] Macro("SIP/101-00000017", "hangupcall") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("SIP/101-00000017", "1?noautomon") in new stack
-- Goto (macro-hangupcall,s,3)
-- Executing [s@macro-hangupcall:3] NoOp("SIP/101-00000017", "TOUCH_MONITOR_OUTPUT=") in new stack
-- Executing [s@macro-hangupcall:4] GotoIf("SIP/101-00000017", "1?noautomon2") in new stack
-- Goto (macro-hangupcall,s,6)
-- Executing [s@macro-hangupcall:6] NoOp("SIP/101-00000017", "MONITOR_FILENAME=") in new stack
-- Executing [s@macro-hangupcall:7] GotoIf("SIP/101-00000017", "1?skiprg") in new stack
-- Goto (macro-hangupcall,s,10)
-- Executing [s@macro-hangupcall:10] GotoIf("SIP/101-00000017", "1?skipblkvm") in new stack
-- Goto (macro-hangupcall,s,13)
-- Executing [s@macro-hangupcall:13] GotoIf("SIP/101-00000017", "1?theend") in new stack
-- Goto (macro-hangupcall,s,15)
-- Executing [s@macro-hangupcall:15] Hangup("SIP/101-00000017", "") in new stack
หรือว่าผมตั้งค่าผิดตรงไหน
ยังไงรบกวนดูให้ทีนะคับ
pipat123
Bronz Member
 
โพสต์: 8
ลงทะเบียนเมื่อ: 27 ก.ค. 2011 09:59

Re: เทคนิคการติดตั้งและใช้งาน Asterisk Card - X100P

โพสต์โดย nuiz » 23 ส.ค. 2011 21:23

เห็นมีโทรออกไปเบอร์ 0158 หน่ะครับ ตั้งใจจะส่ง 0 ออกไปด้วยหรือเปล่าครับ
ขอบคุณสำหรับทุกคำถามและทุกคำตอบครับ
nuiz
Diamond Member
 
โพสต์: 1675
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33

Re: เทคนิคการติดตั้งและใช้งาน Asterisk Card - X100P

โพสต์โดย pipat123 » 26 ส.ค. 2011 11:47

พี่ nuiz
ตอนนี้ผมใช้เบอร์ภายในเลข 122 เป็น เบอร์ภายนอก ของผมนะคับโดยใช้การ์ด X100P
อยากให้สามารถโทรออกและโทรเข้าได้ ผมลองคอนฟิกตามที่พี่ได้แนะนำแล้วคับ
แต่ไม่สามารถโทรออกและโทรเข้าได้ ไม่ทราบว่าเราต้องไปคอนฟิกส่วนอื่นอีกมั้ยคับ
ขอคำแนะนำด้วยคับ
pipat123
Bronz Member
 
โพสต์: 8
ลงทะเบียนเมื่อ: 27 ก.ค. 2011 09:59

Re: เทคนิคการติดตั้งและใช้งาน Asterisk Card - X100P

โพสต์โดย pipat123 » 26 ส.ค. 2011 12:07

pipat123 เขียน:พี่ nuiz
ตอนนี้ผมใช้เบอร์ภายในเลข 122 เป็น เบอร์ภายนอก ของผมนะคับโดยใช้การ์ด X100P
อยากให้สามารถโทรออกและโทรเข้าได้ ผมลองคอนฟิกตามที่พี่ได้แนะนำแล้วคับ
แต่ไม่สามารถโทรออกและโทรเข้าได้ ไม่ทราบว่าเราต้องไปคอนฟิกส่วนอื่นอีกมั้ยคับ
ขอคำแนะนำด้วยคับ


ลองทำตามที่พี่แนะนำก็ขึ้นมาแบบนี้คับ
== Using SIP RTP CoS mark 5
-- Executing [0158@from-internal:1] Macro("SIP/101-00000023", "user-callerid,SKIPTTL,") in new stack
-- Executing [s@macro-user-callerid:1] Set("SIP/101-00000023", "AMPUSER=101") in new stack
-- Executing [s@macro-user-callerid:2] GotoIf("SIP/101-00000023", "0?report") in new stack
-- Executing [s@macro-user-callerid:3] ExecIf("SIP/101-00000023", "1?Set(REALCALLERIDNUM=101)") in new stack
-- Executing [s@macro-user-callerid:4] Set("SIP/101-00000023", "AMPUSER=101") in new stack
-- Executing [s@macro-user-callerid:5] Set("SIP/101-00000023", "AMPUSERCIDNAME=Top") in new stack
-- Executing [s@macro-user-callerid:6] GotoIf("SIP/101-00000023", "0?report") in new stack
-- Executing [s@macro-user-callerid:7] Set("SIP/101-00000023", "AMPUSERCID=101") in new stack
-- Executing [s@macro-user-callerid:8] Set("SIP/101-00000023", "CALLERID(all)="Top" <101>") in new stack
-- Executing [s@macro-user-callerid:9] ExecIf("SIP/101-00000023", "0?Set(CHANNEL(language)=)") in new stack
-- Executing [s@macro-user-callerid:10] GotoIf("SIP/101-00000023", "1?continue") in new stack
-- Goto (macro-user-callerid,s,19)
-- Executing [s@macro-user-callerid:19] NoOp("SIP/101-00000023", "Using CallerID "Top" <101>") in new stack
-- Executing [0158@from-internal:2] Set("SIP/101-00000023", "_NODEST=") in new stack
-- Executing [0158@from-internal:3] Macro("SIP/101-00000023", "record-enable,101,OUT,") in new stack
-- Executing [s@macro-record-enable:1] GotoIf("SIP/101-00000023", "1?check") in new stack
-- Goto (macro-record-enable,s,4)
-- Executing [s@macro-record-enable:4] ExecIf("SIP/101-00000023", "0?MacroExit()") in new stack
-- Executing [s@macro-record-enable:5] GotoIf("SIP/101-00000023", "0?Group:OUT") in new stack
-- Goto (macro-record-enable,s,15)
-- Executing [s@macro-record-enable:15] GotoIf("SIP/101-00000023", "0?IN") in new stack
-- Executing [s@macro-record-enable:16] ExecIf("SIP/101-00000023", "1?MacroExit()") in new stack
-- Executing [0158@from-internal:4] Macro("SIP/101-00000023", "dialout-trunk,2,0158,,") in new stack
-- Executing [s@macro-dialout-trunk:1] Set("SIP/101-00000023", "DIAL_TRUNK=2") in new stack
-- Executing [s@macro-dialout-trunk:2] GosubIf("SIP/101-00000023", "0?sub-pincheck,s,1") in new stack
-- Executing [s@macro-dialout-trunk:3] GotoIf("SIP/101-00000023", "0?disabletrunk,1") in new stack
-- Executing [s@macro-dialout-trunk:4] Set("SIP/101-00000023", "DIAL_NUMBER=0158") in new stack
-- Executing [s@macro-dialout-trunk:5] Set("SIP/101-00000023", "DIAL_TRUNK_OPTIONS=tr") in new stack
-- Executing [s@macro-dialout-trunk:6] Set("SIP/101-00000023", "OUTBOUND_GROUP=OUT_2") in new stack
-- Executing [s@macro-dialout-trunk:7] GotoIf("SIP/101-00000023", "0?nomax") in new stack
-- Executing [s@macro-dialout-trunk:8] GotoIf("SIP/101-00000023", "0?chanfull") in new stack
-- Executing [s@macro-dialout-trunk:9] GotoIf("SIP/101-00000023", "0?skipoutcid") in new stack
-- Executing [s@macro-dialout-trunk:10] Set("SIP/101-00000023", "DIAL_TRUNK_OPTIONS=") in new stack
-- Executing [s@macro-dialout-trunk:11] Macro("SIP/101-00000023", "outbound-callerid,2") in new stack
-- Executing [s@macro-outbound-callerid:1] ExecIf("SIP/101-00000023", "0?Set(CALLERPRES()=)") in new stack
-- Executing [s@macro-outbound-callerid:2] ExecIf("SIP/101-00000023", "0?Set(REALCALLERIDNUM=101)") in new stack
-- Executing [s@macro-outbound-callerid:3] GotoIf("SIP/101-00000023", "1?normcid") in new stack
-- Goto (macro-outbound-callerid,s,6)
-- Executing [s@macro-outbound-callerid:6] Set("SIP/101-00000023", "USEROUTCID="Top"<101>") in new stack
-- Executing [s@macro-outbound-callerid:7] Set("SIP/101-00000023", "EMERGENCYCID=") in new stack
-- Executing [s@macro-outbound-callerid:8] Set("SIP/101-00000023", "TRUNKOUTCID=") in new stack
-- Executing [s@macro-outbound-callerid:9] GotoIf("SIP/101-00000023", "1?trunkcid") in new stack
-- Goto (macro-outbound-callerid,s,12)
-- Executing [s@macro-outbound-callerid:12] ExecIf("SIP/101-00000023", "0?Set(CALLERID(all)=)") in new stack
-- Executing [s@macro-outbound-callerid:13] ExecIf("SIP/101-00000023", "1?Set(CALLERID(all)=Top<101>)") in new stack
-- Executing [s@macro-outbound-callerid:14] ExecIf("SIP/101-00000023", "0?Set(CALLERID(all)=)") in new stack
-- Executing [s@macro-outbound-callerid:15] ExecIf("SIP/101-00000023", "0?Set(CALLERPRES()=prohib_passed_screen)") in new stack
-- Executing [s@macro-dialout-trunk:12] ExecIf("SIP/101-00000023", "1?AGI(fixlocalprefix)") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/fixlocalprefix
== fixlocalprefix: Dialpattern X. matched. 0158 -> 0158
-- <SIP/101-00000023>AGI Script fixlocalprefix completed, returning 0
-- Executing [s@macro-dialout-trunk:13] Set("SIP/101-00000023", "OUTNUM=0158") in new stack
-- Executing [s@macro-dialout-trunk:14] Set("SIP/101-00000023", "custom=DAHDI/1") in new stack
-- Executing [s@macro-dialout-trunk:15] ExecIf("SIP/101-00000023", "0?Set(DIAL_TRUNK_OPTIONS=M(setmusic^))") in new stack
-- Executing [s@macro-dialout-trunk:16] Macro("SIP/101-00000023", "dialout-trunk-predial-hook,") in new stack
-- Executing [s@macro-dialout-trunk-predial-hook:1] MacroExit("SIP/101-00000023", "") in new stack
-- Executing [s@macro-dialout-trunk:17] GotoIf("SIP/101-00000023", "0?bypass,1") in new stack
-- Executing [s@macro-dialout-trunk:18] GotoIf("SIP/101-00000023", "0?customtrunk") in new stack
-- Executing [s@macro-dialout-trunk:19] Dial("SIP/101-00000023", "DAHDI/1/0158,300,") in new stack
-- Called 1/0158
-- Hungup 'DAHDI/1-1'
== Spawn extension (macro-dialout-trunk, s, 19) exited non-zero on 'SIP/101-00000023' in macro 'dialout-trunk'
== Spawn extension (from-internal, 0158, 4) exited non-zero on 'SIP/101-00000023'
-- Executing [h@from-internal:1] Macro("SIP/101-00000023", "hangupcall") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("SIP/101-00000023", "1?noautomon") in new stack
-- Goto (macro-hangupcall,s,3)
-- Executing [s@macro-hangupcall:3] NoOp("SIP/101-00000023", "TOUCH_MONITOR_OUTPUT=") in new stack
-- Executing [s@macro-hangupcall:4] GotoIf("SIP/101-00000023", "1?noautomon2") in new stack
-- Goto (macro-hangupcall,s,6)
-- Executing [s@macro-hangupcall:6] NoOp("SIP/101-00000023", "MONITOR_FILENAME=") in new stack
-- Executing [s@macro-hangupcall:7] GotoIf("SIP/101-00000023", "1?skiprg") in new stack
-- Goto (macro-hangupcall,s,10)
-- Executing [s@macro-hangupcall:10] GotoIf("SIP/101-00000023", "1?skipblkvm") in new stack
-- Goto (macro-hangupcall,s,13)
-- Executing [s@macro-hangupcall:13] GotoIf("SIP/101-00000023", "1?theend") in new stack
-- Goto (macro-hangupcall,s,15)
-- Executing [s@macro-hangupcall:15] Hangup("SIP/101-00000023", "") in new stack
== Spawn extension (macro-hangupcall, s, 15) exited non-zero on 'SIP/101-00000023' in macro 'hangupcall'
== Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/101-00000023'
VoIP*CLI>
pipat123
Bronz Member
 
โพสต์: 8
ลงทะเบียนเมื่อ: 27 ก.ค. 2011 09:59

Re: เทคนิคการติดตั้งและใช้งาน Asterisk Card - X100P

โพสต์โดย nuiz » 25 ก.ย. 2011 21:22

แก้ปัญหาการโทรออกได้ยังครับ
ขอบคุณสำหรับทุกคำถามและทุกคำตอบครับ
nuiz
Diamond Member
 
โพสต์: 1675
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33


ย้อนกลับไปยัง Elastix - Unified Communications Software

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

่กำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และ บุคคลทั่วไป 1 ท่าน