เทคนิคการ Enable H.323 บน Elastix

Elastix IP Pbx

Moderator: jubjang

เทคนิคการ Enable H.323 บน Elastix

โพสต์โดย nuiz » 02 ธ.ค. 2012 10:06

อ้างอิงกับ Elastix 2.3 นะครับ แต่ผมคิดว่าน่าจะใช้ได้กับทุกเวอร์ชั่น

H.323 คืออะไร มันคือ VoIP Signaling Protocol อีกแบบครับ นอกเหนือจาก SIP, IAX2, SCCP, MGCP แต่เก่ามากแล้ว มีใช้งานน้อยลงเรื่อยๆ และกำลังจะจากไปในอนาคตอันใกล้นี้ ตู้สาขายี่ห้อดังๆ แพงๆ ยังใช้มี H.323 อยู่ครับ (คาดว่าเป็นรุ่นแรกๆที่พัฒนามาให้รองรับ VoIP ส่วนรุ่นหลังๆก็พัฒนาเป็นแบบผสมระหว่าง SIP + H.323 แล้ว) ถ้าบังเอิญว่าเราต้องเอา Elastix ไปเชื่อมต่อ IP กับตู้สาขาที่มีแต่ H.323 เราก็ต้องคอนฟิก H.323 บน Elastix ไม่งั้นก็จะคุยกันไม่รู้เรื่อง

** บางท่านอาจจะหาทางแก้ปัญหาโดยเอา SIP VoIP Gateway (FXS/FXO/E1) มาคั่นกลางระหว่างตู้สาขากับ Elastix แล้วให้ Elastix คุยกับ VoIP Gateway แบบ SIP แทน แบบนี้ก็ได้เหมือนกันครับ แต่มันก็จะสิ้นเปลืองอุปกรณ์โดยใช่เหตุ **

ใน Elastix ดูเหมือนว่าจะมี H.323 อยู่นะครับ สังเกตุจาก
- มีโมดูลชื่อ chan_ooh323.so อยู่ในโฟลเดอร์ /usr/lib/asterisk/modules หรือ /usr/lib64/asterisk/modules
- มีไฟล์ h323.conf อยู่ในโฟลเดอร์ /etc/asterisk

แต่ว่ามันไม่สตาร์ท ผมเช็คแบบนี้ครับถึงรู้ว่า H.323 มันไม่สตาร์ท
- รันคำสั่ง netstat -ln | grep 1720 ดูก็ไม่เห็น
** ไฟล์ /etc/asterisk/ooh323.conf มีบรรทัด port=1720 อยู่ แสดงว่าถ้า H.323 ทำงานมันต้อง Listen ที่พอร์ต 1720 นี้

- รันคำสั่ง asterisk -rx "core show channeltypes"
โค้ด: เลือกทั้งหมด
Type        Description                              Devicestate  Indications  Transfer   
----------  -----------                              -----------  -----------  --------   
Phone       Standard Linux Telephony API Driver      no           yes          no         
EXTRA       GSM/CDMA Telephony Driver FOR Asterisk w no           yes          no         
USTM        UNISTIM Channel Driver                   no           yes          no         
Bridge      Bridge Interaction Channel               no           no           no         
MGCP        Media Gateway Control Protocol (MGCP)    yes          yes          no         
Agent       Call Agent Proxy Channel                 yes          yes          no         
MulticastR  Multicast RTP Paging Channel Driver      no           no           no         
SIP         Session Initiation Protocol (SIP)        yes          yes          yes         
Jingle      Jingle Channel Driver                    no           yes          no         
IAX2        Inter Asterisk eXchange Driver (Ver 2)   yes          yes          yes         
DAHDI       DAHDI Telephony Driver w/PRI & MFC/R2 &  yes          yes          no         
Skinny      Skinny Client Control Protocol (Skinny)  yes          yes          no         
Gtalk       Gtalk Channel Driver                     no           yes          no         
Local       Local Proxy Channel Driver               yes          yes          no         
----------
14 channel drivers registered.

ไม่มี H.323 ครับ มันหายไปไหน มันไม่สตาร์ท

วิธีแก้ไขให้ H.323 รัน

