โปรแกรม FOP แสดงสถานะการทำงานของ Asterisk แบบ Real time

Asterisk Opensource IP Pbx

โปรแกรม FOP แสดงสถานะการทำงานของ Asterisk แบบ Real time

โพสต์โดย nuiz » 12 เม.ย. 2010 10:28

ผมขอแนะนำโปรแกรมอีกตัวหนึ่งที่ใช้มอนิเตอร์สถานะการทำงานของเบอร์ Extensions, Trunks, Queues, Conferences, Zap/DAHDI แบบเรียลไทม์ได้นะครับ รู้ว่าใครกำลังโทรหาใครอยู่ โทรนานแค่ไหนแล้ว แถมเรายังสั่งวางสาย สั่งให้โทรออก สั่งโอนสายจากหน้าเว็บเพจก็ได้ โปรแกรมนี้มีชื่อว่า "Flash Operator Panel" หรือเรียกย่อๆว่า "FOP" ครับโปรแกรมนี้คล้ายๆกับโปรแกรมชื่อ MonAst ที่ผมเคยได้แนะนำไปก่อนหน้านี้แล้ว แต่โปรแกรม FOP นี้ดังกว่าเพราะมีมานานหลายปีแล้ว อีกทั้งยังมีอยู่ใน Elastix, Trixbox, PIAF อีกด้วย เรียกว่าส่งเสริมความดังให้ดังมากขึ้นไปอีก

การแสดงผลสถานะของ Extensions, Trunks, Queues, Conferences บนหน้าเว็บเพจ จะแสดงเป็นปุ่มพร้อมไอคอนแสดงสถานะและมีตัวหนังสือหรือตัวเลขกำกับให้รู้ว่าปุ่มไหนเป็นอะไร กำลังคุยกับเบอร์อะไร คุยนานแค่ไหนแล้ว เป็นการรับสายหรือว่าโทรออก เมื่อมีการเปลี่ยนแปลงสีของปุ่มก็จะเปลี่ยนแปลงไปด้วยนะครับ เราปรับขนาดของปุ่มได้นะครับ ว่ากันว่าถ้าปรับดีๆก็จะแสดงได้ 100 ปุ่มบนหน้าเว็บเพจเลยนะครับ แต่แสดงได้แค่หน้าเดียว ไม่มีหน้า 2, 3, ...

สำหรับ FOP เวอร์ชั่นใหม่นี้นะครับเป็นเวอร์ชั่น 0.3 รองรับ Asterisk 1.6 ซึ่งผมจะแนะนำวิธีการติดตั้งเวอร์ชั่นนี้ แต่เวอร์ชั่นนี้ก็ไม่ใช้งานทุกอย่างได้ฟรีเหมือนเวอร์ชั่นแรกแล้ว เวอร์ชั่นฟรีแสดงได้แค่ 15 ปุ่ม ถ้าอยากได้ปุ่มมากกว่านี้ก็ต้องซื้อครับสนนราคาประมาณ $40 ครับ

ท่านที่สนใจจะดาวน์โหลดเวอร์ชั่นแรกก็ได้นะครับซึ่งให้เราใช้งานได้ไม่จำกัดปุ่ม

ปล. ปัญหาหลักเวลาเราเรียกดูหน้าเว็บของโปรแกรม FOP นะครับ คืออาจแสดงผลไม่ได้ หรือสีไอคอนสลับกันระหว่างเขียวและแดง ซึ่งเป็นผลมาจากโปรแกรม Flash Player ในเครื่องของเราใหม่เกินไป :D ตัวอย่างเช่นเครื่องของผมเป็น Flash Player 10 และ IE 8.0 ก็มีปัญหาอย่างที่แจ้งไว้ บางท่านอาจจะเคยเจอปัญหาเรื่องเวอร์ชั่น Flash Player ไม่ Compatible นี้มาแล้ว เช่นโหลดเกม Flash ไม่ขึ้น เล่นเกมปลูกผักบน Facebook ไม่ได้ อะไรทำนองนี้อ่ะครับ
ถ้าไม่อยากดาวน์เกรด Flash Player ก็ลองเปิดด้วย FireFox นะครับ อาจจะแสดงผลได้ดีกว่า IE

วิธีการติดตั้ง FOP 0.30

1. เว็บไซต์
http://www.astetnic.org

2. ดาวน์โหลด FOP 0.3
http://www.asternic.org/files/op_panel-0.30.tar.gz

3. ขยายไฟล์
ผมจะไม่ขยายไปไว้ที่ไดเร็คตอรี่ /var/www/html นะครับ (เพราะเบื่อแล้ว :D ) จะขยายไปไว้ที่ไดเร็คตอรี่ /opt แทน

โค้ด: เลือกทั้งหมด
tar xzvf op_panel-0.30.tar.gz -C /opt
cd /opt/op_panel-0.30


4. แก้ไขไฟล์คอนฟิกของ Apache ให้เรียกเว็บเพจของ FOP ได้
เนื่องจากผมไม่ได้ติดตั้ง FOP ไว้ที่ /var/www/html ดังนั้นจึงเรียกหน้าเว็บเพจของ FOP โดยตรงไม่ได้ ผมต้องแก้ไขไฟล์คอนฟิกของ Apache ให้รู้ว่าเวลาผมเรียกหน้าเว็บของ FOP มันต้องไปดึงข้อมูลจากไดเร็คตอรี่ไหน

โค้ด: เลือกทั้งหมด
vi /etc/httpd/conf.d/alias.conf

เพิ่มบรรทัด Alias เข้าไป เว็บของ FOP อยู่ที่ไดเร็คตอรี่ย่อยชื่อ flash นะครับ

