/** * Initialize the fax environment detection * * @return void */ protected function _initFaxEnvDetection() { $this->_relayer->reset(); $this->_relayer->setOptions(array(Streamwide_Engine_Automatic_Signal_Relayer::OPT_PRIORITY => PHP_INT_MAX)); $this->_relayer->setLeftCallLeg($this->_sipCallLeg); $this->_relayer->setRightCallLeg($this->_msCallLeg); $this->_relayer->setEventsList(array(Streamwide_Engine_Events_Event::MOVED, Streamwide_Engine_Events_Event::FAILMOVED, Streamwide_Engine_Events_Event::OKMOVED)); $this->_relayer->addEventListener(Streamwide_Engine_Events_Event::SIGNAL_RELAYED, array('callback' => array($this, 'onFaxEnvDetectionUpdate'))); $this->_relayer->start(); }
/** * Starts the relayer if it is not started * * @return boolean */ protected function _startRelayer() { // Notify filter that is satisfied by an event object that has an OKMOVED signal // and that has a "from" parameter that is an instance of Streamwide_Engine_Media_Server_Call_Leg. // The OKMOVED signal has to have a "direction" parameter with a value that is present in the // _allowedNewDirections property $notifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_NAME, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, Streamwide_Engine_Signal::OKMOVED)->logicalAnd(Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_PARAM, Streamwide_Engine_NotifyFilter_Factory::FILTER_INSTANCE_OF, array('from', 'Streamwide_Engine_Media_Server_Call_Leg')))->logicalAnd(Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_PARAM, Streamwide_Engine_NotifyFilter_Factory::FILTER_IN_ARRAY, array('direction', $this->_allowedNewDirections))); $this->_relayer->addEventListener(Streamwide_Engine_Events_Event::SIGNAL_RELAYED, array('callback' => array($this, 'onSignalRelayed'), 'options' => array('notifyFilter' => $notifyFilter, 'autoRemove' => 'before'))); if (!$this->_relayer->isRunning()) { $started = $this->_relayer->start(); if (!$started) { $this->_relayer->removeEventListener(Streamwide_Engine_Events_Event::SIGNAL_RELAYED, array('callback' => array($this, 'onSignalRelayed'))); return false; } } return true; }
/** * @return boolean */ protected function _startRelayer() { $eventsList = array(array('name' => Streamwide_Engine_Events_Event::TRANSFER, 'source' => Streamwide_Engine_Automatic_Signal_Relayer::SIG_SRC_LEFT), array('name' => Streamwide_Engine_Events_Event::TRFINFO, 'source' => Streamwide_Engine_Automatic_Signal_Relayer::SIG_SRC_RIGHT), array('name' => Streamwide_Engine_Events_Event::OKTRANSFER, 'source' => Streamwide_Engine_Automatic_Signal_Relayer::SIG_SRC_RIGHT), array('name' => Streamwide_Engine_Events_Event::FAILTRANSFER, 'source' => Streamwide_Engine_Automatic_Signal_Relayer::SIG_SRC_RIGHT)); $this->_relayer->reset(); $this->_relayer->setLeftCallLeg($this->_leftCallLeg); $this->_relayer->setRightCallLeg($this->_rightCallLeg); $this->_relayer->setEventsList($eventsList); $this->_relayer->addEventListener(Streamwide_Engine_Events_Event::SIGNAL_RELAYED, array('callback' => array($this, 'onSignalRelayed'))); $this->_relayer->addEventListener(Streamwide_Engine_Events_Event::ERROR, array('callback' => array($this, 'onRelayerError'), 'options' => array('autoRemove' => 'before'))); if (!$this->_relayer->start()) { $this->_relayer->reset(); $this->dispatchErrorEvent(self::RELAYER_START_ERR_CODE); return false; } return true; }