เทคนิคการติดตั้ง FOP2 ด้วยตัวเอง

Elastix IP Pbx

Moderator: jubjang

เทคนิคการติดตั้ง FOP2 ด้วยตัวเอง

โพสต์โดย nuiz » 04 ก.ค. 2016 13:39

บทความนี้จะแนะนำวิธีการติดตั้ง FOP2 ครับ เป็นการติดตั้งแบบติดตั้งเองนะครับ ซึ่งถ้าทำตามขั้นตอนในบทความนี้ ไม่มีคำว่าใช้ FOP2 ไม่ได้ครับ ขั้นตอนมีดังต่อไปนี้

1. ให้ Uninstall โมดูล FOP ใน Module Admin ออก
ล๊อกอินเข้า FreePBX เมนู Admin -> Module Admin แล้วจัดการ Uninstall โมดูล FOP ออก

รูปภาพ

รูปนี้คือเอาออกแล้ว
รูปภาพ

2. ให้สร้างเทเบิลเหล่านี้เพิ่มเติม
เพราะจากการตรวจสอบเทเบิล พบว่าเทเบิล fop2* หายไปเยอะ มีแค่ประมาณ 6 เทเบิลเท่านั้นจากทั้งหมด 16 เทเบิล ให้เพิ่มเข้าไปดังนี้
ล๊อกอินเข้า Elastix ด้วย SSH (Putty, Bitvise, SecureCRT) แล้วรันคำสั่ง mysql
โค้ด: เลือกทั้งหมด
mysql -uroot -p asterisk

ใส่พาสเวอร์ดของ MySQL จะเห็นพร้อมท์ mysql>
ก๊อบแล้ววางบรรทัดด้านล่างนี้ จะเพิ่มเทเบิลที่ขาดหายไปครับ
โค้ด: เลือกทั้งหมด
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