โค้ด: เลือกทั้งหมด
Alias /fop /opt/op_panel-0.30/flash


แล้วรีสตาร์ท httpd
เวลาผมเรียกเว็บของ FOP ผมก็พิมพ์ http://x.x.x.x/fop

5. คอนฟิกไฟล์ manager.conf ของ Asterisk
FOP ติดต่อกับ Asterisk โดยใช้ Asterisk Manager Interface (AMI) เราจึงต้องสร้าง User/Secert ไว้ในไฟล์ manager.conf เพื่อเอาไว้รับการเชื่อมต่อมาจากโปรแกรม FOP

โค้ด: เลือกทั้งหมด
vi /etc/asterisk/manager.conf


โค้ด: เลือกทั้งหมด
[fopmonitor]
secret=foppassword
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.0
read=system,call,log,verbose,command,agent,user
write=system,call,log,verbose,command,agent,user


6. แก้ไขไฟล์ op_server.cfg
flash_dir ต้องระบุเป็น path ที่เก็บไฟล์ html และไฟล์ swf ซึ่งอยู่ในไดเร็คตอรี่ flash
ที่เหลือก็เซ็ต manager user/pass ที่เราสร้างไว้แล้วในไฟล์ /etc/asterisk/manager.conf

โค้ด: เลือกทั้งหมด
vi /var/www/html/op_panel-0.30/op_server.cfg


โค้ด: เลือกทั้งหมด
manager_host=127.0.0.1
manager_port=5038
manager_user=fopmonitor
manager_secret=foppassword

flash_dir=/opt/op_panel-0.30/flash


7. รีโหลด Asterisk
โค้ด: เลือกทั้งหมด
asterisk -rx "manager reload"


8. แก้ไขไฟล์ op_buttons.cfg
แก้ไขไฟล์ op_style.cfg เปลี่ยนขนาดปุ่ม สี ไอคอน ขนาด ห้ามแก้ชื่อตัวแปร ให้แก้เฉพาะค่าหลังเครื่องหมาย = และห้ามใช้ space หากปรับอย่างเหมาะสมสามารถมีได้ประมาณ 100 ปุ่มบนหน้าจอ

9. ทดสอบรัน FOP
โค้ด: เลือกทั้งหมด
/opt/op_panel-0.30/op_server.pl &


10. สต๊อป FOP
ถ้าต้องการหยุดการทำงานของ FOP ใช้คำสั่งนี้ครับ
โค้ด: เลือกทั้งหมด
killall op_server.pl

และเมื่อต้องการสตาร์ทก็ใช้คำสั่งในข้อ 9

11. รีสตาร์ท FOP
ปกติใช้เมื่อแก้ไขคอนฟิกแล้วต้องการให้มีผล
โค้ด: เลือกทั้งหมด
killall -HUP op_server.pl


12. รัน FOP อัตโนมัติทุกครั้งที่เปิดเครื่อง
สำหรับการสั่งรัน FOP ทุกครั้งที่เปิดเครื่อง เราทำได้ 2 วิธีนะครับ ได้แก่

12.1 เอาบรรทัดในข้อ 9 ไปใส่ไว้ในไฟล์ etc/rc.d/rc.local

โค้ด: เลือกทั้งหมด
vi /etc/rc.d/rc.local

เพิ่มบรรทัดนี้เข้าไป เอาไว้บรรทัดล่างสุดก็ได้
โค้ด: เลือกทั้งหมด
/opt/op_panel-0.30/op_server.pl -d  &


12.2 ใช้ init script
ในไดเร็คตอรี่ /opt/op_panel-0.30/init มี Script ที่เราใช้ Start/Stop/Restart FOP เสมือนมันเป็น Service หนึ่งบน CentOS ได้นะครับ

12.2.1 ก๊อบปี้ไฟล์ Init Script สำหรับ CentOS/Redhat
โค้ด: เลือกทั้งหมด
cp /opt/op_panel-0.30/init/op_panel_redhat.sh /etc/init.d/fop
chmod +x /etc/init.d/fop


12.2.2 แก้ไขไดเร็คตอรี่ในไฟล์ /etc/init.d/fop

โค้ด: เลือกทั้งหมด
vi /etc/init.d/fop


โค้ด: เลือกทั้งหมด
DAEMON=/opt/op_panel-0.30/op_server.pl
OPTIONS="-d -c /opt_panel-0.30"


12.3 ทำให้เป็น Service
โค้ด: เลือกทั้งหมด
chkconfig --level 35 fop on


12.4 สตาร์ท FOP
service fop start

หน้าตาของโปรแกรม FOP
main-s.png
FOP Original
main-s.png (127.11 KiB) เปิดดู 4572 ครั้ง

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

พารามิเตอร์ในไฟล์ op_server.cfg
ไฟล์ op_server.cfg นี้นะครับ เราเอาไว้คอนฟิก FOP ให้ทำงานตามที่เราต้องการและให้เชื่อมต่อกับ Asterisk เพื่อดึงข้อมูลที่ต้องการมาแสดงบนหน้าเว็บได้ พารามิเตอร์ก็มีดังต่อไปนี้

manager_host
เป็น Hostname หรือ IP Address ของ Asterisk

manager_user
เป็น Username ในไฟล์ manager.conf ที่เราคอนฟิกไว้เพื่อให้ FOP เชื่อมต่อกับ Asterisk

manager_secret
เป็น Secret ในไฟล์ manager.conf ที่เราคอนฟิกไว้เพื่อให้ FOP เชื่อมต่อกับ Asterisk

event_mask
ระบุว่าต้องการรับ Event แบบใดบ้างจาก Asterisk ค่าที่ใช้ได้คือ "on", "off", "system", "call", "log"

