
FreePBXã¯ãã¢ã¹ã¿ãªã¹ã¯ããŒã¹ã®ãµãŒããŒãæ§æããããã®æãäžè¬çãªWebã€ã³ã¿ãŒãã§ã€ã¹ã§ãã FreePBXã¯ãæè»ãªã¢ãžã¥ã©ãŒã·ã¹ãã ã§ãã ã¹ããŒã·ã§ã³ããã¥ãŒãã³ã°ããããã®è±å¯ãªæ©èœãæäŸããŸãã æè¯ã®éšåã¯ããªãŒãã³ãœãŒã¹ãããžã§ã¯ãã§ãã
å®éã«ã¯ãFreePBXã®äžè¬çãªæ©èœã§ã¯äžååãªåºæã®åé¡ã解決ããå¿
èŠããã°ãã°ãããŸãã
èšäºã®äžéšãšããŠãè¿œå ã¢ãžã¥ãŒã«ã®æ©èœãæ¡åŒµããå¯èœæ§ã«ã€ããŠèª¬æããŸãã
æ°ããã¢ãžã¥ãŒã«ãéçºããããã»ã¹ã説æããŸã...
ã¢ãžã¥ãŒã«éçºã¯ãã€å¿
èŠã§ããïŒ
è€è£œããã補å -åãPBXãããã€ãç¶æããå¿
èŠããããå€ãã®äººãåãæ©èœãå¿
èŠãšããå Žåã äŸïŒã³ãŒã«ããã¯ãBitrixãã£ãããšã®çµ±åïŒ
ã»ããã¢ããã®å®¹æã -ã¢ãžã¥ãŒã«ã®èªã¿èŸŒã¿ã¯ãèšå®ãæåã§ç·šéãããããç°¡åã§é«éã§ãã äžåºŠããžãã¯ãé
眮ããã°ããã®åŸã®åã€ã³ã¹ããŒã«ã«ãããæéã¯çããªããŸãã
ãšã©ãŒã®å¯èœæ§ãæžãããŸã -éåžžããã¹ããã³ãã§åºæ¬èšå®ãè¡ããŸããæ¬çªç°å¢ã«ç§»è¡ãããšããäŸåé¢ä¿ã®åé¡ãçºçããå¯èœæ§ããããŸãã å¿
èŠãªãã¹ãŠã®ãã¡ã€ã«ãã¢ãžã¥ãŒã«ã«å
¥ããŠãã€ã³ã¹ããŒã«ã§ããŸãã
倧ããªæ©äŒ -ã¢ãžã¥ãŒã«ã®éçºã«ãããPBXãããæè»ã«/现ããæ§æã§ããŸããããšãã°ããã€ã¢ãã©ã³ãåå®çŸ©ããããæ¢åã®åç·ã«åªå
é äœçªå·ãŸã§ç¬èªã®åç·ãè¿œå ãããã§ããŸãã
ã¢ã¹ã¿ãªã¹ã¯ã¯ãŒã¯ãããŒ-FreePBX-DB

ã¢ã¹ã¿ãªã¹ã¯ã¯ãããŒã¿ããŒã¹ã䜿çšããŠé話履æŽãä¿åã§ããŸãã
FreePBX-ããŒã¿ããŒã¹ãšå¯Ÿè©±ããèšå®ãä¿åããã³åä¿¡ããŸãã FreePBXã¢ãžã¥ãŒã«ã¯ããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããŠãé話履æŽãåæã§ããŸãã
FreePBXã®æ©èœã®1ã€ã¯ãæ§æãã¡ã€ã«ã®äœæãšAsterisk AGIã¹ã¯ãªããã®é
ä¿¡ã§ãã FreePBXã¯ãã¢ã¹ã¿ãªã¹ã¯ã·ã¹ãã ãã£ã¬ã¯ããªã«é¢ãããã¹ãŠãèªèããŠãããã¢ã¹ã¿ãªã¹ã¯ã管çã§ããŸãã
FreePBX-ã¢ãžã¥ã©ãŒã·ã¹ãã

