Secondary Call
Determines the pages and properties relating to the outbound (secondary) call made during a connect or connect to conference action:
Used by actions connect, connect to conference
language wrappers and examples
It contains the following properties:
Property | Required/Optional | Default | Description |
---|---|---|---|
call recording | optional | false | true or false. Whether to record the whole of the secondary call. See note on Call Recording. |
call recording encryption | optional | false | true or false. Whether to encrypt the whole call recording. |
call recording eliminate dtmf from API V2.0 | optional | true | true or false. Whether to eliminate DTMF from the whole call recording. |
call recording mode from API V2.0 | optional | mixed | Either mixed or separate . Whether the whole call recording has both sides of the call mixed in a single channel or each side is recorded to a separate channel. |
call recording cipher from API V2.0 | optional | - | A cipher object that specifies how to encrypt the whole call recording. The cipher can be specified here or in the response to the first page request. |
minutes max call duration | optional | 240 | An integer. The maximum duration of the secondary call in minutes. The secondary call is hung up if this is exceeded. |
first page | optional | - | A web page request object that is requested when the secondary call has been answered (and classification completed, if it has been enabled). This gives the application an opportunity to interact with the secondary call before it is connected to the primary call. |
final page | optional | - | A web page request object that is requested when either the primary or secondary call is hung up (i.e. the connection has been broken). |
error page | optional | - | A web page request object that is requested when there is an error during the connect action. |
Note: Call Recording records the whole call, both inbound and outbound audio, from the point at which the calls are connected. It will only record early media if pass early media is true in the connect action. It saves recorded files into the account's Media File Store.
Examples:
{
"first_page":
{
"url" : "my_secondary_call_first_page"
}
}
{
"call_recording" : true,
"call_recording_encryption" : true,
"minutes_max_call_duration" : 30,
"first_page":
{
"url" : "my_secondary_call_first_page"
},
"final_page":
{
"url" : "my_secondary_call_final_page"
},
"error_page":
{
"url" : "my_secondary_call_error_page"
}
}
{
"call_recording" : true,
"call_recording_encryption" : true,
"call_recording_eliminate_dtmf" : false,
"call_recording_mode" : "separate",
"call_recording_cipher" :
{
"type" : "aescbc",
"key" : "1F2DEB2E502A4C8CBA58AB5018BD1506419EEA86DF595D3A431F43FAF57534C9",
"initialisation_vector" : "9B85FAED9AB17570D5A82A31F846443B"
}
}
SecondaryCall Class
Namespace: Aculab.Cloud.RestAPIWrapper
Assembly: Aculab.Cloud.RestAPIWrapper.dll
A class that represents the secondary outbound call that is made by the
Connect or ConnectToConference actions. It determines pages and properties
relating to this call.
public class SecondaryCall
{
// Constructors
public SecondaryCall();
public SecondaryCall(WebPageRequest firstPage);
public SecondaryCall(WebPageRequest firstPage, int minutesMaxCallDuration, bool callRecording);
// Members
public bool? CallRecording;
public bool? CallRecordingEncryption;
public Cipher CallRecordingCipher;
public bool? CallRecordingEliminateDtmf;
public RecordingMode? CallRecordingMode;
public int? MinutesMaxCallDuration;
public WebPageRequest FirstPage;
public WebPageRequest FinalPage;
public WebPageRequest ErrorPage;
}
Examples:
var secondaryCall = new SecondaryCall(new WebPageRequest("MySecondaryCallFirstPage.aspx"));
var connectAction = new Connect("443069990123");
connectAction.SecondaryCall = secondaryCall;
var secondaryCall = new SecondaryCall(new WebPageRequest("MySecondaryCallFirstPage.aspx"), 30, true)
{
ErrorPage = new WebPageRequest("MySecondaryCallErrorPage.aspx"),
FinalPage = new WebPageRequest("MySecondaryCallFinalPage.aspx"),
CallRecordingEncryption = true
};
var connectAction = new Connect("443069990123");
connectAction.SecondaryCall = secondaryCall;
byte[] key = new byte[] {
0x1A, 0xA9, 0x38, 0x61, 0x29, 0x66, 0x2B, 0x3D,
0x80, 0x03, 0x74, 0x40, 0x71, 0x26, 0x32, 0xCA,
0x56, 0x49, 0x3C, 0x67, 0xD9, 0x56, 0xC1, 0x96,
0x58, 0x50, 0x0E, 0xC9, 0x0D, 0xBE, 0xCD, 0xD2 };
byte[] initialisationVector = new byte[] {
0x55, 0xB0, 0x5F, 0xF5, 0x9A, 0x28, 0xED, 0xAE,
0x0F, 0x2C, 0xDF, 0xCE, 0xBB, 0x99, 0xE3, 0x39 };
var aesCbcCipher = new AesCbcCipher(key, initialisationVector);
var secondaryCall = new SecondaryCall(new WebPageRequest("MySecondaryCallFirstPage.aspx"), 30, true)
{
ErrorPage = new WebPageRequest("MySecondaryCallErrorPage.aspx"),
FinalPage = new WebPageRequest("MySecondaryCallFinalPage.aspx"),
CallRecordingEncryption = true,
CallRecordingEliminateDtmf = false,
CallRecordingMode = RecordingMode.Separate,
CallRecordingCipher = aesCbcCipher
};
var connectAction = new Connect("443069990123");
connectAction.SecondaryCall = secondaryCall;
public class SecondaryCall
{
// Constructors
public SecondaryCall();
public SecondaryCall(WebPageRequest firstPage);
public SecondaryCall(WebPageRequest firstPage, int minutesMaxCallDuration, bool callRecording);
// Members
public bool? CallRecording;
public bool? CallRecordingEncryption;
public Cipher CallRecordingCipher;
public bool? CallRecordingEliminateDtmf;
public RecordingMode? CallRecordingMode;
public int? MinutesMaxCallDuration;
public WebPageRequest FirstPage;
public WebPageRequest FinalPage;
public WebPageRequest ErrorPage;
}
Examples:
var secondaryCall = new SecondaryCall(new WebPageRequest("MySecondaryCallFirstPage.aspx"));
var connectAction = new Connect("443069990123");
connectAction.SecondaryCall = secondaryCall;
var secondaryCall = new SecondaryCall(new WebPageRequest("MySecondaryCallFirstPage.aspx"), 30, true)
{
ErrorPage = new WebPageRequest("MySecondaryCallErrorPage.aspx"),
FinalPage = new WebPageRequest("MySecondaryCallFinalPage.aspx"),
CallRecordingEncryption = true
};
var connectAction = new Connect("443069990123");
connectAction.SecondaryCall = secondaryCall;
byte[] key = new byte[] {
0x1A, 0xA9, 0x38, 0x61, 0x29, 0x66, 0x2B, 0x3D,
0x80, 0x03, 0x74, 0x40, 0x71, 0x26, 0x32, 0xCA,
0x56, 0x49, 0x3C, 0x67, 0xD9, 0x56, 0xC1, 0x96,
0x58, 0x50, 0x0E, 0xC9, 0x0D, 0xBE, 0xCD, 0xD2 };
byte[] initialisationVector = new byte[] {
0x55, 0xB0, 0x5F, 0xF5, 0x9A, 0x28, 0xED, 0xAE,
0x0F, 0x2C, 0xDF, 0xCE, 0xBB, 0x99, 0xE3, 0x39 };
var aesCbcCipher = new AesCbcCipher(key, initialisationVector);
var secondaryCall = new SecondaryCall(new WebPageRequest("MySecondaryCallFirstPage.aspx"), 30, true)
{
ErrorPage = new WebPageRequest("MySecondaryCallErrorPage.aspx"),
FinalPage = new WebPageRequest("MySecondaryCallFinalPage.aspx"),
CallRecordingEncryption = true,
CallRecordingEliminateDtmf = false,
CallRecordingMode = RecordingMode.Separate,
CallRecordingCipher = aesCbcCipher
};
var connectAction = new Connect("443069990123");
connectAction.SecondaryCall = secondaryCall;
public class SecondaryCall
{
// Constructors
public SecondaryCall();
public SecondaryCall(WebPageRequest firstPage);
public SecondaryCall(WebPageRequest firstPage, int minutesMaxCallDuration, bool callRecording);
// Members
public bool? CallRecording;
public bool? CallRecordingEncryption;
public Cipher CallRecordingCipher;
public bool? CallRecordingEliminateDtmf;
public RecordingMode? CallRecordingMode;
public int? MinutesMaxCallDuration;
public WebPageRequest FirstPage;
public WebPageRequest FinalPage;
public WebPageRequest ErrorPage;
}
Examples:
var secondaryCall = new SecondaryCall(new WebPageRequest("MySecondaryCallFirstPage.aspx"));
var connectAction = new Connect("443069990123");
connectAction.SecondaryCall = secondaryCall;
var secondaryCall = new SecondaryCall(new WebPageRequest("MySecondaryCallFirstPage.aspx"), 30, true)
{
ErrorPage = new WebPageRequest("MySecondaryCallErrorPage.aspx"),
FinalPage = new WebPageRequest("MySecondaryCallFinalPage.aspx"),
CallRecordingEncryption = true
};
var connectAction = new Connect("443069990123");
connectAction.SecondaryCall = secondaryCall;
byte[] key = new byte[] {
0x1A, 0xA9, 0x38, 0x61, 0x29, 0x66, 0x2B, 0x3D,
0x80, 0x03, 0x74, 0x40, 0x71, 0x26, 0x32, 0xCA,
0x56, 0x49, 0x3C, 0x67, 0xD9, 0x56, 0xC1, 0x96,
0x58, 0x50, 0x0E, 0xC9, 0x0D, 0xBE, 0xCD, 0xD2 };
byte[] initialisationVector = new byte[] {
0x55, 0xB0, 0x5F, 0xF5, 0x9A, 0x28, 0xED, 0xAE,
0x0F, 0x2C, 0xDF, 0xCE, 0xBB, 0x99, 0xE3, 0x39 };
var aesCbcCipher = new AesCbcCipher(key, initialisationVector);
var secondaryCall = new SecondaryCall(new WebPageRequest("MySecondaryCallFirstPage.aspx"), 30, true)
{
ErrorPage = new WebPageRequest("MySecondaryCallErrorPage.aspx"),
FinalPage = new WebPageRequest("MySecondaryCallFinalPage.aspx"),
CallRecordingEncryption = true,
CallRecordingEliminateDtmf = false,
CallRecordingMode = RecordingMode.Separate,
CallRecordingCipher = aesCbcCipher
};
var connectAction = new Connect("443069990123");
connectAction.SecondaryCall = secondaryCall;
SecondaryCall Class
Namespace: Aculab.Cloud.RestAPIWrapper
Assembly: Aculab.Cloud.RestAPIWrapper.dll
A class that represents the secondary outbound call that is made by the
Connect or ConnectToConference actions. It determines pages and properties
relating to this call.
Public Class SecondaryCall
' Constructors
Public Sub New ()
Public Sub New (firstPage As Webpagerequest)
Public Sub New (firstPage As Webpagerequest, minutesMaxCallDuration As Integer, callRecording As Bool)
' Members
Public Property CallRecording As Bool?
Public Property CallRecordingEncryption As Bool?
Public Property CallRecordingCipher As Cipher
Public Property CallRecordingEliminateDtmf As Bool?
Public Property CallRecordingMode As Recordingmode?
Public Property MinutesMaxCallDuration As Integer?
Public Property FirstPage As Webpagerequest
Public Property FinalPage As Webpagerequest
Public Property ErrorPage As Webpagerequest
End Class
Examples:
Dim secondaryCall = New SecondaryCall(New WebPageRequest("MySecondaryCallFirstPage.aspx"))
Dim connectAction = New Connect("443069990123")
connectAction.SecondaryCall = secondaryCall
Dim secondaryCall = New SecondaryCall(New WebPageRequest("MySecondaryCallFirstPage.aspx"), 30, True)
secondaryCall.CallRecordingEncryption = True
secondaryCall.ErrorPage = New WebPageRequest("MySecondaryCallErrorPage.aspx")
secondaryCall.FinalPage = New WebPageRequest("MySecondaryCallFinalPage.aspx")
Dim connectAction = New Connect("443069990123")
connectAction.SecondaryCall = secondaryCall
Dim key As Byte() = {
&H1A, &HA9, &H38, &H61, &H29, &H66, &H2B, &H3D,
&H80, &H3, &H74, &H40, &H71, &H26, &H32, &HCA,
&H56, &H49, &H3C, &H67, &HD9, &H56, &HC1, &H96,
&H58, &H50, &HE, &HC9, &HD, &HBE, &HCD, &HD2}
Dim initialisationVector As Byte() = {
&H55, &HB0, &H5F, &HF5, &H9A, &H28, &HED, &HAE,
&HF, &H2C, &HDF, &HCE, &HBB, &H99, &HE3, &H39}
Dim AesCbcCipher = New AesCbcCipher(key, initialisationVector)
Dim secondaryCall = New SecondaryCall(New WebPageRequest("MySecondaryCallFirstPage.aspx"), 30, True) With {
.ErrorPage = New WebPageRequest("MySecondaryCallErrorPage.aspx"),
.FinalPage = New WebPageRequest("MySecondaryCallFinalPage.aspx"),
.CallRecordingEncryption = True,
.CallRecordingEliminateDtmf = False,
.CallRecordingMode = RecordingMode.Separate,
.CallRecordingCipher = AesCbcCipher
}
Dim connectAction = New Connect("443069990123")
connectAction.SecondaryCall = secondaryCall
Public Class SecondaryCall
' Constructors
Public Sub New ()
Public Sub New (firstPage As Webpagerequest)
Public Sub New (firstPage As Webpagerequest, minutesMaxCallDuration As Integer, callRecording As Bool)
' Members
Public Property CallRecording As Bool?
Public Property CallRecordingEncryption As Bool?
Public Property CallRecordingCipher As Cipher
Public Property CallRecordingEliminateDtmf As Bool?
Public Property CallRecordingMode As Recordingmode?
Public Property MinutesMaxCallDuration As Integer?
Public Property FirstPage As Webpagerequest
Public Property FinalPage As Webpagerequest
Public Property ErrorPage As Webpagerequest
End Class
Examples:
Dim secondaryCall = New SecondaryCall(New WebPageRequest("MySecondaryCallFirstPage.aspx"))
Dim connectAction = New Connect("443069990123")
connectAction.SecondaryCall = secondaryCall
Dim secondaryCall = New SecondaryCall(New WebPageRequest("MySecondaryCallFirstPage.aspx"), 30, True)
secondaryCall.CallRecordingEncryption = True
secondaryCall.ErrorPage = New WebPageRequest("MySecondaryCallErrorPage.aspx")
secondaryCall.FinalPage = New WebPageRequest("MySecondaryCallFinalPage.aspx")
Dim connectAction = New Connect("443069990123")
connectAction.SecondaryCall = secondaryCall
Dim key As Byte() = {
&H1A, &HA9, &H38, &H61, &H29, &H66, &H2B, &H3D,
&H80, &H3, &H74, &H40, &H71, &H26, &H32, &HCA,
&H56, &H49, &H3C, &H67, &HD9, &H56, &HC1, &H96,
&H58, &H50, &HE, &HC9, &HD, &HBE, &HCD, &HD2}
Dim initialisationVector As Byte() = {
&H55, &HB0, &H5F, &HF5, &H9A, &H28, &HED, &HAE,
&HF, &H2C, &HDF, &HCE, &HBB, &H99, &HE3, &H39}
Dim AesCbcCipher = New AesCbcCipher(key, initialisationVector)
Dim secondaryCall = New SecondaryCall(New WebPageRequest("MySecondaryCallFirstPage.aspx"), 30, True) With {
.ErrorPage = New WebPageRequest("MySecondaryCallErrorPage.aspx"),
.FinalPage = New WebPageRequest("MySecondaryCallFinalPage.aspx"),
.CallRecordingEncryption = True,
.CallRecordingEliminateDtmf = False,
.CallRecordingMode = RecordingMode.Separate,
.CallRecordingCipher = AesCbcCipher
}
Dim connectAction = New Connect("443069990123")
connectAction.SecondaryCall = secondaryCall
class SecondaryCall extends JSONElement
Represents the Secondary Call support class.
Class synopsis:
// Constructors:
public SecondaryCall()
public SecondaryCall(WebPageRequest firstPage)
public SecondaryCall(WebPageRequest firstPage, int minutesMaxCallDuration, boolean callRecording)
// Members:
public void setCallRecording(boolean enabled)
public void setCallRecordingEncryption(boolean enabled)
public void setCallRecordingEliminateDTMF(boolean enabled)
public void setCallRecordingMode(CallRecordingMode mode)
public void setCallRecordingCipher(Cipher encryptionCipher)
public void setMinutesMaxCallDuration(int minutesMaxDuration)
public void setFirstPage(WebPageRequest firstPage)
public void setFinalPage(WebPageRequest finalPage)
public void setErrorPage(WebPageRequest errorPage)
Examples:
SecondaryCall secCall = new SecondaryCall();
secCall.setFirstPage(new WebPageRequest("my_secondary_call_first_page"));
SecondaryCall secCall = new SecondaryCall();
secCall.setCallRecording(true);
secCall.setMinutesMaxCallDuration(30);
secCall.setFirstPage(new WebPageRequest("my_secondary_call_first_page"));
secCall.setFinalPage(new WebPageRequest("my_secondary_call_final_page"));
secCall.setErrorPage(new WebPageRequest("my_secondary_call_error_page"));
byte[] key = {
(byte)0x1F, (byte)0x2D, (byte)0xEB, (byte)0x2E, (byte)0x50, (byte)0x2A, (byte)0x4C, (byte)0x8C,
(byte)0xBA, (byte)0x58, (byte)0xAB, (byte)0x50, (byte)0x18, (byte)0xBD, (byte)0x15, (byte)0x06,
(byte)0x41, (byte)0x9E, (byte)0xEA, (byte)0x86, (byte)0xDF, (byte)0x59, (byte)0x5D, (byte)0x3A,
(byte)0x43, (byte)0x1F, (byte)0x43, (byte)0xFA, (byte)0xF5, (byte)0x75, (byte)0x34, (byte)0xC9};
byte[] iv = {
(byte)0x9B, (byte)0x85, (byte)0xFA, (byte)0xED, (byte)0x9A, (byte)0xB1, (byte)0x75, (byte)0x70,
(byte)0xD5, (byte)0xA8, (byte)0x2A, (byte)0x31, (byte)0xF8, (byte)0x46, (byte)0x44, (byte)0x3B};
Cipher encryptionCipher = new AesCbcCipher(key, iv);
SecondaryCall secCall = new SecondaryCall();
secCall.setCallRecording(true);
secCall.setCallRecordingEncryption(true);
secCall.setCallRecordingEliminateDTMF(false);
secCall.setCallRecordingMode(CallRecordingMode.SEPARATE);
secCall.setCallRecordingCipher(encryptionCipher);
class SecondaryCall
Represents the Secondary Call support class.
Class synopsis:
# SecondaryCall object:
SecondaryCall(first_page=None,
final_page=None,
error_page=None,
minutes_max_call_duration=None,
call_recording=None,
call_recording_encryption=None,
call_recording_mode=None,
call_recording_eliminate_dtmf=None,
call_recording_cipher=None)
Examples:
secondary_call = SecondaryCall(first_page=WebPage(url='my_secondary_call_first_page'))
secondary_call = SecondaryCall(first_page=WebPage(url='my_secondary_call_first_page'),
final_page=WebPage(url='my_secondary_call_final_page'),
error_page=WebPage(url='my_secondary_call_error_page'),
call_recording=True,
call_recording_encryption=True,
minutes_max_call_duration=30)
aescbc_cipher = AESCBCCipher(key='1F2DEB2E502A4C8CBA58AB5018BD1506419EEA86DF595D3A431F43FAF57534C9',
initialisation_vector='9B85FAED9AB17570D5A82A31F846443B')
secondary_call = SecondaryCall(call_recording=True,
call_recording_encryption=True,
call_recording_eliminate_dtmf=False,
call_recording_mode="separate",
call_recording_cipher=aescbc_cipher)
The SecondaryCallConfiguration class
Introduction
Represents the secondary call configuration for a connect action.
Class synopsis
class SecondaryCallConfiguration {
/* methods */
public __construct()
public self setCallRecording(boolean $rec)
public self setCallRecordingEncryption(boolean $encrypt)
public self setCallRecordingEliminateDtmf(boolean $enabled)
public self setCallRecordingMode(string $mode)
public self setCallRecordingCipher(Cipher $cipher)
public self setMinutesMaxCallDuration(int $mins)
public self setFirstPage(WebPageRequest|string $first_page, string $method = null)
public self setFinalPage(WebPageRequest|string $final_page, string $method = null)
public self setErrorPage(WebPageRequest|string $error_page, string $method = null)
}
Examples:
$call_config = new Aculab\TelephonyRestAPI\SecondaryCallConfiguration();
$call_config->setFirstPage('my_secondary_call_first_page.php');
$connect->setSecondaryCallConfiguration($call_config);
$call_config = new Aculab\TelephonyRestAPI\SecondaryCallConfiguration();
$call_config->setMinutesMaxCallDuration(30)
->setCallRecordingEncryption(true)
->setCallRecording(true)
->setFirstPage('my_secondary_call_first_page.php')
->setErrorPage('my_secondary_call_error_page.php')
->setFinalPage('my_secondary_call_final_page.php');
$connect->setSecondaryCallConfiguration($call_config);
$cipher = new Aculab\TelephonyRestAPI\AesCbcCipher(
"1AA9386129662B3D80037440712632CA56493C67D956C19658500EC90DBECDD2",
"55B05FF59A28EDAE0F2CDFCEBB99E339"
);
$call_config = new Aculab\TelephonyRestAPI\SecondaryCallConfiguration();
$call_config->setMinutesMaxCallDuration(30)
->setCallRecordingEncryption(true)
->setCallRecording(true)
->setCallRecordingMode('separate')
->setCallRecordingEliminateDtmf(false)
->setCallRecordingCipher($cipher)
->setFirstPage('my_secondary_call_first_page.php')
->setErrorPage('my_secondary_call_error_page.php')
->setFinalPage('my_secondary_call_final_page.php');
$connect->setSecondaryCallConfiguration($call_config);