1. ไฟล์คอนฟิกของโมดูล chan_ooh323.so
ไฟล์คอนฟิกของ chan_ooh323.so ในโฟลเดอร์ /etc/asterisk ชื่อไฟล์มันผิดครับ ไฟล์คอนฟิกมันต้องชื่อ ooh323.conf ครับ ไม่ใช่ h323.conf แล้วจะหาไฟล์ ooh323.conf ได้จากที่ไหนหล่ะ ก็เอามาจาก Source Code ของ Asterisk ยังไงหล่ะครับ เวอร์ชั่นไหนก็ได้ครับไม่จำเป็นต้องเวอร์ชั่นเดียวกันกับที่รันอยู่
ดาวน์โหลด Source Code ของ Asterisk จากเว็บนี้ครับ http://downloads.asterisk.org/pub/telep ... k/releases
เลือกดาวน์โหลด Asterisk Source Code เวอร์ชั่นที่ใช้อยู่หรือเวอร์ชั่นใกล้เคียงก็ได้ตามสะดวกครับ
โค้ด: เลือกทั้งหมด
wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.8.18.0.tar.gz

เสร็จแล้วแตกไฟล์
โค้ด: เลือกทั้งหมด
tar xzvf asterisk-1.8.18.0.tar.gz /usr/src

แล้วก๊อปไฟล์คอนฟิกของ H.323 ครับ เปลี่ยนโหมด เปลี่ยน Owner ให้เรียบร้อย
โค้ด: เลือกทั้งหมด
cp /usr/src/asterisk-1.8.18.0/configs/chan_ooh323.conf.sample /etc/asterisk/ooh323.conf
chmod +x /etc/asterisk/ooh323.conf
chown asterisk:asterisk /etc/asterisk/ooh323.conf


สำหรับท่านที่ไม่อยากดาวน์โหลด Source Code ขนาด 20+ M เพื่อเอาไฟล์แค่ไฟล์เดียว ผมเตรียมไว้ให้ท่านเรียบร้อยแล้วครับ เป็นไฟล์ต้นฉบับเลยนะครับไม่ได้แก้ไขอะไรเลย
โค้ด: เลือกทั้งหมด
cd /etc/asterisk
wget http://www.voip4share.com/sources/ooh323.conf
chmod +x /etc/asterisk/ooh323.conf
chown asterisk:asterisk /etc/asterisk/ooh323.conf


2. โหลดโมดูล chan_ooh323.so
เข้า Asterisk Console แล้วรันคำสั่งเพื่อโหลดโมดูล

โค้ด: เลือกทั้งหมด
asterisk -r


Unload ก่อนครับ รันคำสั่งนี้
โค้ด: เลือกทั้งหมด
module unload chan_ooh323.so

ผลลัพธ์
Unloaded chan_ooh323.so

คราวนี้โหลด รันคำสั่งนี้
โค้ด: เลือกทั้งหมด
module load chan_ooh323.so

ผลลัพธ์
โค้ด: เลือกทั้งหมด
Loaded chan_ooh323.so
[Dec  2 10:13:36]   == Parsing '/etc/asterisk/ooh323.conf': [Dec  2 10:13:36]   == Found
[Dec  2 10:13:36]     --   == Setting default context to default
[Dec  2 10:13:36]   == Registered channel type 'OOH323' (Objective Systems H323 Channel Driver)
[Dec  2 10:13:36]   == Registered RTP glue 'OOH323'
[Dec  2 10:13:36]  Loaded chan_ooh323.so => (Objective Systems H323 Channel)

โหลดได้สำเร็จครับ

จริงๆแล้วเราสามารถสั่ง Unload/Load โมดูล โดยไม่ต้องเข้า Asterisk Console ได้นะครับ คือสั่งจาก Linux Prompt เลย แต่ไม่ค่อยจะเห็น Messages อะไรมากเท่าไหร่
โค้ด: เลือกทั้งหมด
asterisk -rx "module unload chan_ooh323.so"

และ
โค้ด: เลือกทั้งหมด
asterisk -rx "module load chan_ooh323.so"


3. เช็คว่า H.323 รันจริงๆ
3.1 เช็คพอร์ต 1720
โค้ด: เลือกทั้งหมด
netstat -ln | grep 1720

ผลลัพธ์
โค้ด: เลือกทั้งหมด
tcp        0      0 0.0.0.0:1720                0.0.0.0:*                   LISTEN

มีพอร์ต TCP 1720 รันแล้วครับ ซึ่งเป็น Listen Port ของ H.323 ครับ