FreePBXã®åºç€ã¯ãã FreePBXãã¬ãŒã ã¯ãŒã¯ ãã¢ãžã¥ãŒã«ïŒä»¥äžãåã«ãã¬ãŒã ã¯ãŒã¯ãšåŒã³ãŸãïŒã§ãã ã³ã¢ã¯ãä»ã®ã¢ãžã¥ãŒã«ãå¶åŸ¡ããã¢ãžã¥ãŒã«ã§ãã ãã¬ãŒã ã¯ãŒã¯ã¯ãåºæ¬çãªWebã€ã³ã¿ãŒãã§ã€ã¹ãæäŸããŸãã
- ãã°ã€ã³ãŠã£ã³ããŠ
- ã¡ã€ã³ã¡ãã¥ãŒ
- ã¢ãžã¥ãŒã«ç®¡çããŒãž

åã¢ãžã¥ãŒã«ã¯ãFreePBXã®æ©èœãæ¡åŒµã§ããŸããããšãã°ãæ§æã®è¿œå ãWebã€ã³ã¿ãŒãã§ã€ã¹ã®æ¡åŒµãªã©ã§ãã
ãã¹ãŠã®ã¢ãžã¥ãŒã«ã¯ãã¬ãŒã ã¯ãŒã¯ã«å€§ããäŸåããŠãããä»ã®ã¢ãžã¥ãŒã«ã«ãŸã£ããäŸåããªãå ŽåããããŸãã ã¢ãžã¥ãŒã«ã®äŸïŒ
- ã³ã¢ - ããã©ã³ã¯ã/ãã€ã³ããæäŸããŸãã routâ /â Outã routãããã³æ©èœçãªãApplicationã-ãExtensionsã ã
- IVR-é³å£°ã¡ãã¥ãŒæ©èœãæäŸ
- ãã¥ãŒ -ãã¥ãŒé¢æ°ãªã©ãåŒã³åºããŸã
FreePBXèšå®ã®ä¿å
FreePBXèšå®ã§äœããå€æŽãããšãã Apply Config ããã¿ã³ã衚瀺ãããŸãã 次ã®å³ã¯ãæ§æãã¡ã€ã«ãçæããããã»ã¹ã瀺ããŠããŸãã

