/** * Add ourselves as a listener to the OK event dispatched by the controller. * We attach with a low priority to let the decorated widget execute its * callback first. We raise the _blockOkSignalRelaying flag in the decorated * widget to prevent relaying of the OK signal to the SIP call leg. * * @return boolean */ public function connect() { // Get a reference to the MS call leg $msCallLeg = $this->_widget->getRightCallLeg(); $controller = $this->getController(); // subscribe to receive a notification when we receive OK from controller $notifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, $msCallLeg->getName()); $controller->addEventListener(Streamwide_Engine_Events_Event::OK, array('callback' => array($this, 'onSignalReceived'), 'options' => array('autoRemove' => 'before', 'priority' => -1, 'notifyFilter' => $notifyFilter))); // do not allow the decorated widget to relay the OK signal $this->_widget->blockOkSignalRelaying(); // call connect on the decorated widget return $this->_widget->connect(); }
/** * Starts the relayer object * * @param Streamwide_Engine_Events_Event $event * @return void */ public function onConnect(Streamwide_Engine_Events_Event $event) { $this->_relayer->setLeftCallLeg($this->_widget->getLeftCallLeg()); $this->_relayer->setRightCallLeg($this->_widget->getRightCallLeg()); if (!$this->_relayer->isRunning()) { $this->_relayer->start(); } // Do we need to treat a MOVED signal? $specification = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_PARAM, Streamwide_Engine_NotifyFilter_Factory::FILTER_INSTANCE_OF, array('moved', 'Streamwide_Engine_Signal')); if ($specification->isSatisfiedBy($event)) { $movedSignal = $event->getParam('moved'); $event = new Streamwide_Engine_Events_Event(Streamwide_Engine_Events_Event::MOVED); $event->setParam('signal', $movedSignal); return $this->_relayer->onSignalReceived($event); } }
/** * @see Engine/Streamwide_Engine_Widget#_subscribeToEngineEvents() */ protected function _subscribeToEngineEvents() { $controller = $this->getController(); $okTransferNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, $this->_sipCallLeg->getName()); $controller->addEventListener(Streamwide_Engine_Events_Event::OKTRANSFER, array('callback' => array($this, 'onTransferSuccess'), 'options' => array('autoRemove' => 'before', 'notifyFilter' => $okTransferNotifyFilter))); $failTransferNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, $this->_sipCallLeg->getName()); $controller->addEventListener(Streamwide_Engine_Events_Event::FAILTRANSFER, array('callback' => array($this, 'onTransferFailure'), 'options' => array('autoRemove' => 'before', 'notifyFilter' => $failTransferNotifyFilter))); $trfInfoNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, $this->_sipCallLeg->getName()); $controller->addEventListener(Streamwide_Engine_Events_Event::TRFINFO, array('callback' => array($this, 'onTransferInfo'), 'options' => array('notifyFilter' => $trfInfoNotifyFilter))); $childNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, $this->_sipCallLeg->getName()); $controller->addEventListener(Streamwide_Engine_Events_Event::CHILD, array('callback' => array($this, 'onCallLegDeath'), 'options' => array('autoRemove' => 'before', 'notifyFilter' => $childNotifyFilter))); }
protected function _subscribeToEngineEvents() { $controller = $this->getController(); $leftCallLeg = $this->getLeftCallLeg(); $rightCallLeg = $this->getRightCallLeg(); foreach ($this->_sdpCarrierEvents as $event) { $notifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_IN_ARRAY, array(array($leftCallLeg->getName(), $rightCallLeg->getName()))); $config = array('callback' => array($this, 'onSignalReceived'), 'options' => array('notifyFilter' => $notifyFilter)); $controller->addEventListener($event, $config); } }
/** * Subscribe to receival of signals FAIL, OK, PROK, RING and PROGRESS from SW Engine * * @return void */ protected function _subscribeToEngineEvents() { $controller = $this->getController(); // Start listen to FAIL signal $failNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, $this->_rightCallLeg->getName()); $controller->addEventListener(Streamwide_Engine_Events_Event::FAIL, array('callback' => array($this, 'onSignalReceived'), 'options' => array('autoRemove' => 'before', 'notifyFilter' => $failNotifyFilter))); // End listen to FAIL signal // Start listen to OK signal $okNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, $this->_rightCallLeg->getName()); $controller->addEventListener(Streamwide_Engine_Events_Event::OK, array('callback' => array($this, 'onSignalReceived'), 'options' => array('autoRemove' => 'before', 'notifyFilter' => $okNotifyFilter))); // End listen to OK signal // Start listen to PROK signal $prokNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, $this->_rightCallLeg->getName()); $controller->addEventListener(Streamwide_Engine_Events_Event::PROK, array('callback' => array($this, 'onSignalReceived'), 'options' => array('autoRemove' => 'before', 'notifyFilter' => $prokNotifyFilter))); // End listen to PROK signal // Start listen to RING signal $ringNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, $this->_rightCallLeg->getName()); $controller->addEventListener(Streamwide_Engine_Events_Event::RING, array('callback' => array($this, 'onSignalReceived'), 'options' => array('notifyFilter' => $ringNotifyFilter))); // End listen to RING signal // Start listen to PROGRESS signal $progressNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, $this->_rightCallLeg->getName()); $controller->addEventListener(Streamwide_Engine_Events_Event::PROGRESS, array('callback' => array($this, 'onSignalReceived'), 'options' => array('notifyFilter' => $progressNotifyFilter))); // End listen to PROGRESS signal // Start listen to CHILD signal $childNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_IN_ARRAY, array(array($this->_leftCallLeg->getName(), $this->_rightCallLeg->getName()))); $controller->addEventListener(Streamwide_Engine_Events_Event::CHILD, array('callback' => array($this, 'onSignalReceived'), 'options' => array('notifyFilter' => $childNotifyFilter))); // End listen to CHILD signal }
/** * @see Engine/NotifyFilter/Streamwide_Engine_NotifyFilter_Factory#instanceOfFilter($class) */ public function instanceOfFilter($param, $class) { return $this->_createFilter($param, parent::instanceOfFilter($class)); }
/** * @see Engine/Streamwide_Engine_Widget#_subscribeToEngineEvents() */ protected function _subscribeToEngineEvents() { // the signal must come from the media server call leg we work with $controller = $this->getController(); // Start listen to OK signal $okNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, $this->_rightCallLeg->getName()); $controller->addEventListener(Streamwide_Engine_Events_Event::OK, array('callback' => array($this, 'onSignalReceived'), 'options' => array('autoRemove' => 'before', 'notifyFilter' => $okNotifyFilter))); // End listen to OK signal // Start listen to FAIL signal $failNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, $this->_rightCallLeg->getName()); $controller->addEventListener(Streamwide_Engine_Events_Event::FAIL, array('callback' => array($this, 'onSignalReceived'), 'options' => array('autoRemove' => 'before', 'notifyFilter' => $failNotifyFilter))); // End listen to FAIL signal // Start listen to CHILD signal $childNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_IN_ARRAY, array(array($this->_leftCallLeg->getName(), $this->_rightCallLeg->getName()))); $controller->addEventListener(Streamwide_Engine_Events_Event::CHILD, array('callback' => array($this, 'onSignalReceived'), 'options' => array('autoRemove' => 'before', 'notifyFilter' => $childNotifyFilter))); // End listen to CHILD signal }
/** * Subscribe to TIMEOUT signal from SW Engine * * @see Engine/Streamwide_Engine_Widget#_subscribeToEngineEvents() * @return void */ protected function _subscribeToEngineEvents() { $controller = $this->getController(); $timeoutNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_PARAM, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, array('reference', $this->_name)); $controller->addEventListener(Streamwide_Engine_Events_Event::TIMEOUT, array('callback' => array($this, 'onTimeout'), 'options' => array('autoRemove' => 'before', 'notifyFilter' => $timeoutNotifyFilter))); }
/** * Listen for a TRANSFER request * * @return void */ protected function _subscribeToEngineEvents() { $controller = $this->getController(); // Start listen to TRANSFER signal $transferNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, $this->_transferSource->getName()); $controller->addEventListener(Streamwide_Engine_Events_Event::TRANSFER, array('callback' => array($this, 'onTransferRequested'), 'options' => array('autoRemove' => 'before', 'notifyFilter' => $transferNotifyFilter))); // End listen to TRANSFER signal }
/** * Subscribe to the EVENT signal * * @see Engine/Streamwide_Engine_Widget#_subscribeToEngineEvents() */ protected function _subscribeToEngineEvents() { $controller = $this->getController(); $eventNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_PARAM, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, array('name', $this->_eventSignalTypeParameter)); $controller->addEventListener(Streamwide_Engine_Events_Event::EVENT, array('callback' => array($this, 'onEvent'), 'options' => array('autoRemove' => 'before', 'notifyFilter' => $eventNotifyFilter))); $childNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, $this->_msCallLeg->getName()); $controller->addEventListener(Streamwide_Engine_Events_Event::CHILD, array('callback' => array($this, 'onCallLegDeath'), 'options' => array('autoRemove' => 'before', 'notifyFilter' => $childNotifyFilter))); }
/** * Subscribe to FAIL, PRSDP/SDP/RING/PROGRESS events * * @return void */ protected function _subscribeToEngineEvents() { $controller = $this->getController(); $controller->addEventListener(Streamwide_Engine_Events_Event::FAIL, array('callback' => array($this, 'onSignalReceived'), 'options' => array('priority' => '1', 'notifyFilter' => Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, $this->_remoteSipCallLeg->getName())))); for ($i = 0, $n = count($this->_provisionalResponses); $i < $n; $i++) { $event = $this->_provisionalResponses[$i]; $controller->addEventListener($event, array('callback' => array($this, 'onSignalReceived'), 'options' => array('autoRemove' => 'before', 'priority' => '1', 'notifyFilter' => Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, $this->_remoteSipCallLeg->getName())))); } }
/** * 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; }
protected function _subscribeToEngineEvents() { $controller = $this->getController(); $notifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, $this->_asrCallLeg->getName()); $config = array('callback' => array($this, 'onWordRecognized'), 'options' => array('notifyFilter' => $notifyFilter)); $controller->addEventListener(Streamwide_Engine_Events_Event::WORD, $config); }
/** * Create the list of engine event listeners * * @param array $eventsList * @return array */ protected function _createEngineEventListenersList(array $eventsList) { $list = array(); for ($i = 0, $n = count($eventsList); $i < $n; $i++) { $event = $eventsList[$i]; $eventName = $event['name']; $allowedSignalSource = $event['source']; $listenerPriority = $event['priority']; $notifyFilterFactoryName = Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE; switch ($allowedSignalSource) { case self::SIG_SRC_LEFT: $notifyFilterType = Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO; $notifyFilterParams = $this->_leftCallLeg->getName(); break; case self::SIG_SRC_RIGHT: $notifyFilterType = Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO; $notifyFilterParams = $this->_rightCallLeg->getName(); break; default: $notifyFilterType = Streamwide_Engine_NotifyFilter_Factory::FILTER_IN_ARRAY; $notifyFilterParams = array(array($this->_leftCallLeg->getName(), $this->_rightCallLeg->getName())); break; } $notifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory($notifyFilterFactoryName, $notifyFilterType, $notifyFilterParams); $list[$eventName] = array('callback' => array($this, 'onSignalReceived'), 'options' => array('notifyFilter' => $notifyFilter, 'priority' => $listenerPriority)); } return $list; }
/** * Subscribe to SDP, CHILD, MOVED, OKMOVED, FAILMOVED events * * @return void */ protected function _subscribeToEngineEvents() { $controller = $this->getController(); // Start listen to SDP signal $sdpNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, $this->_leftCallLeg->getName()); $controller->addEventListener(Streamwide_Engine_Events_Event::SDP, array('callback' => array($this, 'onSignalReceived'), 'options' => array('autoRemove' => 'before', 'notifyFilter' => $sdpNotifyFilter))); // End listen to SDP signal // Start listen to CHILD signal $childNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_IN_ARRAY, array(array($this->_leftCallLeg->getName(), $this->_rightCallLeg->getName()))); $controller->addEventListener(Streamwide_Engine_Events_Event::CHILD, array('callback' => array($this, 'onSignalReceived'), 'options' => array('autoRemove' => 'before', 'notifyFilter' => $childNotifyFilter))); // End listen to CHILD signal // Start listen to OKMOVED signal $okMovedNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_IN_ARRAY, array(array($this->_leftCallLeg->getName(), $this->_rightCallLeg->getName()))); $controller->addEventListener(Streamwide_Engine_Events_Event::OKMOVED, array('callback' => array($this, 'onSignalReceived'), 'options' => array('notifyFilter' => $okMovedNotifyFilter))); // End listen to OKMOVED signal // Start listen to MOVED signal $movedNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, $this->_rightCallLeg->getName()); $controller->addEventListener(Streamwide_Engine_Events_Event::MOVED, array('callback' => array($this, 'onSignalReceived'), 'options' => array('notifyFilter' => $movedNotifyFilter))); // End listen to MOVED signal // Start listen to FAILMOVED signal $failMovedNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_IN_ARRAY, array(array($this->_leftCallLeg->getName(), $this->_rightCallLeg->getName()))); $controller->addEventListener(Streamwide_Engine_Events_Event::FAILMOVED, array('callback' => array($this, 'onSignalReceived'), 'options' => array('autoRemove' => 'before', 'notifyFilter' => $failMovedNotifyFilter))); // End listen to FAILMOVED signal }
/** * Subscribe to engine events (OKMOVED,FAILMOVED,MOVED) * * @return void */ protected function _subscribeToEngineEvents() { $events = array(Streamwide_Engine_Events_Event::MOVED, Streamwide_Engine_Events_Event::OKMOVED, Streamwide_Engine_Events_Event::FAILMOVED, Streamwide_Engine_Events_Event::CHILD); $controller = $this->getController(); foreach (new ArrayIterator($events) as $event) { $controller->addEventListener($event, array('callback' => array($this, 'onSignalReceived'), 'options' => array('notifyFilter' => Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, $this->_callLeg->getName())))); } }
/** * Subscribe to the ENDOFFAX signal * * @see Engine/Streamwide_Engine_Widget#_subscribeToEngineEvents() */ protected function _subscribeToEngineEvents() { $controller = $this->getController(); $endOfFaxNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, $this->_msCallLeg->getName()); $controller->addEventListener(Streamwide_Engine_Events_Event::ENDOFFAX, array('callback' => array($this, 'onEndOfFax'), 'options' => array('autoRemove' => 'before', 'notifyFilter' => $endOfFaxNotifyFilter))); }
/** * Subscribe to DTMF signal from SW Engine * * @see Engine/Streamwide_Engine_Widget#_subscribeToEngineEvents() */ protected function _subscribeToEngineEvents() { $controller = $this->getController(); $dtmfNotifyFilter = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_EVT_SIG_PARAM_REMOTE, Streamwide_Engine_NotifyFilter_Factory::FILTER_IN_ARRAY, array($this->_options[self::OPT_ALLOWED_DTMF_SOURCES], true)); $controller->addEventListener(Streamwide_Engine_Events_Event::DTMF, array('callback' => array($this, 'onDtmf'), 'options' => array('notifyFilter' => $dtmfNotifyFilter))); }
/** * A MOVED/OKMOVED/FAILMOVED signal has been relayed * * @param $event * @return unknown_type */ public function onFaxEnvDetectionUpdate(Streamwide_Engine_Events_Event $event) { $signal = $event->getParam('signal'); $signalName = $signal->getName(); switch ($signalName) { case Streamwide_Engine_Signal::MOVED: $this->_waitUpdateConfirmation = true; break; case Streamwide_Engine_Signal::FAILMOVED: $this->_waitUpdateConfirmation = false; if ($this->_faxToneDetected || $this->_audioReinviteTimedOut) { $this->_relayer->reset(); return $this->_startForcedFaxNegotiation(); } break; case Streamwide_Engine_Signal::OKMOVED: $this->_waitUpdateConfirmation = false; $specification = Streamwide_Engine_NotifyFilter_Factory::factory(Streamwide_Engine_NotifyFilter_Factory::T_SIG_PARAM, Streamwide_Engine_NotifyFilter_Factory::FILTER_EQUAL_TO, array('policy', 'image')); if ($specification->isSatisfiedBy($signal)) { $this->_relayer->reset(); if (isset($this->_faxToneDetector)) { $this->_faxToneDetector->reset(); } if (isset($this->_timer)) { $this->_timer->reset(); } return $this->_faxReceive(); } if ($this->_faxToneDetected || $this->_audioReinviteTimedOut) { $this->_relayer->reset(); return $this->_startForcedFaxNegotiation(); } break; } }