CREATE TABLE IF NOT EXISTS `fop2ButtonContext` (
  `id_button` int(11) NOT NULL,
  `id_context` int(11) default NULL,
  PRIMARY KEY  (`id_button`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `fop2buttons` (
  `id` int(11) NOT NULL auto_increment,
  `exclude` int(2) NOT NULL default '0',
  `sortorder` int(6) NOT NULL default '0',
  `type` varchar(40) NOT NULL,
  `device` varchar(100) NOT NULL,
  `privacy` varchar(30) default NULL,
  `label` varchar(100) default NULL,
  `group` varchar(60) NOT NULL default '',
  `exten` varchar(30) default NULL,
  `email` varchar(100) NOT NULL default '',
  `context` varchar(100) default NULL,
  `mailbox` varchar(100) default NULL,
  `channel` varchar(200) default '',
  `queuechannel` text,
  `originatechannel` varchar(200) default '',
  `customastdb` varchar(50) default '',
  `spyoptions` varchar(100) default '',
  `external` varchar(100) default '',
  `tags` varchar(255) default '',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `devname` (`device`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

CREATE TABLE IF NOT EXISTS `fop2contexts` (
  `id` int(11) NOT NULL auto_increment,
  `context` varchar(50) default NULL,
  `name` varchar(100) default NULL,
  `exclude` int(2) NOT NULL default '0',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `ctx` (`context`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `fop2GroupButton` (
  `id` int(11) NOT NULL auto_increment,
  `group_name` varchar(50) default NULL,
  `id_button` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=25 ;

CREATE TABLE IF NOT EXISTS `fop2groups` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(50) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `fop2PermGroup` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(30) default NULL,
  `id_group` int(11) default NULL,
  `name_group` varchar(100) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `fop2permissions` (
  `id` int(11) NOT NULL auto_increment,
  `context_id` int(11) default NULL,
  `name` varchar(30) default NULL,
  `permissions` varchar(200) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `fop2plugins` (
  `id` int(11) NOT NULL auto_increment,
  `rawname` varchar(50) default NULL,
  `name` varchar(100) default NULL,
  `version` varchar(10) default NULL,
  `description` tinytext,
  `global` int(11) default '0',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `rname` (`rawname`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

CREATE TABLE IF NOT EXISTS `fop2recordings` (
  `id` int(11) NOT NULL auto_increment,
  `uniqueid` varchar(50) default NULL,
  `datetime` datetime default NULL,
  `ownerextension` varchar(20) default NULL,
  `targetextension` varchar(20) default NULL,
  `filename` tinytext,
  `duration` int(11) default '0',
  `context` varchar(200) default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `uni` (`uniqueid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `fop2settings` (
  `id` int(11) NOT NULL auto_increment,
  `keyword` varchar(250) NOT NULL,
  `value` text NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `kw` (`keyword`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;

CREATE TABLE IF NOT EXISTS `fop2templates` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(30) default NULL,
  `permissions` varchar(200) default NULL,
  `groups` varchar(200) default NULL,
  `isdefault` int(6) default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `fop2UserContext` (
  `id_user` int(11) NOT NULL,
  `id_context` int(11) default NULL,
  PRIMARY KEY  (`id_user`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `fop2UserGroup` (
  `id` int(11) NOT NULL auto_increment,
  `exten` varchar(30) NOT NULL,
  `id_group` int(11) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `uni` (`exten`,`id_group`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `fop2UserPlugin` (
  `id` int(11) NOT NULL auto_increment,
  `context_id` int(11) NOT NULL,
  `exten` varchar(30) default NULL,
  `id_plugin` varchar(50) default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `uni` (`exten`,`id_plugin`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `fop2users` (
  `id` int(11) NOT NULL auto_increment,
  `context_id` int(11) NOT NULL,
  `exten` varchar(30) NOT NULL,
  `secret` varchar(20) NOT NULL,
  `permissions` varchar(200) default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `extctx` (`exten`,`context_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `fop2UserTemplate` (
  `id` int(11) NOT NULL auto_increment,
  `context_id` int(11) NOT NULL,
  `exten` varchar(30) NOT NULL,
  `id_template` int(11) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `uni` (`exten`,`id_template`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

ออกจากพร้อมท์ mysql> พิมพ์ exit

3. สร้างไฟล์เพิ่ม
โค้ด: เลือกทั้งหมด
touch /var/www/html/fop2/fop2-variablesGENERAL.txt
chown asterisk:asterisk /var/www/html/fop2/fop2-variablesGENERAL.txt


4. รีสตาร์ท FOP2
โค้ด: เลือกทั้งหมด
service fop2 stop
service fop2 start


5. เช็คว่า FOP2 รันหรือไม่
ถ้ารันจะมีพอร์ต TCP 4445 แบบนี้ ปกติหลังจาก service fop2 start จะใช้เวลานานประมาณ 1 นาทีจึงจะเห็นพอร์ตนี้ แต่บางเครื่องก็โชว์เลย
โค้ด: เลือกทั้งหมด
netstat -ln | grep 4445

ถ้าเห็นแบบนี้แสดงว่า FOP2 รันอยู่
โค้ด: เลือกทั้งหมด
tcp        0      0 0.0.0.0:4445                0.0.0.0:*                   LISTEN     

ถ้าไม่เห็นว่ามีพอร์ต 4445 รันอยู่ ให้ลองสตาร์ท FOP2 ด้วยคำสั่งนี้
โค้ด: เลือกทั้งหมด
service fop2 start


6. ลบ FOP2 User ออกให้หมด แล้วสร้างใหม่
เข้าเมนู PBX -> FOP2 -> FOP2 User
ลบ Users เดิมออกก่อน
รูปภาพ
แล้วสร้างใหม่ครับ ตอนสร้าง FOP2 User ค่าพาสเวอร์ดเป็นอะไรก็ได้ครับ ไม่จำเป็นต้องเหมือนค่า Secret ในเบอร์ Extension

7. รีจิสเตอร์ด้วย Softphone/IP Phone
รูปภาพ

8. ล๊อกอินเข้า FOP2
รูปภาพ

9. หน้าตา FOP2
รูปภาพ

ตัวอย่างการใช้งานครับ
การโทร
สมมติว่าผมจะโทรไปหาเบอร์ 400 ผมก็คลิ๊กที่เบอร์ 400 และกดปุ่มไอคอน Dial จากนั้น Elastix จะโทรเข้ามาที่เบอร์ของผม ผมรับสาย แล้ว Elastix จะโทรไปหาเบอร์ 400 เขารับสาย สนทนากันตามปกติ
การตัดสายของเบอร์อื่น
สมมติว่าเบอร์ 100 กำลังโทรคุยกับเบอร์ 200 ผมต้องการตัดสาย ผมก็คลิ๊กที่เบอร์ 100 หรือ 200 ก็ได้ แล้วกดไอคอน Hangup สายก็จะถูกตัดครับ
การแอบฟังสาย
สมมติว่าเบอร์ 100 กำลังคุยกับเบอร์ 200 ผมอยากรู้ว่าเขาคุยอะไรกัน ผมก็คลิ๊กที่เบอร์ 100 หรือ 200 ก็ได้ จากนั้นคลิ๊กที่ไอคอนรูปหู ซึ่ง Elastix จะโทรหาเบอร์ผมก่อน ผมรับสาย Elastix จะเชื่อมสายผมเข้าไปในแชลแนลที่เบอร์ 100 และ 200 กำลังคุยกัน
** หากมีปัญหากับอุปกรณ์ที่ซื้อมาเองหรือบริการที่ทำขึ้นมาเอง ให้โพสต์ถามในเว็บบอร์ดนี้นะครับ **
** งานเร่งด่วนติดต่อว่าจ้างที่เบอร์ 08-5161-9439 อีเมล์ iamaladin@gmail.com ไลน์ NuizVoip ครับ **
nuiz
Diamond Member
 
โพสต์: 7058
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33

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

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

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

cron