ãã¬ãŒã ã¯ãŒã¯ã¢ãžã¥ãŒã«ãæåã«å§ãŸããŸã
- èšå®ãããŒã¿ããŒã¹ã«ä¿åããŸã
- extensions.confãextensions_additional.confãªã©ã®åºæ¬çãªæ§æãäœæããŸãã
ããã«ããã¬ãŒã ã¯ãŒã¯ã¯ã ã³ã¢ã¢ãžã¥ãŒã«ãªã©ã®è¿œå ã¢ãžã¥ãŒã«ãæããŸã
- ãã¬ãŒã ã¯ãŒã¯ã¢ãžã¥ãŒã«ã®æ©èœã䜿çšãã extensions_additional.confãã¡ã€ã«ããã®ãã€ã€ã«ãã©ã³ã§æ¡åŒµããŸã
- sip_additional.conf ã res_odbc_additional.confããã³ãã®ä»ã®ãã¡ã€ã«ãäœæããŸã
éçºè
ãšããŠãã¢ãžã¥ãŒã«ãè¿œå ã§ããŸã
- ãã¬ãŒã ã¯ãŒã¯é¢æ°ã䜿çšããŠã extensions_additional.confãçæããŸã
- ä»ã®ã¢ãžã¥ãŒã«ã®æ©èœãããšãã°ã³ã¢ã䜿çšããŠããã®ã¢ãžã¥ãŒã«ã®æ§æãç·šéããŸãïŒ sip_additional.conf ãres_odbc_additional.conf
- ç¬èªã®æ§æãã¡ã€ã«ãäœæãã
- AGIã¹ã¯ãªããã䜿çšãã
- Webã€ã³ã¿ãŒãã§ã€ã¹ãããŒãžãŸãã¯Webã€ã³ã¿ãŒãã§ã€ã¹ã§æ¡åŒµããŸã
ã¢ãžã¥ãŒã«æ§é
module.xml
ãã®ãã¡ã€ã«ã«ã¯ãã¢ãžã¥ãŒã«ã®åºæ¬çãªããããã£ãèšè¿°ãããŠããŸãã
æãéèŠãªããããã£ïŒ
- ã Rawname ã-ã¢ãžã¥ãŒã«ã®äžæã®ååãç¹æ®æåãå«ããããšã¯ã§ããŸãã
- ã åå ã-ã ã¢ãžã¥ãŒã«ç®¡çè
ãã«è¡šç€ºãããã¢ãžã¥ãŒã«ã®è¡šçŸã«ã¯ãç¹æ®æåãå«ããªãã§ãã ãã
- â ããŒãžã§ã³ â-ã¢ãžã¥ãŒã«ããŒãžã§ã³
- ãã«ããŽãªãŒã-ã¡ã€ã³ã¡ãã¥ãŒã®ã«ããŽãªãŒ
- ã Menuitems ã-ã¡ãã¥ãŒå
ã®ã¢ãžã¥ãŒã«ã®ãã¬ãŒã³ããŒã·ã§ã³ã«ã¯ãããŒãžåãå®çŸ©ããã¿ã°ã menuitems ããå«ãŸããå ŽåããããŸã
- ã Depends ã-ã¡ã€ã³ã¢ãžã¥ãŒã«ã®äŸåé¢ä¿
ãã¡ã€ã«æ§é ã®è©³çŽ°ã¯ã ããã¥ã¡ã³ãã«èšèŒãããŠããŸã ã
ãã¡ã€ã«ã®äŸã以äžã«ç€ºããŸãã
<module> <rawname>pt1ctraining</rawname> <name>AA Training module</name> <version>2.11.0.6</version> <publisher>telefon1c.ru</publisher> <license>GPLv3+</license> <licenselink>http://www.gnu.org/licenses/gpl-3.0.txt</licenselink> <category>Applications</category> <menuitems> <pt1ctraining>AA Training module (MIKO LCC)</pt1ctraining> </menuitems> <changelog> *2.11.0.6* </changelog> <depends> <phpversion>5.3.3</phpversion> <module>pt1c ge 2.11.3.18</module> </depends> </module>
install.php
ãã®ãã¡ã€ã«ã«ã¯ãã¢ãžã¥ãŒã«ã®ã€ã³ã¹ããŒã«æé ãèšèŒãããŠããŸãã
ãã®ã¹ã¯ãªããã§ã¯ããã°ããŒãã«ãªãFreePBXå€æ°ã«ã¢ã¯ã»ã¹ã§ããŸãã
$ dbå€æ°ã䜿çšãããšãFreePBXããŒã¿ããŒã¹ãšå¯Ÿè©±ã§ããŸãã
ã¢ãžã¥ãŒã«èšå®ãä¿åããããŒãã«ãäœæããäŸïŒ
out(" ."); global $db; $sql = "CREATE TABLE IF NOT EXISTS pt1ctraining ( id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, pt1ctraining_id INTEGER NOT NULL, description VARCHAR( 150 ), destination VARCHAR( 50 ), content_app text NOT NULL, path_to_php_agi VARCHAR( 50 ) );"; $check = $db->query($sql); if (DB::IsError($check)) { die_freepbx( "Can not create `pt1ctraining` table: " . $check->getMessage() . "\n"); }
ããŒã¿ããŒã¹æ¥ç¶ãã©ã¡ãŒã¿ãŒãæå®ããå¿
èŠããªãããšã«æ³šæããŠãã ããã
å€æ°$ amp_confã«ã¯ã FreePBXæ§æãã©ã¡ãŒã¿ãŒïŒéåžžã¯/etc/freepbx.confããã³/etc/amportal.confã§å®çŸ©ãããŠããŸãïŒãå«ãŸããŠããŸãã 䜿çšäŸïŒ
global $amp_conf; out("AMPDBENGINET: " + $amp_conf["AMPDBENGINE"]);
outïŒïŒé¢æ°ã䜿çšãããšãã¢ãžã¥ãŒã«ã®ã€ã³ã¹ããŒã«ã«é¢ããæ
å ±ãã¡ãã»ãŒãžãŠã£ã³ããŠã«è¡šç€ºã§ããŸãã