ในเว็บ FOP เราสามารถมอนิเตอร์ Asterisk ได้มากกว่า 1 เครื่อง โดยเพิ่มบรรทัด manager_host, manager_user, manager_secret และ event_mask ให้เท่ากับจำนวน Asterisk Server ที่ต้องการมอนิเตอร์ เวลาใส่ก็ใส่เรียงกันเป็นชุดโดย 1 ชุดให้เขียน 4 บรรทัดนี้เรียงติดกันนะครับ ถ้าลืมบรรทัดใดบรรทัดหนึ่ง FOP ก็จะถือว่าบรรทัดแรกสุดที่เจอเป็นของ Asterisk Server ตัวนั้น จากนั้นเราก็ไปคอนฟิกไฟล์ op_buttons.conf เพื่อระบุว่าบรรดาปุ่มที่แสดงบนหน้าเว็บนั้น ปุ่มไหนเป็นของ Server ไหน

astmanproxy_host
astmanproxy_port
astmanproxy_server

เราอาจจะให้ FOP เชื่อมต่อกับ astmanproxy แทน Asterisk Manager โดยตรงก็ได้โดยระบุ 3 พารามิเตอร์นี้ และถ้ามี astmanproxy มากกว่า 1 เครื่องก็ให้เพิ่มทั้ง 3 บรรทัดนี้ตามจำนวน astmanproxy ที่มี

listen_addr
เป็นออปชั่น ระบุว่าเมื่อเราสั่งรันไฟล์ op_server.pl จะให้ FOP รอรับการเชื่อมต่อที่ IP Address อะไรในเครื่อง ถ้าไม่ระบุก็จะรอรับการเชื่อมต่อทุก IP Address ในเครื่อง ตัวอย่างเช่นเครื่อง Web Server ที่ติดตั้ง FOP มี 3 ไอพี คือ 127.0.0.1, 192.168.4.55, 58.59.60.61 แต่ต้องการเปิดรอรับการเชื่อมต่อที่ IP 192.168.4.55 ก็ใส่ไอพีนี้เข้าไป ถ้าต้องการเพิ่ม IP อีกก็ให้เพิ่มบรรทัด listen_addr อีก

listen_port
ระบุหมายเลขพอร์ตที่ op_server.pl จะรอรับการเชื่อมต่อจาก Flash Client โดยที่ Flash Client และ FOP จะคุยกันด้วย TCP ผ่านพอร์ตดีฟอลท์คือ 4445 และดังนั้นหากในเครื่อง Web Server ที่ติดตั้ง FOP มี Firewall อยู่ อย่าลืมเปิดพอร์ต listen_port นี้ด้วยนะครับ ตัวอย่างเช่นท่านใดที่ใช้ iptables ให้เพิ่มบรรทัดนี้เข้าไป

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 4445 -j ACCEPT

web_hostname
เป็นออปชั่น ต้องคอนฟิกให้เหมือนกับ hostname ที่ใช้เรียกเข้า Web Server เช่น ถ้าเราเรียกเข้า Web Server โดยใช้ http://www.myserver.com เวลาเขียนบรรทัด web_hostname ก็ต้องใส่ว่า http://www.myserver.com ไม่ต้องใส่ http:// ด้วยนะครับ แต่ถ้าใช้ IP Address แทน Hostname ก็ต้องใส่ IP Address แทน ปกติจะไม่ใช้พารามิเตอร์นี้ครับ

security_code
เป็นพาสเวอร์ดที่เราจะต้องใส่เมื่อ FOP ถาม ซึ่งตามปกติเวลาเราส่งคำสั่งมาจาก Flash Client เช่น โอนสาย วางสาย โทรออก โดยการลากปุ่มบนหน้าจอ FOP จะถามพาสเวอร์ด

flash_dir
เป็นไดเร็คตอรี่จริงๆในเครื่องซึ่งเก็บไฟล์ html และ swf เช่น /opt/op_panel-0.30/html

poll_interval
ระบุช่วงเวลา (เป็นวินาที) ที่ Server จะ Poll ถาม Asterisk เกี่ยวกับสถานะของเบอร์ SIP และ IAX2 ดีฟอลท์คือทุก 240 วินาที แต่สำหรับ Asterisk เวอร์ชั่นใหม่ๆ เราไม่จำเป็นต้องระบุ poll_interval ก็ได้ เพราะว่าเมื่อมีเหตุการณ์ต่างๆเกิดขึ้นกับ SIP/IAX2 เช่น register/unregister/lagged มันก็จะส่งเหตุการณ์ต่างๆเหล่านี้ออกมาเองผ่านทางช่องทาง AMI ซึ่ง FOP ก็จะรับรู้โดยปริยาย แต่ถ้าเราเอา FOP นี้ไปมอนิเตอร์ Asterisk เวอร์ชั่นแรกๆ ก็ยังคงต้องใช้ poll_interval อยู่ และถ้ามี Asterisk หลายเครื่องก็อาจต้องเพิ่มค่า poll_interval ให้มากขึ้น เช่น 7200 เพราะทุกครั้งที่ Asterisk ถูก Poll จะมีผลต่อการทำงานของมัน ดังนั้นสำหรับ Asterisk เวอร์ชั่นใหม่ๆ เช่น 1.2, 1.4, 1.6 ก็ไม่จำเป็นต้องใช้ poll_interval ครับ

