コード例 #1
0
ファイル: Decorator.php プロジェクト: cwcw/cms
 /**
  * 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();
 }
コード例 #2
0
ファイル: Decorator.php プロジェクト: cwcw/cms
 /**
  * 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);
     }
 }
コード例 #3
0
ファイル: Transferrer.php プロジェクト: cwcw/cms
 /**
  * @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)));
 }
コード例 #4
0
ファイル: Decorator.php プロジェクト: cwcw/cms
 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);
     }
 }
コード例 #5
0
ファイル: SdpDirectCall.php プロジェクト: cwcw/cms
 /**
  * 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
 }
コード例 #6
0
ファイル: EventParameter.php プロジェクト: cwcw/cms
 /**
  * @see Engine/NotifyFilter/Streamwide_Engine_NotifyFilter_Factory#instanceOfFilter($class)
  */
 public function instanceOfFilter($param, $class)
 {
     return $this->_createFilter($param, parent::instanceOfFilter($class));
 }
コード例 #7
0
ファイル: SdpIvrCall.php プロジェクト: cwcw/cms
 /**
  * @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
 }
コード例 #8
0
ファイル: Timeout.php プロジェクト: cwcw/cms
 /**
  * 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)));
 }
コード例 #9
0
ファイル: Handler.php プロジェクト: cwcw/cms
 /**
  * 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
 }
コード例 #10
0
ファイル: Detector.php プロジェクト: cwcw/cms
 /**
  * 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)));
 }
コード例 #11
0
ファイル: Decorator.php プロジェクト: cwcw/cms
 /**
  * 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()))));
     }
 }
コード例 #12
0
ファイル: SdpDirection.php プロジェクト: cwcw/cms
 /**
  * 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;
 }
コード例 #13
0
ファイル: SpeechRecognizer.php プロジェクト: cwcw/cms
 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);
 }
コード例 #14
0
ファイル: Relayer.php プロジェクト: cwcw/cms
 /**
  * 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;
 }
コード例 #15
0
ファイル: SipReconnect.php プロジェクト: cwcw/cms
 /**
  * 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
 }
コード例 #16
0
ファイル: Suspender.php プロジェクト: cwcw/cms
 /**
  * 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()))));
     }
 }
コード例 #17
0
ファイル: Sender.php プロジェクト: cwcw/cms
 /**
  * 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)));
 }
コード例 #18
0
ファイル: Handler.php プロジェクト: cwcw/cms
 /**
  * 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)));
 }
コード例 #19
0
ファイル: Receiver.php プロジェクト: cwcw/cms
 /**
  * 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;
     }
 }