- fix AGI to query dynamic conference service if conference is not found from database.
git-svn-id: http://bigbluebutton.googlecode.com/svn/trunk@3199 af16638f-c34d-0410-8cfa-b39d5352b314
This commit is contained in:
parent
ed9cfd7240
commit
dcea25fe5d
@ -36,7 +36,6 @@ maxConversionTime=5
|
|||||||
maxNumPages=100
|
maxNumPages=100
|
||||||
|
|
||||||
beans.presentationService.presentationDir=${presentationDir}
|
beans.presentationService.presentationDir=${presentationDir}
|
||||||
|
|
||||||
beans.adhocConferenceService.serviceEnabled=true
|
beans.adhocConferenceService.serviceEnabled=true
|
||||||
beans.dynamicConferenceService.serviceEnabled=true
|
beans.dynamicConferenceService.serviceEnabled=true
|
||||||
beans.dynamicConferenceService.securitySalt=639259d4-9dd8-4b25-bf01-95f9567eaf4b
|
beans.dynamicConferenceService.securitySalt=639259d4-9dd8-4b25-bf01-95f9567eaf4b
|
||||||
|
@ -36,7 +36,9 @@
|
|||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="asteriskAgi" class="org.bigbluebutton.pbx.asterisk.AsteriskAgiService" />
|
<bean id="asteriskAgi" class="org.bigbluebutton.pbx.asterisk.AsteriskAgiService">
|
||||||
|
<property name="dynamicConferenceService" ref="dynamicConferenceService"/>
|
||||||
|
</bean>
|
||||||
|
|
||||||
<!-- Spring Integration / JMS gateways -->
|
<!-- Spring Integration / JMS gateways -->
|
||||||
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
|
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
|
||||||
|
@ -26,24 +26,24 @@ import org.asteriskjava.fastagi.AgiRequest
|
|||||||
import org.asteriskjava.fastagi.AgiScript
|
import org.asteriskjava.fastagi.AgiScript
|
||||||
|
|
||||||
import java.util.Calendar
|
import java.util.Calendar
|
||||||
|
|
||||||
import org.bigbluebutton.web.domain.ScheduledSession
|
import org.bigbluebutton.web.domain.ScheduledSession
|
||||||
|
import org.bigbluebutton.web.services.DynamicConferenceService
|
||||||
class AsteriskAgiService implements AgiScript {
|
|
||||||
|
|
||||||
|
public class AsteriskAgiService implements AgiScript {
|
||||||
|
|
||||||
private long _10_minutes = 10*60*1000
|
private long _10_minutes = 10*60*1000
|
||||||
|
def dynamicConferenceService
|
||||||
|
|
||||||
public void service(AgiRequest request, AgiChannel channel)
|
public void service(AgiRequest request, AgiChannel channel)
|
||||||
throws AgiException {
|
throws AgiException {
|
||||||
|
|
||||||
def number = request.getParameter("conference")
|
def number = request.getParameter("conference")
|
||||||
log.debug "Looking for conference $number"
|
log.debug "Looking for conference $number"
|
||||||
|
|
||||||
def conf = ScheduledSession.findByVoiceConferenceBridge(number)
|
def conf = ScheduledSession.findByVoiceConferenceBridge(number)
|
||||||
|
|
||||||
if (conf) {
|
if (conf) {
|
||||||
log.debug("found conference " + conf.name)
|
log.debug("found conference " + conf.name)
|
||||||
|
|
||||||
def startTime = conf.startDateTime.time - _10_minutes
|
def startTime = conf.startDateTime.time - _10_minutes
|
||||||
def endTime = conf.endDateTime.time + _10_minutes
|
def endTime = conf.endDateTime.time + _10_minutes
|
||||||
def now = new Date()
|
def now = new Date()
|
||||||
@ -55,11 +55,22 @@ class AsteriskAgiService implements AgiScript {
|
|||||||
channel.setVariable("CONFERENCE_FOUND", number)
|
channel.setVariable("CONFERENCE_FOUND", number)
|
||||||
} else {
|
} else {
|
||||||
log.debug("The conference $number has no schedule at this moment")
|
log.debug("The conference $number has no schedule at this moment")
|
||||||
channel.setVariable("CONFERENCE_FOUND", "0")
|
setConferenceNotFound()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log.debug "Cannot find conference from database. Looking in Dynamic conference"
|
||||||
|
if (dynamicConferenceService == null) log.error "dynamicConferenceService is NULL"
|
||||||
|
if (dynamicConferenceService.isMeetingWithVoiceBridgeExist(number)) {
|
||||||
|
log.debug("Setting channel var CONFERENCE_FOUND to $number")
|
||||||
|
channel.setVariable("CONFERENCE_FOUND", number)
|
||||||
|
} else {
|
||||||
|
log.debug("Could not find conference $number")
|
||||||
|
setConferenceNotFound()
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
log.debug("Could not find conference $number")
|
|
||||||
channel.setVariable("CONFERENCE_FOUND", "0")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setConferenceNotFound() {
|
||||||
|
channel.setVariable("CONFERENCE_FOUND", "0")
|
||||||
|
}
|
||||||
}
|
}
|
@ -21,11 +21,10 @@
|
|||||||
package org.bigbluebutton.web.services
|
package org.bigbluebutton.web.services
|
||||||
|
|
||||||
import java.util.concurrent.ConcurrentHashMap
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
|
import java.util.Collection
|
||||||
import org.bigbluebutton.api.domain.DynamicConference;
|
import org.bigbluebutton.api.domain.DynamicConference;
|
||||||
|
|
||||||
public class DynamicConferenceService {
|
public class DynamicConferenceService {
|
||||||
|
|
||||||
boolean transactional = false
|
boolean transactional = false
|
||||||
def serviceEnabled = false
|
def serviceEnabled = false
|
||||||
def securitySalt = null;
|
def securitySalt = null;
|
||||||
@ -88,4 +87,16 @@ public class DynamicConferenceService {
|
|||||||
log.debug "found conference and set end date"
|
log.debug "found conference and set end date"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isMeetingWithVoiceBridgeExist(String voiceBridge) {
|
||||||
|
Collection<DynamicConference> confs = confsByMtgID.values()
|
||||||
|
for (DynamicConference c : confs) {
|
||||||
|
if (voiceBridge == c.voiceBridge) {
|
||||||
|
log.debug "Found voice bridge $voiceBridge"
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
log.debug "could not find voice bridge $voiceBridge"
|
||||||
|
return false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user