poll_voicemail
ถ้าเราตรวจสอบวอยส์เมล์จากหน้าเว็บ Asterisk จะไม่ส่งสถานะการลบวอยส์เมล์ให้ทราบ ซึ่ง AMI จะไม่แจ้งเมื่อวอยส์เมล์ถูกลบ เราอาจจะอินาเบิลพารามิเตอร์นี้ซึ่งจะทำให้ FOP เช็ควอยส์เมล์ทุกๆช่วงเวลา poll_interval

auth_md5
เซ็ตให้เป็น 1 ถ้าต้องการตรวจสอบ Asterisk Manager Username/Password แบบ MD5 ควรเซ็ตค่าให้เป็น 1 เสมอนะครับโดยเฉพาะเมื่อต้องส่ง Username/Password ผ่านเน็ตเวอร์ค

kill_zombies
ถ้าเซ็ตเป็น 1 เซอร์เวอร์จะตัดแชนแนลประเภท Zombie (แชนแนลที่แฮ้งค์ ไม่ได้ใช้งานแล้วแต่สถานะยังแอ๊คทีฟอยู่) ถ้าพบว่ามี ออปชั่นนี้ไม่ควรจะใช้งาน ดีฟอลท์จึงเซ็ตไว้เป็น 0

debug
ตั้งระดับการดีบัคบนเซอร์เวอร์ ผลจากการดีบัคจะถูกแสดงบน Standard Output สั่งดีบัคโดยการเซ็ตพารามิเตอร์แบบบิตแม๊บดังต่อไปนี้

Bit 1: แสดงเหตุการณ์ที่ส่งมาจาก Asterisk
Bit 2: แสดงคำสั่งที่ส่งไปให้ Asterisk
Bit 4: แสดงคำสั่งที่ส่งออกไปจาก Flash
Bit 8: แสดงคำสั่งที่ส่งไปยัง Flash
Bits 16,32,64: ดีบัคสำหรับ Server

ดีฟอลท์คือ 0 (ไม่ดีบัค) ถ้าเราต้องการเห็นเหตุการณ์ที่ส่งมาจาก Asterisk และเห็นคำสั่งที่ส่งไปให้ Asterisk ก็ให้เซ็ตค่า debug เป็น 3 ซึ่งได้จาก 1+2 และถ้าต้องการเปิดดีบัคเต็มรูปแบบก็เซ็ตเป็น 255 หรือไม่ก็เราใช้คำสั่ง -X ตอนสตาร์ท op_server.pl ก็ได้ ซึ่งจะให้ผลเหมือนกัน

auto_conference_extension
เป็นเบอร์ Extension ที่จะไดอัลเพื่อเลือกห้อง Meeme Conference ที่ไม่มีพินป้องกันไว้ ดีฟอลท์คือ 900 ตั้งแต่ FOP เวอร์ชั่น 0.15 ขึ้นไป ห้ามใช้พารามิเตอร์นี้

queue_hide
ถ้าเซ็ตเป็น 1 ปุ่มตำแหน่งของ Queue จะไม่ถูกแสดงถ้าไม่ได้ใช้งานในขณะนั้น (จะเห็นเฉพาะจำนวนสมาชิกจริงๆที่กำลังคอยอยู่ใน Queue)

clid_format
เป็นรูปแบบเบอร์ CLID ที่จะให้แสดงบนปุ่มเมื่อมีสายโทรเข้ามา ใช้ตัว x แทนตัวเลขซึ่งจะถูกแทนด้วยเบอร์โทรศัพท์ของคนที่โทรเข้ามาเมื่อมีสายโทรเข้ามา ดีฟอลท์คือ (xxx) xxx-xxx

clid_privacy
ถ้าเซ็ตเป็น 1 บนปุ่มจะไม่แสดงแสดงเบอร์ CLID หรือเบอร์ที่โทรออกไป

show_ip
ถ้าเซ็ตเป็น 1 บนปุ่มจะแสดงหมายเลข IP Address ของ SIP/IAX Peers

reverse_transfer
ในดีฟอลท์คอนฟิก เมื่อลากและวางปุ่มเพื่อโอนสาย เป็นมุมมองของ Asterisk ไม่ใช่ยูสเซอร์ ดังนั้นถ้าเรากำลังคุยโดยใช้ SIP/myphone และลากปุ่มสำหรับแชนแนลนั้น จะเป็นการโอนสายขา (ตัวเราเอง) ไม่ใช่คนที่เรากำลังคุยด้วย แต่ถ้าเราต้องกาารโอนสายคนที่เรากำลังคุยด้วย (นั่นคือเป็นมุมมองของยูสเซอร์แทนที่จะเป็นมุมมองของ Asterisk) ให้เซ็ตออปชั่นนี้เป็น 1

transfer_timeout
เป็นออปชั่น ถ้าเซ็ตบน Toolbar จะเห็นรายการ Dropdown พร้อมค่า ถ้าเลือกค่าใดค่าหนึ่งครั้งต่อไปที่เราทำการโอนสายภายในพาแนล คอลจะถูกสิ้นสุดเมื่อครบเวลาไทม์เอ๊าท์ ฟอร์แม๊ตของค่าคือ "timeout_in_second,label|timeout_in_seconds,label" ถ้าเซ็ตไทม์เอ๊าท์เป็น 0 จะไม่จำกัดระยะเวลาการโอนสาย ตัวอย่างเช่น

transfer_timeout="0,No timeout|300,5 minutes|600,10 minutes"

enable_restart
ถ้าเซ็ตเป็น 1 เมื่อเรากดปุ่ม Reload บน Flash Client จะเป็นการรีสตาร์ท Asterisk ด้วย ถ้าเราต้องการรีสตาร์ท Asterisk ไปพร้อมๆกันด้วยเราต้องรัน Asterisk ด้วย safe_asterisk หรือใช้เครื่องมืออื่นที่จะช่วยสตาร์ท Asterisk ให้ทำงานได้เมื่อพบว่ามันไม่สตาร์ท เพราะเป็นการ Restart ไม่ใช่ Reload

