/** * Executa a ação * * @param Asterisk_AGI $asterisk * @param Asterisk_AGI_Request $request */ public function execute($asterisk, $request) { $log = Zend_Registry::get('log'); $i18n = $this->i18n; $num = isset($this->config['type']) && $this->config['type'] == 'src' ? $request->origem : $request->destino; // Cortando numero if (isset($this->config['cut']) && $this->config['cut'] == 'pipecut') { if (!is_null($this->getRule())) { $expr = $this->config['type'] == 'src' ? $this->getRule()->getValidSrcExpr($num) : $this->getRule()->getValidDstExpr($num); if ($expr['type'] == 'RX') { // Removendo da contagem caracteres de controle e instrução $normalized_string = str_replace("_", "", $expr['value']); // Normalizando [123-8] e similares para um unico caractere $normalized_string = preg_replace("/\\[[0-9\\-]*\\]/", "#", $normalized_string); /* Nesse ponto uma expressão: * _0XX|[2-9]XX[23]. * Deve ser: * 0XX|#XX#. */ $cut_point = strpos($normalized_string, "|"); if ($cut_point > 0) { // caso haja algo para cortar // Cortando $num = substr($num, $cut_point); } } else { if ($expr['type'] == "AL") { $aliases = PBX_ExpressionAliases::getInstance(); $expression = $aliases->get((int) $expr['value']); $regular_expression = new PBX_Asterisk_Expression(); $found = null; foreach ($expression["expressions"] as $expr_value) { $regular_expression->setExpression($expr_value); if ($regular_expression->match($num)) { $found = $expr_value; break; } } // Removendo da contagem caracteres de controle e instrução $normalized_string = str_replace("_", "", $found); // Normalizando [123-8] e similares para um unico caractere $normalized_string = preg_replace("/\\[[0-9\\-]*\\]/", "#", $normalized_string); /* Nesse ponto uma expressão: * _0XX|[2-9]XX[23]. * Deve ser: * 0XX|#XX#. */ $cut_point = strpos($normalized_string, "|"); if ($cut_point > 0) { // caso haja algo para cortar // Cortando $num = substr($num, $cut_point); } } } } } // Adicionando prefixo if (isset($this->config['prefix'])) { $num = $this->config['prefix'] . $num; } // Adicionando suffixo if (isset($this->config['suffix'])) { $num .= $this->config['suffix']; } // Reescrevendo numero if (isset($this->config['replace']) && $this->config['replace'] != '') { $num = $this->config['replace']; } // Aplicando modificações no callerid/extension do asterisk if (isset($this->config['type']) && $this->config['type'] == 'src') { $log->info(sprintf($i18n->translate("Rewriting source to %s"), $num)); $request->origem = $num; $asterisk->set_callerid($num); } else { $log->info(sprintf($i18n->translate("Rewriting destination to %s"), $num)); $request->destino = $num; $asterisk->set_extension($request->destino); } }
/** * Executa a ação. * @param Asterisk_AGI $asterisk */ public function execute($asterisk, $request) { $log = Zend_Registry::get('log'); $i18n = $this->i18n; if (isset($this->config['origem']) && $this->config['origem']) { $log->info(sprintf($i18n->translate("Restoring source to %s"), $request->getOriginalCallerid())); $request->origem = $request->getOriginalCallerid(); $asterisk->set_callerid($request->origem); } if (isset($this->config['destino']) && $this->config['destino']) { $log->info(sprintf($i18n->translate("Restoring destination to %s"), $request->getOriginalExtension())); $request->destino = $request->getOriginalExtension(); } }