The TSAPI FAQ for SIP SA8481 is "Why does Avaya Aura Communication Manager SA8481 no longer work with TSAPI when using a SIP trunk?". Using the example in the FAQ, the following DMCC message would have the same effect:
<MakeCall xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.ecma-international.org/standards/ecma-323/csta/ed3">
<callingDevice typeOfNumber="other"
mediaClass="notKnown">4501:CM120::0</callingDevice>
<calledDirectoryNumber typeOfNumber="other"
mediaClass="notKnown">82240502:CM120::0</calledDirectoryNumber>
<userData>
<string>7e12100c00213937303232323132333403010203</string>
</userData>
<callCharacteristics>
<priorityCall>false</priorityCall>
</callCharacteristics>
</MakeCall>
This can be achieved with something like the following C# code:
byte presentation = 1;
byte numberType = 0x21;
byte pd = 0x10;
String realCallingNumber = "40501:CM120::0";
String calledNumber = "82240502:CM120::0";
String newNumber = "9702221234";
byte[] uui = { 0x01, 0x02, 0x03 };
makeSA8481Call(presentation, numberType, pd, realCallingNumber, calledNumber, newNumber, uui);
private void makeSA8481Call(byte presentation, byte numberType,
byte pd, string realCallingNumber, string calledNumber,
string newNumber, byte[] uui)
{
ThirdPartyCallController.MakeCallParameters prm = new ThirdPartyCallController.MakeCallParameters();
ThirdPartyCallController.MakeCallPrivateData prv = new ThirdPartyCallController.MakeCallPrivateData();
// Length of new number
int numberLen = newNumber.Length;
// Length of UUI data
int uuiLen = uui.Length;
// Size of buffer needed
int byteLen = 7 + numberLen + uuiLen;
// length of 'Information element'
int ieLen = 5 + numberLen + uuiLen;
// length of the number section
int numSectionLen = 2 + numberLen;
byte[] ba = new byte[byteLen];
int count = 0;
ba[count++] = 0x7E;
ba[count++] = (byte)ieLen;
ba[count++] = pd;
ba[count++] = (byte)numSectionLen;
ba[count++] = presentation;
ba[count++] = numberType;
// Put in the number
for (int i = 0; i < numberLen; i++)
{
ba[count++] = (byte)newNumber[i];
}
// Put in the UUI
ba[count++] = (byte)uuiLen;
for (int i = 0; i < uuiLen; i++)
{
ba[count++] = uui[i];
}
// Make the call
prm.UserData = new ThirdPartyCallController.UserData(ba, byteLen);
prm.CalledDirectoryNumber = calledNumber;
prm.CallingDevice = realCallingNumber;
try
{
serviceProvider.getThirdPartyCallController.MakeCall(prm, null);
}
catch (Exception exc)
{
MessageBox.Show(exc.Message);
}
}