rename_label_wildcard
ถ้ามีปุ่ม REGEXP ซึ่งมีความกว้างเป็น wildcard เราอาจจะเซ็ตออปชั่นนี้ให้เป็น 1 ก็ได้ ซึ่งจะทำให้ลาเบลสำหรับปุ่มนั้นจะเปลี่ยนแปลงไปตามชื่อจริงๆของแชนแนลที่กำลังใช้งานสล๊อตนั้นอยู่ แชนแนลที่เป็น Wildcard หมายถึงแชนแนลใดๆที่มี * อยู่ภายใน (ไม่ทุก REGEXP ที่มี wildcard)

rename_label_agentlogin
ถ้าเซ็ตเป็น 1 และเมื่อใช้แอปพลิเคชั่น AgentLogin บน Asterisk จะเปลี่ยนลาเบลของปุ่มให้เป็นเบอร์ Extension ของเอเย่นต์

rename_label_callbacklogin
ถ้าเซ็ตเป็น 1 และเมื่อใช้แอปพลิเคชั่น AgentCallbacklogin ของ Asterisk จะเปลี่ยนลาเบลของปุ่มให้เป็นเบอร์ Extension ของเอเย่นต์ ถ้าล๊อกอินผ่านเบอร์ Extension ที่ได้กำหนดไว้ในพารามิเตอร์ Extension และ Context สำหรับปุ่มนั้น จะทำให้ลาเบลเปลี่ยนไปเป็น Agent/XXXX เมื่อเอเย่นต์ล๊อกอิน แต่ถ้าเราไม่ได้กำหนดไว้ว่าปุ่มนี้เป็น Extension และ Context ของใครไว้ก่อน ฟีเจอร์นี้จะไม่เวอร์ค

rename_to_agent_name
ถ้าเซ็ตเป็น 1 และเซ็ตพารามิเตอร์ rename_label_callbacklogin ให้เป็น 1 ด้วย จะทำให้ลาเบลของปุ่มจะเปลี่ยนเป็นชื่อที่ตั้งไว้ในไฟล์ agents.conf แทนที่จะเป็น Agent/XXXX

rename_queue_member
ใช้เปลี่ยนชื่อลาเบลของปุ่ม โดยแสดงชื่อ Queue ถ้าเราตั้งแชนแนลให้เป็นสมาชิกของ Queue โดยใช้แอปพลิเคชั่น AddQueueMember ไม่ใช้ข้อมูลในไฟล์ agent.conf

change_led_agent
ถ้าเซ็ตเป็น 1 สีปุ่มที่แสดงว่าเอเย่นต์กำลังล๊อกอินจะเปลี่ยนไปเป็นสีตามที่กำหนดไว้ในพารามิเตอร์ ledcolor_agent ในไฟล์ op_style.cfg (สีดีฟอลท์คือสีเหลือง) เราก็จะมองเห็นเอเย่นต์ล๊อกอินได้ชัดเจนยิ่งขึ้น

barge_muted
ถ้าเซ็ตเป็น 1 และเราลากปุ่มที่ไม่ได้ใช้งานไปยังขาใดขาหนึ่งของการคอล ทั้งสามปุ่มจะถูกโยนเข้าไปยังห้อง Meetme conference และแชนแนลที่ถูกลากจะถูก mute โดยอัตโนมัติ ดังนั้นสองคนแรกจะไม่ได้ยินคนที่ 3 และเราสามารถ mute/unmute สมาชิกในห้อง Meetme โดยการคลิ๊กไอคอนลูกศรเล็กๆบนแต่ละปุ่ม

barge_rooms
เป็นเบอร์ห้อง Meeme ที่ใช้สำหรับ barge-in

conference_context
เป็น Context ของห้อง Meetme conference ที่ใช้เพื่อ barge in ดีฟอลท์คือ conferences

เพื่อให้ barge ทำงานได้ เราต้องเพิ่ม Extension เข้าไปไว้ใน Dialplan ภายใต้ Context ของมัน เปิดไฟล์ /etc/asterisk/extensions.conf ของ Asterisk แล้วเพิ่มบรรทัดต่อไปนี้ เบอร์ Extension จะต้องตรงกันกับเบอร์ห้อง Meetme Conference

[conferences]
exten => 900,1,MeetMe(900)
exten => 901,1,MeetMe(901)
exten => 902,1,MeetMe(902)

แก้ไขไฟล์ /etc/asterisk/meetme.conf เพิ่มบรรทัดต่อไปนี้

[rooms]
conf => 900
conf => 901
conf => 902

เราสามารถตั้งค่า security_codes, conference_context, barge_rooms, flash_dir และ web_hostname สำหรับแต่ละ Context ให้แตกต่างกันได้ วิธีการก็ไม่ยากครับโดยการตั้งชื่อ Context ใหม่ เช่น [new_context] แล้วใส่ทีละบรรทัดจนครบ ชื่อไม่ให้ซ้ำกันกับ Context อื่น และเพิ่มได้เรื่อยๆตามที่ต้องการ วิธีการแบบนี้ทำให้เรามีหลายๆหน้าเว็บเพจ แต่ละเว็บเพจก็จะแสดงแต่ละ Context บนแต่ละ Asterisk