ã èšå®-詳现èšå® ãã»ã¯ã·ã§ã³ã«èšå®ãè¿œå ããäŸïŒ

$freepbx_conf =& freepbx_conf::create(); if (!$freepbx_conf->conf_setting_exists('pt1ctraining_test')) { $set = array(); $set['value'] = 'all'; $set['defaultval'] = &$set['value']; $set['readonly'] = 0; $set['hidden'] = 0; $set['level'] = 3; $set['module'] = 'pt1ctraining'; $set['category'] = 'AA Test Module'; $set['emptyok'] = 0; $set['sortorder'] = 11; $set['name'] = 'Test settings.'; $set['description'] = 'Description test settings.'; $set['type'] = CONF_TYPE_TEXT; $freepbx_conf->define_conf_setting('pt1ctraining_test',$set,true); }
ãã£ã¬ã¯ããªãªã©ãšagi-bin
ã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ãããšããã£ã¬ã¯ããªã®å
容ã察å¿ããã¢ã¹ã¿ãªã¹ã¯ãã£ã¬ã¯ããªã«ã³ããŒãããŸãã

Uninstall.php
ãã®ã¹ã¯ãªããã¯ãã¢ãžã¥ãŒã«ãåé€ããæ¹æ³ã説æããŠããŸãã èªåã§æé€ããŸãã
<?php if (!defined('FREEPBX_IS_AUTH')) { die('No direct script access allowed'); } sql('DROP TABLE pt1ctraining'); ?>
äžèšã®äŸã§ã¯ãã sql ããšããååã®ã°ããŒãã«é¢æ°ã䜿çšããäŸã説æããŠããŸãã åŒæ°ãšããŠãã¯ãšãªãã¹ããæž¡ããŠããŒãã«ãåé€ããŸãã
ããã«ããŠãŒã¶ãŒãæ¿èªãããŠãããã©ããã«é¢ä¿ãªããã definedïŒ 'FREEPBX_IS_AUTH'ïŒ ããšããèå³æ·±ãåŒã³åºãã䜿çšãããŸãã ãã¹ãŠã®phpã¹ã¯ãªããã«äœ¿çšããããšããå§ãããŸãã
index.phpãšããååã®ãã¹ãŠã®ã¹ã¯ãªãããšãã¡ã€ã«ã¯WebãµãŒããŒã«å
¬éãããå€éšããã¢ã¯ã»ã¹ãããŸãã
ãŠãŒã¶ãŒãèªèšŒãªãã§ã¹ã¯ãªããã«ã¢ã¯ã»ã¹ããããšãããšãã çŽæ¥ã®ã¹ã¯ãªããã¢ã¯ã»ã¹ã¯èš±å¯ãããŠããŸãã ããšããéç¥ãåãåããŸã ã

