コード例 #1
0
ファイル: v_fifo_add.php プロジェクト: petekelly/fusionpbx
 if (strlen($agent_login_logout_extension_number) > 0) {
     //--------------------------------------------------------
     // Agent Queue [FIFO out]
     //<extension name="Agent_Wait">
     //	<condition field="destination_number" expression="^7010\$">
     //		<action application="set" data="fifo_music=$${hold_music}"/>
     //		<action application="answer"/>
     //		<action application="fifo" data="myq out wait"/>
     //	</condition>
     //</extension>
     //--------------------------------------------------------
     $extensionname = $extension_name . "_agent_login_logout";
     $context = 'default';
     //$opt1name = 'zzz_id';
     //$opt1value = $row['zzz_id'];
     $dialplan_include_id = v_dialplan_includes_add($v_id, $extensionname, $dialplanorder, $context, $enabled, $description, $opt1name, $opt1value);
     if (strlen($dialplan_include_id) > 0) {
         //set the destination number
         $tag = 'condition';
         //condition, action, antiaction
         $fieldtype = 'destination_number';
         $fielddata = '^' . $agent_login_logout_extension_number . '$';
         $fieldorder = '000';
         v_dialplan_includes_details_add($v_id, $dialplan_include_id, $tag, $fieldorder, $fieldtype, $fielddata);
         //set the queue_name
         $tag = 'action';
         //condition, action, antiaction
         $fieldtype = 'set';
         $fielddata = 'queue_name=' . $extension_name . '@\\${domain_name}';
         $fieldorder = '001';
         v_dialplan_includes_details_add($v_id, $dialplan_include_id, $tag, $fieldorder, $fieldtype, $fielddata);
コード例 #2
0
ファイル: lib_switch.php プロジェクト: petekelly/fusionpbx
 function sync_package_v_ivr_menu()
 {
     global $db, $v_id;
     $v_settings_array = v_settings();
     foreach ($v_settings_array as $name => $value) {
         ${$name} = $value;
     }
     //prepare for dialplan .xml files to be written. delete all dialplan files that are prefixed with dialplan_ and have a file extension of .xml
     $v_needle = 'v_';
     if ($dh = opendir($v_conf_dir . "/ivr_menus/")) {
         $files = array();
         while ($file = readdir($dh)) {
             if ($file != "." && $file != ".." && $file[0] != '.') {
                 if (is_dir($dir . "/" . $file)) {
                     //this is a directory
                 } else {
                     if (strpos($file, $v_needle) !== false && substr($file, -4) == '.xml') {
                         //echo "file: $file<br />\n";
                         unlink($v_conf_dir . "/ivr_menus/" . $file);
                     }
                 }
             }
         }
         closedir($dh);
     }
     $sql = "";
     $sql .= " select * from v_ivr_menu ";
     $sql .= " where v_id = '{$v_id}' ";
     if (strlen($orderby) > 0) {
         $sql .= "order by {$orderby} {$order} ";
     }
     $sql .= " ";
     $prepstatement = $db->prepare(check_sql($sql));
     $prepstatement->execute();
     $result = $prepstatement->fetchAll();
     $resultcount = count($result);
     unset($prepstatement, $sql);
     if ($resultcount == 0) {
         //no results
     } else {
         //received results
         foreach ($result as $row) {
             $ivr_menu_id = $row["ivr_menu_id"];
             $ivr_menu_name = $row["ivr_menu_name"];
             $ivr_menu_extension = $row["ivr_menu_extension"];
             $ivr_menu_greet_long = $row["ivr_menu_greet_long"];
             $ivr_menu_greet_short = $row["ivr_menu_greet_short"];
             $ivr_menu_invalid_sound = $row["ivr_menu_invalid_sound"];
             $ivr_menu_exit_sound = $row["ivr_menu_exit_sound"];
             $ivr_menu_confirm_macro = $row["ivr_menu_confirm_macro"];
             $ivr_menu_confirm_key = $row["ivr_menu_confirm_key"];
             $ivr_menu_tts_engine = $row["ivr_menu_tts_engine"];
             $ivr_menu_tts_voice = $row["ivr_menu_tts_voice"];
             $ivr_menu_confirm_attempts = $row["ivr_menu_confirm_attempts"];
             $ivr_menu_timeout = $row["ivr_menu_timeout"];
             $ivr_menu_inter_digit_timeout = $row["ivr_menu_inter_digit_timeout"];
             $ivr_menu_max_failures = $row["ivr_menu_max_failures"];
             $ivr_menu_max_timeouts = $row["ivr_menu_max_timeouts"];
             $ivr_menu_digit_len = $row["ivr_menu_digit_len"];
             $ivr_menu_direct_dial = $row["ivr_menu_direct_dial"];
             $ivr_menu_enabled = $row["ivr_menu_enabled"];
             $ivr_menu_desc = $row["ivr_menu_desc"];
             //replace space with an underscore
             $ivr_menu_name = str_replace(" ", "_", $ivr_menu_name);
             //add each IVR Menu to the dialplan
             if (strlen($row['ivr_menu_id']) > 0) {
                 $action = 'add';
                 //set default action to add
                 $i = 0;
                 $sql = "";
                 $sql .= "select * from v_dialplan_includes ";
                 $sql .= "where v_id = '{$v_id}' ";
                 $sql .= "and opt1name = 'ivr_menu_id' ";
                 $sql .= "and opt1value = '" . $row['ivr_menu_id'] . "' ";
                 $prepstatement2 = $db->prepare($sql);
                 $prepstatement2->execute();
                 while ($row2 = $prepstatement2->fetch()) {
                     $action = 'update';
                     $dialplan_include_id = $row2['dialplan_include_id'];
                     break;
                     //limit to 1 row
                 }
                 unset($sql, $prepstatement2);
                 //echo "sql: ".$sql."<br />";
                 if ($action == 'add') {
                     //create IVR Menu extension in the dialplan
                     $extensionname = $ivr_menu_name;
                     $dialplanorder = '9001';
                     //$context = $row['ivr_menu_context'];
                     $context = 'default';
                     $enabled = 'true';
                     $descr = 'ivr_menu';
                     $opt1name = 'ivr_menu_id';
                     $opt1value = $row['ivr_menu_id'];
                     $dialplan_include_id = v_dialplan_includes_add($v_id, $extensionname, $dialplanorder, $context, $enabled, $descr, $opt1name, $opt1value);
                     $tag = 'condition';
                     //condition, action, antiaction
                     $fieldtype = 'destination_number';
                     $fielddata = '^' . $row['ivr_menu_extension'] . '$';
                     $fieldorder = '000';
                     v_dialplan_includes_details_add($v_id, $dialplan_include_id, $tag, $fieldorder, $fieldtype, $fielddata);
                     $tag = 'action';
                     //condition, action, antiaction
                     $fieldtype = 'answer';
                     $fielddata = '';
                     $fieldorder = '001';
                     v_dialplan_includes_details_add($v_id, $dialplan_include_id, $tag, $fieldorder, $fieldtype, $fielddata);
                     $tag = 'action';
                     //condition, action, antiaction
                     $fieldtype = 'sleep';
                     $fielddata = '2000';
                     $fieldorder = '002';
                     v_dialplan_includes_details_add($v_id, $dialplan_include_id, $tag, $fieldorder, $fieldtype, $fielddata);
                     $tag = 'action';
                     //condition, action, antiaction
                     $fieldtype = 'ivr';
                     $fielddata = $ivr_menu_name;
                     $fieldorder = '003';
                     v_dialplan_includes_details_add($v_id, $dialplan_include_id, $tag, $fieldorder, $fieldtype, $fielddata);
                 }
                 if ($action == 'update') {
                     //update the IVR menu
                     $extensionname = $ivr_menu_name;
                     $dialplanorder = '9001';
                     //$context = $row['ivr_menu_context'];
                     $context = 'default';
                     $enabled = 'true';
                     $descr = 'ivr_menu';
                     $ivr_menu_id = $row['ivr_menu_id'];
                     $sql = "";
                     $sql = "update v_dialplan_includes set ";
                     $sql .= "extensionname = '{$extensionname}', ";
                     $sql .= "dialplanorder = '{$dialplanorder}', ";
                     $sql .= "context = '{$context}', ";
                     $sql .= "enabled = '{$enabled}', ";
                     $sql .= "descr = '{$descr}' ";
                     $sql .= "where v_id = '{$v_id}' ";
                     $sql .= "and opt1name = 'ivr_menu_id' ";
                     $sql .= "and opt1value = '{$ivr_menu_id}' ";
                     //echo "sql: ".$sql."<br />";
                     //exit;
                     $db->query($sql);
                     unset($sql);
                     //update the condition
                     $sql = "";
                     $sql = "update v_dialplan_includes_details set ";
                     $sql .= "fielddata = '^" . $row['ivr_menu_extension'] . "\$' ";
                     $sql .= "where v_id = '{$v_id}' ";
                     $sql .= "and tag = 'condition' ";
                     $sql .= "and fieldtype = 'destination_number' ";
                     $sql .= "and dialplan_include_id = '{$dialplan_include_id}' ";
                     //echo $sql."<br />";
                     //exit;
                     $db->query($sql);
                     unset($sql);
                     //update the action
                     $sql = "";
                     $sql = "update v_dialplan_includes_details set ";
                     $sql .= "fielddata = '" . $ivr_menu_name . "' ";
                     $sql .= "where v_id = '{$v_id}' ";
                     $sql .= "and tag = 'action' ";
                     $sql .= "and fieldtype = 'ivr' ";
                     $sql .= "and dialplan_include_id = '{$dialplan_include_id}' ";
                     //echo $sql."<br />";
                     $db->query($sql);
                     unset($extensionname);
                     unset($order);
                     unset($context);
                     unset($enabled);
                     unset($descr);
                     unset($opt1name);
                     unset($opt1value);
                 }
                 unset($action);
                 unset($dialplanincludeid);
             }
             //end if strlen ivr_menu_id; add the IVR Menu to the dialplan
             //add each IVR menu to the XML config
             $tmp = "\t<!-- {$ivr_menu_desc} -->\n";
             $tmp .= "\t<menu name=\"{$ivr_menu_name}\"\n";
             if (stripos($ivr_menu_greet_long, 'mp3') !== false || stripos($ivr_menu_greet_long, 'wav') !== false) {
                 //found wav or mp3
                 $tmp .= "\t\tgreet-long=\"" . $ivr_menu_greet_long . "\"\n";
             } else {
                 //not found
                 $tmp .= "\t\tgreet-long=\"" . $ivr_menu_greet_long . "\"\n";
             }
             if (stripos($ivr_menu_greet_short, 'mp3') !== false || stripos($ivr_menu_greet_short, 'wav') !== false) {
                 if (strlen($ivr_menu_greet_short) > 0) {
                     $tmp .= "\t\tgreet-short=\"" . $ivr_menu_greet_short . "\"\n";
                 }
             } else {
                 //not found
                 if (strlen($ivr_menu_greet_short) > 0) {
                     $tmp .= "\t\tgreet-short=\"" . $ivr_menu_greet_short . "\"\n";
                 }
             }
             $tmp .= "\t\tinvalid-sound=\"{$ivr_menu_invalid_sound}\"\n";
             $tmp .= "\t\texit-sound=\"{$ivr_menu_exit_sound}\"\n";
             $tmp .= "\t\tconfirm-macro=\"{$ivr_menu_confirm_macro}\"\n";
             $tmp .= "\t\tconfirm-key=\"{$ivr_menu_confirm_key}\"\n";
             $tmp .= "\t\ttts-engine=\"{$ivr_menu_tts_engine}\"\n";
             $tmp .= "\t\ttts-voice=\"{$ivr_menu_tts_voice}\"\n";
             $tmp .= "\t\tconfirm-attempts=\"{$ivr_menu_confirm_attempts}\"\n";
             $tmp .= "\t\ttimeout=\"{$ivr_menu_timeout}\"\n";
             $tmp .= "\t\tinter-digit-timeout=\"{$ivr_menu_inter_digit_timeout}\"\n";
             $tmp .= "\t\tmax-failures=\"{$ivr_menu_max_failures}\"\n";
             $tmp .= "\t\tmax-timeouts=\"{$ivr_menu_max_timeouts}\"\n";
             $tmp .= "\t\tdigit-len=\"{$ivr_menu_digit_len}\">\n";
             $sub_sql = "";
             $sub_sql .= "select * from v_ivr_menu_options ";
             $sub_sql .= "where ivr_menu_id = '{$ivr_menu_id}' ";
             $sub_sql .= "and v_id = '{$v_id}' ";
             $sub_sql .= "order by ivr_menu_options_order asc ";
             $sub_prepstatement = $db->prepare(check_sql($sub_sql));
             $sub_prepstatement->execute();
             $sub_result = $sub_prepstatement->fetchAll();
             foreach ($sub_result as &$sub_row) {
                 //$ivr_menu_id = $sub_row["ivr_menu_id"];
                 $ivr_menu_options_digits = $sub_row["ivr_menu_options_digits"];
                 $ivr_menu_options_action = $sub_row["ivr_menu_options_action"];
                 $ivr_menu_options_param = $sub_row["ivr_menu_options_param"];
                 $ivr_menu_options_desc = $sub_row["ivr_menu_options_desc"];
                 $tmp .= "\t\t<entry action=\"{$ivr_menu_options_action}\" digits=\"{$ivr_menu_options_digits}\" param=\"{$ivr_menu_options_param}\"/>";
                 if (strlen($ivr_menu_options_desc) == 0) {
                     $tmp .= "\n";
                 } else {
                     $tmp .= "\t<!-- {$ivr_menu_options_desc} -->\n";
                 }
             }
             unset($sub_prepstatement, $sub_row);
             if ($ivr_menu_direct_dial == "true") {
                 $tmp .= "\t\t<entry action=\"menu-exec-app\" digits=\"/(^\\*\\d{3,5}\$|^\\d{3,5}\$)/\" param=\"transfer \$1 XML default\"/>\n";
             }
             $tmp .= "\t</menu>";
             //write the file
             $fout = fopen($v_conf_dir . "/ivr_menus/v_" . $ivr_menu_name . ".xml", "w");
             fwrite($fout, $tmp);
             fclose($fout);
         }
     }
     sync_package_v_dialplan_includes();
 }