Author: solomax
Date: Wed May 11 17:50:22 2016
New Revision: 1743401
URL: http://svn.apache.org/viewvc?rev=1743401&view=rev
Log:
[OPENMEETINGS-1384] asterisk-java is used to call external numbers
Modified:
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java
Modified:
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1743401&r1=1743400&r2=1743401&view=diff
==============================================================================
---
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
(original)
+++
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
Wed May 11 17:50:22 2016
@@ -44,6 +44,7 @@ import org.apache.openmeetings.db.dao.la
import org.apache.openmeetings.db.dao.log.ConferenceLogDao;
import org.apache.openmeetings.db.dao.record.RecordingDao;
import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.room.SipDao;
import org.apache.openmeetings.db.dao.server.ISessionManager;
import org.apache.openmeetings.db.dao.server.ServerDao;
import org.apache.openmeetings.db.dao.server.SessiondataDao;
@@ -109,6 +110,8 @@ public class ScopeApplicationAdapter ext
private RecordingDao recordingDao;
@Autowired
private ServerDao serverDao;
+ @Autowired
+ private SipDao sipDao;
private static AtomicLong broadCastCounter = new AtomicLong(0);
@@ -2165,9 +2168,7 @@ public class ScopeApplicationAdapter ext
String streamid = current.getClient().getId();
Client currentClient =
sessionManager.getClientByStreamId(streamid, null);
try {
- String sipNumber =
getSipNumber(currentClient.getRoomId());
- log.debug("asterisk -rx \"channel originate Local/" +
number + "@rooms-out extension " + sipNumber + "@rooms-originate\"");
- Runtime.getRuntime().exec(new String[] { "asterisk",
"-rx", "channel originate Local/" + number + "@rooms-out extension " +
sipNumber + "@rooms-originate" });
+ sipDao.joinToConfCall(number,
roomDao.get(currentClient.getRoomId()))
} catch (IOException e) {
log.error("Executing asterisk originate error: ", e);
}
Modified:
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java?rev=1743401&r1=1743400&r2=1743401&view=diff
==============================================================================
---
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
(original)
+++
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
Wed May 11 17:50:22 2016
@@ -18,6 +18,7 @@
*/
package org.apache.openmeetings.db.dao.room;
+import org.apache.openmeetings.db.entity.room.Room;
import org.asteriskjava.manager.ManagerConnection;
import org.asteriskjava.manager.ManagerConnectionFactory;
import org.asteriskjava.manager.ResponseEvents;
@@ -28,6 +29,7 @@ import org.asteriskjava.manager.action.D
import org.asteriskjava.manager.action.DbPutAction;
import org.asteriskjava.manager.action.EventGeneratingAction;
import org.asteriskjava.manager.action.ManagerAction;
+import org.asteriskjava.manager.action.OriginateAction;
import org.asteriskjava.manager.response.ManagerError;
import org.asteriskjava.manager.response.ManagerResponse;
import org.red5.logging.Red5LoggerFactory;
@@ -143,4 +145,28 @@ public class SipDao {
}
return 0;
}
+
+ /**
+ * Perform call to specified phone number and join to conference
+ *
+ * @param number
+ * number to call
+ * @param r
+ * room to be connected to the call
+ */
+ public void joinToConfCall(String number, Room r) {
+ String sipNumber = (r != null && r.getConfno() != null) ?
r.getConfno() : null;
+ if (sipNumber == null) {
+ log.warn("Failed to get SIP number for room: {}", r);
+ return;
+ }
+
+ OriginateAction oa = new OriginateAction();
+ oa.setChannel(String.format("Local/%s@rooms-out", number));
+ oa.setExten(String.format("%s@rooms-originate", sipNumber));
+ oa.setPriority(1);
+ oa.setTimeout(30000L);
+
+ ManagerResponse resp = exec(oa);
+ }
}
Modified:
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1743401&r1=1743400&r2=1743401&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
Wed May 11 17:50:22 2016
@@ -20,7 +20,6 @@ package org.apache.openmeetings.core.rem
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
@@ -2107,22 +2106,6 @@ public class ScopeApplicationAdapter ext
return count != null && count > 0 ? count - 1 : 0;
}
- /**
- * Perform call to specified phone number and join to conference
- *
- * @param number
- * to call
- */
- public void joinToConfCall(String number, Room r) {
- try {
- String sipNumber = (r != null && r.getConfno() != null)
? r.getConfno() : null;
- log.debug("asterisk -rx \"channel originate Local/" +
number + "@rooms-out extension " + sipNumber + "@rooms-originate\"");
- Runtime.getRuntime().exec(new String[] { "asterisk",
"-rx", "channel originate Local/" + number + "@rooms-out extension " +
sipNumber + "@rooms-originate" });
- } catch (IOException e) {
- log.error("Executing asterisk originate error: ", e);
- }
- }
-
public void setSipTransport(Long roomId, String publicSID, String
broadCastId) {
log.debug("----------- setSipTransport");
IConnection current = Red5.getConnectionLocal();
Modified:
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java?rev=1743401&r1=1743400&r2=1743401&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
Wed May 11 17:50:22 2016
@@ -18,6 +18,7 @@
*/
package org.apache.openmeetings.db.dao.room;
+import org.apache.openmeetings.db.entity.room.Room;
import org.asteriskjava.manager.ManagerConnection;
import org.asteriskjava.manager.ManagerConnectionFactory;
import org.asteriskjava.manager.ResponseEvents;
@@ -28,6 +29,7 @@ import org.asteriskjava.manager.action.D
import org.asteriskjava.manager.action.DbPutAction;
import org.asteriskjava.manager.action.EventGeneratingAction;
import org.asteriskjava.manager.action.ManagerAction;
+import org.asteriskjava.manager.action.OriginateAction;
import org.asteriskjava.manager.response.ManagerError;
import org.asteriskjava.manager.response.ManagerResponse;
import org.red5.logging.Red5LoggerFactory;
@@ -143,4 +145,28 @@ public class SipDao {
}
return 0;
}
+
+ /**
+ * Perform call to specified phone number and join to conference
+ *
+ * @param number
+ * number to call
+ * @param r
+ * room to be connected to the call
+ */
+ public void joinToConfCall(String number, Room r) {
+ String sipNumber = (r != null && r.getConfno() != null) ?
r.getConfno() : null;
+ if (sipNumber == null) {
+ log.warn("Failed to get SIP number for room: {}", r);
+ return;
+ }
+
+ OriginateAction oa = new OriginateAction();
+ oa.setChannel(String.format("Local/%s@rooms-out", number));
+ oa.setExten(String.format("%s@rooms-originate", sipNumber));
+ oa.setPriority(1);
+ oa.setTimeout(30000L);
+
+ ManagerResponse resp = exec(oa);
+ }
}
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java?rev=1743401&r1=1743400&r2=1743401&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java
Wed May 11 17:50:22 2016
@@ -23,7 +23,7 @@ import static org.apache.openmeetings.we
import java.util.Arrays;
import java.util.List;
-import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.db.dao.room.SipDao;
import org.apache.openmeetings.web.app.Application;
import org.apache.openmeetings.web.room.RoomPanel;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -99,6 +99,6 @@ public class SipDialerDialog extends Abs
@Override
protected void onSubmit(AjaxRequestTarget target) {
-
getBean(ScopeApplicationAdapter.class).joinToConfCall(number.getModelObject(),
room.getRoom());
+ getBean(SipDao.class).joinToConfCall(number.getModelObject(),
room.getRoom());
}
}
Modified:
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1743401&r1=1743400&r2=1743401&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
(original)
+++
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
Wed May 11 17:50:22 2016
@@ -20,7 +20,6 @@ package org.apache.openmeetings.core.rem
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
@@ -2107,22 +2106,6 @@ public class ScopeApplicationAdapter ext
return count != null && count > 0 ? count - 1 : 0;
}
- /**
- * Perform call to specified phone number and join to conference
- *
- * @param number
- * to call
- */
- public void joinToConfCall(String number, Room r) {
- try {
- String sipNumber = (r != null && r.getConfno() != null)
? r.getConfno() : null;
- log.debug("asterisk -rx \"channel originate Local/" +
number + "@rooms-out extension " + sipNumber + "@rooms-originate\"");
- Runtime.getRuntime().exec(new String[] { "asterisk",
"-rx", "channel originate Local/" + number + "@rooms-out extension " +
sipNumber + "@rooms-originate" });
- } catch (IOException e) {
- log.error("Executing asterisk originate error: ", e);
- }
- }
-
public void setSipTransport(Long roomId, String publicSID, String
broadCastId) {
log.debug("----------- setSipTransport");
IConnection current = Red5.getConnectionLocal();
Modified:
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java?rev=1743401&r1=1743400&r2=1743401&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
(original)
+++
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java
Wed May 11 17:50:22 2016
@@ -18,6 +18,7 @@
*/
package org.apache.openmeetings.db.dao.room;
+import org.apache.openmeetings.db.entity.room.Room;
import org.asteriskjava.manager.ManagerConnection;
import org.asteriskjava.manager.ManagerConnectionFactory;
import org.asteriskjava.manager.ResponseEvents;
@@ -28,6 +29,7 @@ import org.asteriskjava.manager.action.D
import org.asteriskjava.manager.action.DbPutAction;
import org.asteriskjava.manager.action.EventGeneratingAction;
import org.asteriskjava.manager.action.ManagerAction;
+import org.asteriskjava.manager.action.OriginateAction;
import org.asteriskjava.manager.response.ManagerError;
import org.asteriskjava.manager.response.ManagerResponse;
import org.red5.logging.Red5LoggerFactory;
@@ -143,4 +145,28 @@ public class SipDao {
}
return 0;
}
+
+ /**
+ * Perform call to specified phone number and join to conference
+ *
+ * @param number
+ * number to call
+ * @param r
+ * room to be connected to the call
+ */
+ public void joinToConfCall(String number, Room r) {
+ String sipNumber = (r != null && r.getConfno() != null) ?
r.getConfno() : null;
+ if (sipNumber == null) {
+ log.warn("Failed to get SIP number for room: {}", r);
+ return;
+ }
+
+ OriginateAction oa = new OriginateAction();
+ oa.setChannel(String.format("Local/%s@rooms-out", number));
+ oa.setExten(String.format("%s@rooms-originate", sipNumber));
+ oa.setPriority(1);
+ oa.setTimeout(30000L);
+
+ ManagerResponse resp = exec(oa);
+ }
}
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java?rev=1743401&r1=1743400&r2=1743401&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java
Wed May 11 17:50:22 2016
@@ -23,7 +23,7 @@ import static org.apache.openmeetings.we
import java.util.Arrays;
import java.util.List;
-import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.db.dao.room.SipDao;
import org.apache.openmeetings.web.app.Application;
import org.apache.openmeetings.web.room.RoomPanel;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -99,6 +99,6 @@ public class SipDialerDialog extends Abs
@Override
protected void onSubmit(AjaxRequestTarget target) {
-
getBean(ScopeApplicationAdapter.class).joinToConfCall(number.getModelObject(),
room.getRoom());
+ getBean(SipDao.class).joinToConfCall(number.getModelObject(),
room.getRoom());
}
}