ã¢ãžã¥ãŒã«ã®äžå¿-functions.inc.php
ãã®ãã¡ã€ã«ã§ã¯ãã¢ãžã¥ãŒã«ã®æ©èœãäž»èŠãªæ©èœãå®è£
ããŸãã
- ç¬èªã®æ§æãã¡ã€ã«ãäœæãã
- å®å
ãªãã·ã§ã³ãè¿œå
- ä»ã®ã¢ãžã¥ãŒã«ã®æ©èœã䜿çšãã
- ãã¡ã€ã«extensions_additional.confãªã©ãç·šéããŸã
functions.inc.phpã§ã¯ãèšå®ãçæãããšãã«ãã¬ãŒã ã¯ãŒã¯ã¢ãžã¥ãŒã«ã«ãã£ãŠåŒã³åºããããã㯠é¢æ°ãå®çŸ©ã§ããŸãã
ãã®ãããªé¢æ°ã¯ãé垞次ã®ããã«åŒã°ããŸãã
function ModuleName_FunctionName($engine) {
å®é¢æ°ã®äŸ
extensions_additional.confã§ãã€ã€ã«ãã©ã³ãå®çŸ©ãã
function pt1ctraining_get_config($engine) { global $ext; switch ($engine) { case 'asterisk': // . $context = 'ext-pt1ctraining'; $exten = '_X!'; $ext->add($context, $exten, '', new ext_agi('pt1ctraining_AGI.php')); $ext->add($context, $exten, '', new ext_hangup('')); } }
get_configé¢æ°ã¯ãæ§æãã¡ã€ã«ã®äœææãã æ§æã®é©çšããã¿ã³ãã¯ãªãã¯ããããšãã«åŒã³åºãããŸãã
æååã $ engine ã- ãšã³ãžã³ã®ååãéåžžã¯ãã¢ã¹ã¿ãªã¹ã¯ãããã©ã¡ãŒã¿ãŒãšããŠæž¡ãããŸãã
ãã€ã€ã«ãã©ã³ãäœæããããã«ã æ¡åŒµã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãå«ãã°ããŒãã«å€æ°$ extã䜿çšããŸãããã¯ã©ã¹ã¯/var/www/html/admin/libraries/extensions.class.phpãã¡ã€ã«ã§å®çŸ©ããã ãã€ã€ã«ãã©ã³ãçæããããã®ããŒã«ã»ãããæäŸããŸãã
äœæ¥ã®çµæã¯extensions_additional.confã«è¿œå ãããŸãïŒ
[ext-pt1ctraining] exten => _X!,1,AGI(pt1ctraining_AGI.php) exten => _X!,n,Hangup
ext_agiã¯ã©ã¹ãšext_hangupã¯ã©ã¹ãextensions.class.phpã§å®çŸ©ãããŠããŸãã
extensions_additional.confãã¡ã€ã«ã[[globals]âã»ã¯ã·ã§ã³ã«è¿œå ããäŸ
global $ext; // "global" $ext->addGlobal('PT1C_TR', 'test'); $ext->addGlobal("#include extension_add_pt1c.conf"."\n;", '\n');
ä»äºã®çµæïŒ
[globals] CFDEVSTATE = TRUE CAMPONTOGGLE = *84 DNDDEVSTATE = TRUE FMDEVSTATE = TRUE PT1C_TR = test #include extension_add_pt1c.conf ; = \n QUEDEVSTATE = TRUE
æ¹è¡ã®åœ¢ã§ããªãã¯ã䜿çšããŠè¿œå ã®ãã¡ã€ã«ãæ¥ç¶ããŸãã-ä»ã®è§£æ±ºçã¯ãŸã ãããŸããã
ã 詳现èšå® ãã®èšå®ã䜿çšããŸã

FreePBXã®ã°ããŒãã«èšå®ãååŸããŸãã
$freepbx_conf =& freepbx_conf::create(); $pt1c_events = $freepbx_conf->get_conf_setting('pt1ctraining_test',true); // dialplan $ext->add('ext-pt1ctraining-test', '_X!', '', new ext_noop("$pt1c_events")); $ext->add('ext-pt1ctraining-test', '_X!', '', new ext_hangup(''));
extensions_additional.confãã¡ã€ã«ã®çµæïŒ
[ext-pt1ctraining-test] exten => _X!,1,Noop(Privet!!!) exten => _X!,n,Hangup
res_odbc_additional.confã®ç·šé
ã³ã¢ã¢ãžã¥ãŒã«æ©èœã䜿çšããŸãã
global $core_conf, $amp_conf; $section = 'PT1C_asteriskcdrdb'; $core_conf->addResOdbc($section, array('enabled' => 'yes')); $core_conf->addResOdbc($section, array('dsn' => 'MySQL-asteriskcdrdb')); $core_conf->addResOdbc($section, array('pooling' => 'no')); $core_conf->addResOdbc($section, array('limit' => '1')); $core_conf->addResOdbc($section, array('pre-connect' => 'yes')); $core_conf->addResOdbc($section, array('username' => $amp_conf['AMPDBUSER'])); $core_conf->addResOdbc($section, array('password' => $amp_conf['AMPDBPASS']));
res_odbc_additional.confã®äœæ¥çµæïŒ
[PT1C_asteriskcdrdb] enabled=>yes dsn=>MySQL-asteriskcdrdb pooling=>no limit=>1 pre-connect=>yes username=>freepbxuser password=>d52d251931c2
ç¬èªã®æ§æãäœæãã
ç¬èªã®æ§æãã¡ã€ã«ãäœæããå¿
èŠãããå ŽåããããŸãã
ãããã®ç®çã®ããã«ãã ModuleName_conf ããšããååã®ã¯ã©ã¹ãå®çŸ©ããå¿
èŠããããŸãã ã¯ã©ã¹ã®äŸã以äžã«ç€ºããŸãã
// . class pt1ctraining_conf { function get_filename() { $files = array( 'extension_additional_pt1ctraining.conf', ); return $files; } function generateConf($file) { switch ($file) { case 'extension_additional_pt1ctraining.conf': return $this->generate_conf(); break; } } function generate_conf() { $output = "[test] ; row 1 \n; Privet"; return $output; } }
get_filenameã¡ãœããã¯ãäœæããããã¡ã€ã«ã®é
åãè¿ããŸãã
generateConfã¡ãœããã¯ããã©ã¡ãŒã¿ãŒãšããŠãã¡ã€ã«åãåãããã®ãã¡ã€ã«ã®ããã¹ãã³ã³ãã³ããè¿ããŸãã
ç®çå°ãå®çŸ©ãã

FreePBXã§äœæ¥ãããã¹ãŠã®äººãSet Destinationãã£ãŒã«ããèŠãŸããã åã¢ãžã¥ãŒã«ã¯ãç¬èªã®å®å
ãã€ã³ããè¿œå ã§ããŸãã ãããè¡ãã«ã¯ã2ã€ã®æé ãå®çŸ©ããå¿
èŠããããŸãã
// destination. // function pt1ctraining_getdest($exten) { return array('pt1ctraining,'.$exten.',1'); } // "application" . // function pt1ctraining_destinations() { $extens[] = array('destination' => 'ext-pt1ctraining,${EXTEN},1' , 'description' => 'IVR'); $extens[] = array('destination' => 'ext-pt1ctraining_2,${EXTEN},1', 'description' => 'IVR_2'); $extens[] = array('destination' => 'ext-pt1ctraining_3,${EXTEN},1', 'description' => 'IVR_3'); return $extens; }
pt1ctraining_getdesté¢æ°ã¯ã1ã€ã®æµåºå€ãæã€é
åãè¿ãå¿
èŠããããŸãã 圢åŒã¯ã arrayïŒ 'ModuleNameã'ã$ Extenã 'ã1'ïŒ ãã§ã
pt1ctraining_destinationsé¢æ°ã¯ãå®å
ãã€ã³ããæã€é
åãè¿ãå¿
èŠããããŸãã
é
åã®åèŠçŽ ã¯ã2ã€ã®ããŒãæã€é£æ³é
åã§ãã
' Destination' -Gotoäºæãã©ã¡ãŒã¿ãŒãå«ãŸããŠããŸããå°æ¥çã«ã¯ãGotoã䜿çšããŠãã€ã€ã«ãã©ã³ã§ãªãã€ã¬ã¯ããå®è¡ãããŸã
' Description 'ã«ã¯ãå®å
ãã€ã³ãã®ååãå«ãŸããŸããããã¯ãå€ããŠãŒã¶ãŒã«æ瀺ãããæ¹æ³ã§ãã
ã¢ãžã¥ãŒã«ããŒãž
ã¢ãžã¥ãŒã«ã®ãã£ã¬ã¯ããªã§ã¯ãã page.ModuleName.php ããšãã圢åŒã®ååã®ãã¡ã€ã«ãããã€ã§ãå®çŸ©ã§ããŸãïŒäŸïŒã page.pt1ctraining.php ãïŒã
ãããã®ãã¡ã€ã«ã§ã¯ããŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³çšã®htmlãã©ãŒã ãå®çŸ©ã§ããŸãã
Webã€ã³ã¿ãŒãã§ãŒã¹ãããŒãžã®ååšãã åŠç¿ ãããã«ã¯ãã menuitems ãã¿ã°å
ã®ã module.xml ããã¡ã€ã«å
ã®ããŒãžèå¥åããããŒãžåã¿ã°ãšãšãã«ãã€ã³ãããå¿
èŠããããŸãã
<menuitems> <pt1ctraining>AA Training module (MIKO LCC)</pt1ctraining> </menuitems>
ããŒãžã®äŸ
<form autocomplete="off" name="edit" action="<?php $_SERVER['PHP_SELF'] ?>" method="post" onsubmit="return edit_onsubmit();"> <input type="hidden" name="itemid" value="<?php echo $itemid?>"> <input type="hidden" name="action" value="<?php echo ($itemid ? 'edit' : 'add') ?>"> <table> <tr><td colspan="4"><h5> <hr></h5></td></tr> <tr> <td><a href="#" class="info"><span> </span></a></td> <td><input type="text" name="description" class="" value="<?php echo($thisItem['description']); ?>"></td> </tr> <tr> <td><a href="#" class="info">Dialplan:<span>Text dialplan application.</span></a></td> <td><textarea name="content_app" cols=50 rows=5><?php echo($thisItem['content_app']); ?></textarea></td> </tr> </table> </form>
ã¢ãžã¥ãŒã«ã®çµã¿ç«ãŠ
ããã§ã¯ãã¹ãŠãç°¡åã§ããã¢ãžã¥ãŒã«ããã±ãŒãžã¯tarã䜿çšããŠå®è¡ããå¿
èŠããããŸãã
tar -czf pt1ctraining âpt1ctraining-2.11.0.6.tgz";
ã¢ãžã¥ãŒã«ãFreePBX 12+çšã«æºåãããŠããå Žåã¯ãéçºè
ã®ããžã¿ã«çœ²åã䜿çšããŠã¢ãžã¥ãŒã«ã«çœ²åããããšããå§ãããŸã ã詳现ã¯å
¬åŒããã¥ã¡ã³ãã«èšèŒãããŠããŸã ã
devtoolsãŠãŒãã£ãªãã£ããã±ãŒãžã䜿çšããŠã¢ãžã¥ãŒã«ã«çœ²åã§ããŸã ã
sign.php pt1ctraining "KEY"
ããã§ãã pt1ctraining ãã¯ã¢ãžã¥ãŒã«ã®ãããã£ã¬ã¯ããªã§ãã
ãããã«
FreePBXã¯èå³æ·±ããã©ãããã©ãŒã ã§ãã PBXãã»ããã¢ããããããã®åºç¯ãªæ©èœãæäŸããŸãã
FreePBXã®æ©èœãååã§ãªãå Žåã¯ãè¿œå ã®ã¢ãžã¥ãŒã«ã䜿çšããŠæ©èœã»ãããæ¡åŒµã§ããŸãã
ç¬èªã®ã¢ãžã¥ãŒã«ã䜿çšãããšãPBXãããã«çŽ°ãã調æŽã§ããŸãã
- ãã€ã€ã«ãã©ã³ãè¿œå ãã
- extensions_additional.confãªã©ã®æ¢åã®æ§æã®è¿œå
- æ°ããæ§æãã¡ã€ã«ãè¿œå ãã
- ä»ã®ã¢ãžã¥ãŒã«ã«ãã£ãŠäœæããããã€ã€ã«ãã©ã³ã®ç·šé
ç¥èã®ãœãŒã¹ãšããŠäœ¿çšããããšããå§ãããŸãã