3.2 เช็คอีกวิธีนึง
รันคำสั่งนี้ครับ
โค้ด: เลือกทั้งหมด
asterisk -rx "core show channeltypes"

ผลลัพธ์
โค้ด: เลือกทั้งหมด
Type        Description                              Devicestate  Indications  Transfer   
----------  -----------                              -----------  -----------  --------   
OOH323      Objective Systems H323 Channel Driver    no           yes          no         
Phone       Standard Linux Telephony API Driver      no           yes          no         
EXTRA       GSM/CDMA Telephony Driver FOR Asterisk w no           yes          no         
USTM        UNISTIM Channel Driver                   no           yes          no         
Bridge      Bridge Interaction Channel               no           no           no         
MGCP        Media Gateway Control Protocol (MGCP)    yes          yes          no         
Agent       Call Agent Proxy Channel                 yes          yes          no         
MulticastR  Multicast RTP Paging Channel Driver      no           no           no         
SIP         Session Initiation Protocol (SIP)        yes          yes          yes         
Jingle      Jingle Channel Driver                    no           yes          no         
IAX2        Inter Asterisk eXchange Driver (Ver 2)   yes          yes          yes         
DAHDI       DAHDI Telephony Driver w/PRI & MFC/R2 &  yes          yes          no         
Skinny      Skinny Client Control Protocol (Skinny)  yes          yes          no         
Gtalk       Gtalk Channel Driver                     no           yes          no         
Local       Local Proxy Channel Driver               yes          yes          no         
----------
15 channel drivers registered.

จะเห็นว่ามี H.323 (OOH323) รันแล้ว

4. คำสั่ง ooh323 ใน Asterisk Console
ตอนเราเข้า Asterisk Console จะมีคำสั่ง ooh323 เพิ่มขึ้นมา
โค้ด: เลือกทั้งหมด
ooh323 reload reload ooh323 config
ooh323 set debug [off] Enable/Disable OOH323 debugging
ooh323 show config Show details on global configuration of H.323 channel driver
ooh323 show peer Show details on specific OOH323 peer
ooh323 show peers Show defined OOH323 peers
ooh323 show user Show details on specific OOH323 user
ooh323 show users Show defined OOH323 users


5. คอนฟิก Trunks แบบ H.323
เวลาจะโทรออกด้วย H.323 Trunk ต้องระบุชื่อ Channel Type เป็น OOH323 นะครับ ไม่อย่างนั้น Asterisk จะไม่รู้ว่าจะส่งคอลออกทางช่องทางไหน วิธีการเขียน Dialplan มีระบุไว้ในไฟล์ /etc/asterisk/ooh323.conf ครับ อยู่ต้นๆไฟล์ ผมก๊อบมาให้ดู

โค้ด: เลือกทั้งหมด
; Syntax for specifying a H323 device in extensions.conf is
; For Registered peers/friends profiles:
;        OOH323/name where name is the name of the peer/friend profile.
;
; For unregistered H.323 phones:
;        OOH323/ip[:port] OR if gk is used OOH323/alias where alias can be any H323
;                          alias
;
; For dialing into another asterisk peer at a specific exten
;       OOH323/exten/peer OR OOH323/exten@ip


6. จำนวน Channels ที่จะโทรได้พร้อมๆกันและความเสถียร
อันนี้ไม่ทราบจริงๆครับ คงต้องลองใช้งานกันดู

ส่วนว่าจะคอนฟิกไฟล์ /etc/asterisk/ooh323.conf รวมทั้งคอนฟิก Trunks บน Elastix ยังไงเพื่อให้มันโทรออกไปด้วย H.323 นั้น ผมขอยกไว้เป็นโอกาสหน้าครับ ตอนนี้ยังหาอุปกรณ์ที่จะมาเทสไม่ได้
** หากมีปัญหากับอุปกรณ์ที่ซื้อมาเองหรือบริการที่ทำขึ้นมาเอง ให้โพสต์ถามในเว็บบอร์ดนี้นะครับ **
** งานเร่งด่วนติดต่อว่าจ้างที่เบอร์ 08-5161-9439 อีเมล์ iamaladin@gmail.com ไลน์ NuizVoip ครับ **
nuiz
Diamond Member
 
โพสต์: 7058
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33

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

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

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