voicemail_extension
เป็น Extension และ Context ในไฟล์ /etc/asterisk/extensions.conf ที่สามารถเรียกแอปพลิเคชั่น Voicemailmain ได้ (เพื่อเช็ควอยส์เมล์) ยกตัวอย่างเช่น ถ้าเราตั้งเบอร์ 1234 ไว้ใน Context ชื่อ features เพื่อเช็ควอยส์เมล์ บรรทัดนี้ก็จะเป็น voicemail_extension=1234@features แล้วเมื่อมีไอคอนรูปซองจดหมายปรากฏบนปุ่ม (เรียกว่าไอคอน MWI) ดับเบิลคลิ๊กที่ไอคอนก็จะเป็นการโทรไปเบอร์ของ Voicemailmain

พารามิเตอร์ในไฟล์ op_buttons.cfg
ไฟล์ op_buttons.cfg เอาไว้คอนฟิกบอก FOP ว่าให้แสดงปุ่มอะไรบ้างและจะให้โชว์ตัวหนังสืออะไรบนปุ่ม ยกตัวอย่างเช่น ผมต้องการโชว์ปุ่ม SIP/100 ซึ่งเป็น SIP Extension1 เบอร์ 100 ผมก็คอนฟิกในไฟล์ op_buttons.conf แบบนี้
เนื่องจากข้อมูลดีฟอลท์ในไฟล์ op_buttons.conf มีเยอะแยะพอสมควร ก็เลยทำให้หน้าเว็บ FOP มันดูเลอะเทอะ ทางที่ดีผมว่าสร้างไฟล์นี้ขึ้นมาใหม่ดีกว่าครับ แล้วคอนฟิกใส่ข้อมูลเฉพาะที่มีอยู่ในเครื่องของเราก็พอ
โค้ด: เลือกทั้งหมด
mv /opt/op_panel-0.30/op_buttons.cfg /opt/op_panel-0.30/op_buttons.cfg.bak
vi /opt/op_panel-0.30/op_buttons.cfg


โค้ด: เลือกทั้งหมด
[SIP/100]
Position=1
Label="Agent 01"
Extension=100
Context=from-internal
;Panel_Context=supervisor1
Icon=1
Mailbox=100@supercall
No_Rectangle=no

[SIP/101]
Position=2
Label="Agent 02"
Extension=101
Context=from-internal
;Panel_Context=supervisor2
Icon=1
Mailbox=101@supercall
No_Rectangle=no


ออปชั่นที่ใส่ในแต่ละบรรทัดได้ มีดังต่อไปนี้ครับ
[Channel/channelname]
เช่น [SIP/100] หรือ [Zap/1] หรือ [IAX/200] สำหรับ SIP/IAX จะเป็น Username ส่วน ZAP จะเป็น Channel Number

Position
ตำแหน่งของปุ่มที่จะโชว์บนหน้าเว็บ โดยจะเรียงจากบนลงล่าง และจากซ้ายไปขวา จำนวนปุ่มที่จะแสดงได้ขึ้นอยู่กับขนาดของปุ่มและ padding (ตามที่คอนฟิกในไฟล์ op_style.cfg) เราอาจใส่เป็นตัวเลขตรงๆเช่น 1 หรือ 2 หรือ 10 หรือใส่ได้มากกกว่า 1 ตำแหน่งเช่น 1,2,3 หรือใช้ตัวอักษร n แทนก็ได้

Panel_Context
ถ้าเรามี Server เดียว แต่มีหลายๆ Flash Client ที่คอนเน็คเข้ามาดูสถานะ แต่ละ Client ก็อยากให้แสดงปุ่มไม่เหมือนกันด้วย ถ้าเราไม่ระบุ Panel_Context จะทำให้ FOP คิดว่าเราต้องการคอนเน็คกับ "default" context ซึ่งในการโหลด Flash แล้วให้แสดง Context ที่ต้องการนั้นเราต้องแก้ไขหน้าเว็บเพจที่จะโหลดไฟล์ swf โดยการเพิ่ม ?context=mycontext ไว้หลัง operator_panel.swf ทุกตำแหน่งที่เจอ อย่าลืมแก้ไข mycontext ให้ตรงกับบรรทัด Panel_Context ด้วยนะครับ

URL
ระบุ URL ที่จะให้เปิดขึ้นมาเมื่อคลิ๊กที่ปุ่ม

Target
ใช้ร่วมกับ URL ซึ่งจะกำหนดว่าเมื่อคลิ๊กที่ปุ่มแล้วจะให้เปิด URL ขึ้นมาแบบไหน ระหว่าง _parent (เปิดในหน้าเดิม) หรือ _new (เปิดหน้าใหม่) ดีฟอลท์คือเปิดในหน้าเดิม
No_Rectangle ถ้าเซ็ตเป็น Yes ปุ่มจะไม่มีกรอบสี่เหลี่ยม ออปชั่นนี้มีประโยชน์คือให้เราวาดปุ่มอย่างที่เราต้องการได้โดยใช้ Background Image

Label
ตัวหนังสือที่จะให้แสดงบนปุ่ม ถ้ามีเว้นวรรคต้องเขียนในเครื่องหมาย " " เช่น "Agent 01" ถ้าต้องการแสดงตัวหนังสือใน Label เป็นภาษาไทย ให้ใช้ Text Editor ที่พิมพ์ภาษาไทยได้ เสร็จแล้วพิมพ์คำสั่ง
โค้ด: เลือกทั้งหมด
vi -c ":wq! ++enc=utf8" op_buttons.cfg


Server
เราสามารถมอนิเตอร์ Asterisk Server ได้มากกว่า 1 เครื่องในหน้าเว็บเดียว โดยการใส่บรรทัดนี้เข้าไป ปุ่มนี้ก็จะกลายเป็นของ Server นั้น

