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());
        }
 }


Reply via email to