Skip to content

Commit faee379

Browse files
committed
Fixing recording for Dial cases
1 parent e515f41 commit faee379

File tree

3 files changed

+88
-110
lines changed
  • restcomm
    • restcomm.interpreter/src/main/java/org/mobicents/servlet/restcomm/interpreter
    • restcomm.mscontrol.mms/src/main/java/org/mobicents/servlet/restcomm/mscontrol/mgcp
    • restcomm.testsuite/src/test/java/org/mobicents/servlet/restcomm/telephony

3 files changed

+88
-110
lines changed

restcomm/restcomm.interpreter/src/main/java/org/mobicents/servlet/restcomm/interpreter/VoiceInterpreter.java

Lines changed: 3 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import static org.mobicents.servlet.restcomm.interpreter.rcml.Verbs.say;
3333
import static org.mobicents.servlet.restcomm.interpreter.rcml.Verbs.sms;
3434

35-
import java.io.File;
3635
import java.io.IOException;
3736
import java.math.BigDecimal;
3837
import java.net.MalformedURLException;
@@ -63,10 +62,8 @@
6362
import org.mobicents.servlet.restcomm.dao.CallDetailRecordsDao;
6463
import org.mobicents.servlet.restcomm.dao.DaoManager;
6564
import org.mobicents.servlet.restcomm.dao.NotificationsDao;
66-
import org.mobicents.servlet.restcomm.dao.RecordingsDao;
6765
import org.mobicents.servlet.restcomm.entities.CallDetailRecord;
6866
import org.mobicents.servlet.restcomm.entities.Notification;
69-
import org.mobicents.servlet.restcomm.entities.Recording;
7067
import org.mobicents.servlet.restcomm.entities.Sid;
7168
import org.mobicents.servlet.restcomm.fax.FaxResponse;
7269
import org.mobicents.servlet.restcomm.fsm.Action;
@@ -121,7 +118,6 @@
121118
import org.mobicents.servlet.restcomm.telephony.StopConference;
122119
import org.mobicents.servlet.restcomm.tts.api.SpeechSynthesizerResponse;
123120
import org.mobicents.servlet.restcomm.util.UriUtils;
124-
import org.mobicents.servlet.restcomm.util.WavUtils;
125121

126122
import scala.concurrent.Await;
127123
import scala.concurrent.Future;
@@ -885,7 +881,7 @@ List<NameValuePair> parameters() {
885881
if (invite != null)
886882
processCustomHeaders(invite, "SipHeader_", parameters);
887883
} else {
888-
processCustomHeaders(lastResponse, "SipHeader_", parameters);
884+
processCustomHeaders(lastResponse, "SipHeader_", parameters);
889885
}
890886

891887
return parameters;
@@ -1667,8 +1663,8 @@ public void execute(final Object message) throws Exception {
16671663
}
16681664
}
16691665
branch.tell(new Cancel(), source);
1670-
// No need to destroy here. // Call will get Cancel and then FSM will move to Completed where finally we
1671-
// destroy calls
1666+
// No need to destroy here.
1667+
// Call will get Cancel and then FSM will move to Completed where finally we destroy calls
16721668
// callManager.tell(new DestroyCall(branch), source);
16731669
}
16741670
call.tell(new StopMediaGroup(), null);
@@ -1693,32 +1689,6 @@ public void execute(final Object message) throws Exception {
16931689
}
16941690

16951691
if (recordingCall && sender == call) {
1696-
Configuration runtimeSettings = configuration.subset("runtime-settings");
1697-
//Its the initial call that sent BYE so we can create the recording object here
1698-
if (recordingUri != null) {
1699-
Double duration = WavUtils.getAudioDuration(recordingUri);
1700-
if (duration.equals(0.0)) {
1701-
logger.info("At finishDialing. File doesn't exist since duration is 0");
1702-
final DateTime end = DateTime.now();
1703-
duration = new Double((end.getMillis() - callInfo.dateCreated().getMillis()) / 1000);
1704-
} else {
1705-
logger.info("At finishDialing. File already exists, length: "+ (new File(recordingUri).length()));
1706-
}
1707-
final Recording.Builder builder = Recording.builder();
1708-
builder.setSid(recordingSid);
1709-
builder.setAccountSid(accountId);
1710-
builder.setCallSid(callInfo.sid());
1711-
builder.setDuration(duration);
1712-
builder.setApiVersion(runtimeSettings.getString("api-version"));
1713-
StringBuilder buffer = new StringBuilder();
1714-
buffer.append("/").append(runtimeSettings.getString("api-version")).append("/Accounts/")
1715-
.append(accountId.toString());
1716-
buffer.append("/Recordings/").append(recordingSid.toString());
1717-
builder.setUri(URI.create(buffer.toString()));
1718-
final Recording recording = builder.build();
1719-
RecordingsDao recordsDao = storage.getRecordingsDao();
1720-
recordsDao.addRecording(recording);
1721-
}
17221692
recordingCall = false;
17231693
}
17241694

restcomm/restcomm.mscontrol.mms/src/main/java/org/mobicents/servlet/restcomm/mscontrol/mgcp/MmsBridgeController.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,13 @@ private void onMediaGroupStateChanged(MediaGroupStateChanged message, ActorRef s
297297
if (fail) {
298298
this.fsm.transition(message, failed);
299299
} else {
300+
// Save record info in the database
301+
if (recordStarted != null) {
302+
saveRecording();
303+
recordStarted = null;
304+
recordingRequest = null;
305+
}
306+
// Move to inactive state
300307
this.fsm.transition(message, inactive);
301308
}
302309
}
@@ -407,13 +414,14 @@ public DestroyingMediaGroup(final ActorRef source) {
407414

408415
@Override
409416
public void execute(Object message) throws Exception {
417+
// Stop Media Group
418+
// Note: Recording will be added to DB after getting response from MG
410419
if (recording) {
411420
mediaGroup.tell(new Stop(), super.source);
412-
saveRecording();
413421
recording = Boolean.FALSE;
414-
recordStarted = null;
415-
recordingRequest = null;
416422
}
423+
424+
// Destroy Media Group
417425
mediaGroup.tell(new StopMediaGroup(), super.source);
418426
}
419427
}

0 commit comments

Comments
 (0)