Extension
ระบุเบอร์ Extension ของปุ่ม เพื่อให้ FOP รู้ว่าจะโทรหาเบอร์ Extension อะไรถ้าต้องการโทรหาปุ่มนี้โดยลากปุ่มของ Extension อื่นมาวางใส่ ถ้าไม่มีเบอร์ Extension ให้ใส่ค่า -1

Context
ถ้าเบอร์ Extension ไม่ได้อยู่ใน Context ชื่อ default ใน Diaplan ก็ต้องระบุชื่อ Context ที่เบอร์ Extension นี้อยู่ ยกตัวอย่างเช่นมีเบอร์ Extensions 100 อยู่ใน from-internal ก็ต้องระบุบรรทัดนี้เป็น Context=from-internal

Icon
เลือกสัญลักษณ์ของไอคอน มีอยู่ 6 แบบ ดังรูป
fop-icon.png
Icons
fop-icon.png (17.52 KiB) เปิดดู 4572 ครั้ง

ถ้าต้องให้ปุ่มโชว์ไอคอนแบบที่ 1 ก็ใส่บรรทัด Icon=1

Mailbox
ใส่เมล์บ๊อกวอยส์เมล์ของ Extension ที่จะมอนิเตอร์ ถ้ามีข้อความเสียงฝากไว้ก็จะแสดงสัญลักษณ์รูปจดหมาย เช่นถ้าเมล์บ๊อกซ์ของยูสเซอร์คือ 100 อยู่ใน voicemail context ชื่อ supercall ก็ให้ระบุบรรทัดนี้แบบนี้ Mailbox=100@supercall แต่ถ้าไม่ต้องการให้เช็ควอยส์เมล์ก็ไม่ต้องใส่บรรทัด Mailbox หรือไม่ก็ใส่ Mailbox= โดยไม่ต้องใส่อะไรด้านหลัง

แก้ไขไฟล์ op_buttons.conf เสร็จแล้วก็รีสตาร์ท FOP ใหม่ด้วยคำสั่ง
โค้ด: เลือกทั้งหมด
killall -HUP op_server.pl

มาดูเว็บ FOP หลังจากแก้ไขไฟล์ op_buttons.conf
fop-3-s.png
FOP
fop-3-s.png (48.55 KiB) เปิดดู 4572 ครั้ง

จะเห็นว่าลดไอคอนที่ไม่จำเป็นออกไปได้ทั้งหมดครับ เหลือแต่อันที่จำเป็นเท่านั้น แต่ก็ยังมีที่เราต้องแก้ไขอีกคือ ไอคอนใหญ่ไปนิดทำให้แสดงผล Label ได้ไม่หมด เราต้องลดขนาดของไอคอนลงโดยทำที่ที่ไฟล์ op_style.conf

แสดงไอคอนของ Queues
ถ้าเรามีห้อง Conference หรือ Queue ก็สามารถสร้างเป็นไอคอนได้ ดังนี้ครับ
สร้างไอคอน Queue แบบรวม
[Queue/700]
Position=10
Label="Sales Queue"
Extension=700
Icon=5
ซึ่ง FOP จะแสดงจำนวนสมาชิกใน Queue และระยะเวลารอสายสูงสุด

สร้างไอคอน Queue แบบแยกสมาชิก
ถ้าใน Queue 700 มีเอเย่นต์อยู่ 4 คน เราสามารถสร้างเป็น 4 ปุ่มแยกจากกันได้ แต่ละปุ่มจะแสดงแต่ละเอเย่นต์
[Queue/700]
Position=11-14
Label="Sales Queue"
Extension=-1
Icon=5

แสดงไอคอนของ Agents
หากเราทำระบบ Call Center มี Queues และ Agents เราก็มีไอคอนของแต่ละ Agent ได้ด้วยนะครับ ดังนี้
[Agent/1002]
Position=12
Label="Agent 1002"
Context=agents
Icon=3

แสดงไอคอนของ Caller ID
มีบางครั้งเราต้องการมอนิเตอร์เฉพาะ Caller ID เบอร์ใดเบอร์หนึ่ง (ปกติจะเป็นเบอร์ที่โทรเข้ามาในระบบ) และเราไม่สามารถสร้าง Caller ID นี้ให้แม๊ตซ์กับเบอร์ Extensions หรือ Agents หรือ Queues อะไรได้เลย เราก็ต้องมอนิเตอร์เป็นเบอร์ Caller ID เลย
[CALLERID/6628888888]
Position=20
Label="From K-BANK"
Extension=6628888888
Context=from-internal
Icon=2

แสดงไอคอน Conference Meetme
แบบรวม
[900]
Position=1
Label="Meetme Room 900"
Extension=900
Context=conferences
Icon=6

แบบแยกผู้ร่วมประชุม
สมมติมีผู้ร่วมประชุมอยู่ 4 คน
[900]
Position=2-5
Label="Meetme User"
Extension=-1
Icon=6

แสดงไอคอนของ Trunk
ปกติในบรรทัด Position ถ้าเราระบุมากกว่า 1 ตำแหน่ง จะหมายถึง Trunk เช่น
[SIP/myprovider]
Position=20-30
Label="SIP TRUNK"
Extension=-1
Icon=4
ก็จะมอนิเตอร์ Trunk ได้


พารามิเตอร์ในไฟล์ op_style.cfg
เปลี่ยนรูปแบบการแสดงผล ขนาดและสีของปุ่ม ขนาดของไอคอน รูปแบบของไอคอน แต่ให้เปลี่ยนเฉพาะค่าของมัน ห้ามเปลี่ยนชื่อตัวแปรนะครับ ไม่งั้นจะเออเร่อร์

[general]
; ความเข้มของสีปุ่มเมื่อมีการเปลี่ยนแปลงสถานะ
dimm_noregister_by=20
dimm_lagged_by=60

; ความเข้มของสีไอคอน MWI เมื่อไม่มีข้อความในกล่องข้อความ
nomail_alpha=3

; ถ้าเซ็ตเป็น 1 ไอคอนรูปโทรศัพท์จะสั่นเมื่อมีสายเรียกเข้า
enable_animation=1

; Pixels to use on the ringing animtion
shake_pixels=2

; แสดงเส้นขอบรอบลาเบลตัวหนังสือ ปกติจะใช้เมื่อต้องการให้มีรูปแบบเหมือนกับการดีบัค
show_borders=0

; ถ้าเซ็ตเป็น 1 จะทำให้ลาเบลที่เป็นแบ๊คกราวด์มีสีเมื่อสถานะเปลี่ยนแปลง
enable_label_background=0

; ถ้าเซ็ตเป็น 1 จะเข้ารหัสข้อมูลที่รับส่งระหว่าง FOP Server และ Client
enable_crypto=0

; ใช้ฟอนท์ที่มีมาให้ใน FOP แล้ว ไม่ได้ใช้ฟอนท์ที่มีในเครื่อง
use_embed_fonts=1

; สีแสดงสถานะต่างๆ
ledcolor_ready=0x00A000
ledcolor_busy=0xA01020
ledcolor_agent=0xD0d020
ledcolor_paused=0x000000

; เซ็ตรายละเอียดของปุ่มสี่เหลี่ยม
btn_width=145
btn_height=45
btn_padding=4
btn_line_width=1
btn_line_color=0x000000
btn_fadecolor_1=ccccff
btn_fadecolor_2=ffffff
btn_round_border=8
btn_highlight_color=ff0000

; เซ็ตรายละเอียดของลาเบลบนปุ่ม
label_font_size=12
label_font_family=Verdana ; มีผลก็ต่อเมื่อเซ็ต use_embed_fonts=0
label_font_color=000000
label_shadow_color=dddddd
label_margin_top=20
label_margin_left=38
label_shadow=1
label_extent_x=10 ; ถ้าไม่ได้วางลาเบลในแนวนอน ให้เพิ่มค่าขึ้นไป
label_extent_y=0

; รายละเอียดของปุ่ม CLID
clid_font_color=00dd00
clid_font_size=13
clid_centered=1
clid_font_family=Verdana
clid_margin_top=0
clid_margin_left=25

; ปรับตำแหน่ง ขนาดฟ้อนท์ ของระยะเวลาการโทรที่แสดงบนปุ่ม
timer_font_color=4000ff
timer_font_size=13
timer_font_family=Courier
timer_margin_top=48
timer_margin_left=6

; รายละเอียดของไอคอนรูปวงรี
led_scale=90
led_margin_top=34
led_margin_left=20

; รายละเอียดของไอคอนรูปลูกศร
arrow_scale=70
arrow_margin_top=10
arrow_margin_left=15

; รายละเอียดของไอคอนข้อความ MWI
mail_margin_left=-23
mail_margin_top=13
mail_scale=9

; เปลี่ยนตำแหน่งและขนาดไอคอนบนปุ่ม
; margin_top ระยะห่างจากขอบบนของปุ่ม
; margin_left ระยะห่างจากขอบด้านขวาของปุ่ม ค่าเป็น - หมายถึงห่างจากขอบด้านขวาตามจำนวนระยะที่กำหนดไว้
; scale ขนาดไอคอน
icon1_margin_top=25
icon1_margin_left=-22
icon1_scale=10

icon2_margin_top=46
icon2_margin_left=-29
icon2_scale=14

icon3_margin_top=34
icon3_margin_left=-36
icon3_scale=20

icon4_margin_top=33
icon4_margin_left=-34
icon4_scale=16

icon5_margin_top=32
icon5_margin_left=-33
icon5_scale=16

icon6_margin_top=32
icon6_margin_left=-33
icon6_scale=16

; จะให้มีออปชั่นอะไรบน Status Bar บนสุดของเว็บเพจ
show_security_code=1
show_clid_info=0
show_btn_help=3
show_btn_debug=0
show_btn_reload=2
show_status=4

;[sip]
; You can have different styles per panel context
; You need to copy all the variables, they will not be
; inherited. If you fail to include an option the flash
; client migth hang. So, copy the complete [general]
; section an change the header to the panel context name.
; Then adjust the parameters to your liking.


การแสดงผลเป็นภาษาไทย
หากต้องการให้แสดงผลตัวหนังสือในปุ่มเป็นภาษาไทยก็ทำได้นะครับ โดยแก้ไขไฟล์ op_buttons.cfg (อาจต้องดาวน์โหลดไฟล์นี้มาไว้ในเครื่องคอมพิวเตอร์ก่อน แล้วใช้ Text Editor แก้ไข แล้วอัพโหลดเข้าเซอร์เวอร์ใหม่อีกรอบ) แล้วเข้ารหัสแปลงไฟล์ให้เป็นรูปแบบ UTF-8 ด้วยคำสั่งต่อไปนี้

โค้ด: เลือกทั้งหมด
vi -c ":wq! ++enc=utf8" op_buttons.cfg
** หากมีปัญหากับอุปกรณ์ที่ซื้อมาเองหรือบริการที่ทำขึ้นมาเอง ให้โพสต์ถามในเว็บบอร์ดนี้นะครับ **
** งานเร่งด่วนติดต่อว่าจ้างที่เบอร์ 08-5161-9439 อีเมล์ iamaladin@gmail.com ไลน์ NuizVoip ครับ **
nuiz
Diamond Member
 
โพสต์: 7058
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33

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

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

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

cron