Author Message
Wenbo
Joined: Jun 18, 2019
Messages: 3
Offline
Hi Sir or Madam at Avaya,

We recently acquired Tsapi client SDK 8.1. We want to use SingleStepTransferCall functionality. We would like to transfer the call as soon as it arrives.

However we are not able to perform single step transfer call, after we receive the CSTA_DELIVERED event. On the code side we are using AttSingleStepTransferCall and CSTAEscapeDevice to perform the transfer. And both returned true. Please see attached BlindTransferCall.txt.


From TSAPI Spy, we saw that single step transfer call resulted into a UniversalFailure invalidCstaDeviceIdentifier. Please see attached TsapiSpylog.txt, 07/03/19 14:02:42.206 time stamp for transfer and 07/03/19 14:02:42.209 for the failure.

Note that 13602 is a valid number, we are able to perform a single step transfer upon CSTA_ESTABLISHED event.


We would like to know under what conditions should we be able to perform single step transfer upon delivered event. Because when we receive the delivered event, the device state is alerting and according to the documentation, Tsapi is able to perform single step transfer at alerting state.
Wenbo
Joined: Jun 18, 2019
Messages: 3
Offline
It seems that attachments and editing doesn't work

bool BlindTransferCall(long acsHandle, long callID, String^ connectionDeviceID, short connectionDevIDType,
String^ deviceToTransfer, String^ privateData) override
{
ConnectionID_t connection;
RetCode_t rc;
//uui data section;
ATTPrivateData_t attPrivateData;
DeviceID_t transferVDN;

//set private data
(void)strcpy_s(attPrivateData.vendor, "VERSION");
attPrivateData.data[0] = PRIVATE_DATA_ENCODING;

attMakeVersionString("3-8", &(attPrivateData.data[1]));
attPrivateData.length = strlen(&attPrivateData.data[1]) + 2;

//set connection data
connection.callID = callID;
strcpy_s(connection.deviceID, (char *)Marshal::StringToHGlobalAnsi(connectionDeviceID).ToPointer());
connection.devIDType = (ConnectionID_Device_t)connectionDevIDType;
strcpy_s(transferVDN, (char *)Marshal::StringToHGlobalAnsi(deviceToTransfer).ToPointer());

// Prepare for blind transfer
rc = attSingleStepTransferCall(&attPrivateData, &connection, &transferVDN);

// Perform actual transfer
rc = cstaEscapeService(acsHandle, 12, (PrivateData_t *)&attPrivateData);


if (rc >= 0)
return true;
else
return 0;
}
Wenbo
Joined: Jun 18, 2019
Messages: 3
Offline
134353216: [07/03/19 14:02:17.649]
134353216: ESTABLISHED CONNECTION TO TSERVER:
134353216: AVAYA#MLTVCM#CSTA#MLTPAAES01
134353216: Login: ctiuser Application Name: ScoutRelay Server Connection ID: 0

134353216: [07/03/19 14:02:17.671]
134353216: RECEIVED FROM APPLICATION:
134353216: InvokeID 1
134353216: ACSOpenStream ::=
134353216: {
134353216: streamType stCsta,
134353216: serverID "AVAYA#MLTVCM#CSTA#MLTPAAES01",
134353216: loginID "ctiuser",
134353216: cryptPass 'DA8A90C1A67265629EDDC91CFE459DB2C4DDC91CFE459DB2C4DDC91CFE459DB2C4DDC91CFE459DB2'H,
134353216: applicationName "ScoutRelay",
134353216: level acsLevel1,
134353216: apiVer "TS1-2",
134353216: libVer "AES8.1.0 Build 9",
134353216: tsrvVer ""
134353216: }
134353216: Private Data ::=
134353216: {
134353216: vendor "VERSION"
134353216: length 9
134353216: data
134353216: {
134353216: 00 "ECS#3-8"
134353216: }
134353216: }

134353216: [07/03/19 14:02:17.673]
134353216: RECEIVED FROM APPLICATION:
134353216: InvokeID 2
134353216: CSTAMonitorCallsViaDevice ::=
134353216: {
134353216: deviceID "18045",
134353216: monitorFilter
134353216: {
134353216: call { },
134353216: feature { },
134353216: agent { },
134353216: maintenance { },
134353216: privateFilter 0
134353216: }
134353216: }

134353216: [07/03/19 14:02:17.690]
134353216: RECEIVED FROM TSERVER:
134353216: ACSOpenStreamConfEvent
134353216: Application not notified (notifyAll == FALSE)

134353216: [07/03/19 14:02:17.691]
134353216: RECEIVED FROM TSERVER:
134353216: CSTAMonitorConfEvent
134353216: Application not notified (notifyAll == FALSE)

134353216: [07/03/19 14:02:27.290]
134353216: DELIVERED TO APPLICATION:
134353216: InvokeID 1
134353216: ACSOpenStreamConfEvent ::=
134353216: {
134353216: apiVer "ST2",
134353216: libVer "AES8.1.0 Build 9",
134353216: tsrvVer "6.3.3 Build 116",
134353216: drvrVer "6.3.3 Build 116"
134353216: }
134353216: Private Data ::=
134353216: {
134353216: vendor "ECS"
134353216: length 3
134353216: data
134353216: {
134353216: 00 "8"
134353216: }
134353216: }

134353216: [07/03/19 14:02:27.291]
134353216: DELIVERED TO APPLICATION:
134353216: InvokeID 2
134353216: CSTAMonitorConfEvent ::=
134353216: {
134353216: monitorCrossRefID 1,
134353216: monitorFilter
134353216: {
134353216: call { cfOriginated, cfServiceInitiated },
134353216: feature { ffCallInformation, ffDoNotDisturb, ffForwarding, ffMessageWaiting },
134353216: agent { afLoggedOn, afLoggedOff, afNotReady, afReady, afWorkNotReady, afWorkReady },
134353216: maintenance { mfBackInService, mfOutOfService },
134353216: privateFilter 0
134353216: }
134353216: }
134353216: ATTMonitorConfEvent ::=
134353216: {
134353216: usedFilter { }
134353216: }

134353216: [07/03/19 14:02:36.458]
134353216: RECEIVED FROM TSERVER:
134353216: DeliveredEvent
134353216: Application not notified (notifyAll == FALSE)

134353216: [07/03/19 14:02:36.467]
134353216: DELIVERED TO APPLICATION:
134353216: MonitorCrossRefID 1
134353216: DeliveredEvent ::=
134353216: {
134353216: connection
134353216: {
134353216: callID 6440,
134353216: deviceID "18045",
134353216: devIDType staticId
134353216: },
134353216: alertingDevice
134353216: {
134353216: deviceID "18045",
134353216: deviceIDType explicitPrivateLocalNumber,
134353216: deviceIDStatus idProvided
134353216: },
134353216: callingDevice
134353216: {
134353216: deviceID "4256154648",
134353216: deviceIDType explicitPrivateUnknown,
134353216: deviceIDStatus idProvided
134353216: },
134353216: calledDevice
134353216: {
134353216: deviceID "18045",
134353216: deviceIDType explicitPrivateLocalNumber,
134353216: deviceIDStatus idProvided
134353216: },
134353216: lastRedirectionDevice
134353216: {
134353216: deviceID "",
134353216: deviceIDType explicitPublicUnknown,
134353216: deviceIDStatus idNotRequired
134353216: },
134353216: localConnectionInfo csNone,
134353216: cause ecNewCall
134353216: }
134353216: ATTV12DeliveredEvent ::=
134353216: {
134353216: deliveredType deliveredToAcd,
134353216: trunkGroup "100",
134353216: trunkMember "36",
134353216: split "",
134353216: lookaheadInfo
134353216: {
134353216: type laiNoInterflow,
134353216: priority laiNotInQueue,
134353216: hours 0,
134353216: minutes 0,
134353216: seconds 0,
134353216: sourceVDN "",
134353216: uSourceVDN
134353216: {
134353216: }
134353216: },
134353216: userEnteredCode
134353216: {
134353216: type ueNone,
134353216: indicator ueCollect,
134353216: data "",
134353216: collectVDN ""
134353216: },
134353216: userInfo
134353216: {
134353216: type uuiNone,
134353216: data ''H
134353216: },
134353216: reason arNone,
134353216: originalCallInfo
134353216: {
134353216: reason orNone,
134353216: callingDevice
134353216: {
134353216: deviceID "",
134353216: deviceIDType explicitPublicUnknown,
134353216: deviceIDStatus idNotRequired
134353216: },
134353216: calledDevice
134353216: {
134353216: deviceID "",
134353216: deviceIDType explicitPublicUnknown,
134353216: deviceIDStatus idNotRequired
134353216: },
134353216: trunkGroup "",
134353216: trunkMember "",
134353216: lookaheadInfo
134353216: {
134353216: type laiNoInterflow,
134353216: priority laiNotInQueue,
134353216: hours 0,
134353216: minutes 0,
134353216: seconds 0,
134353216: sourceVDN "",
134353216: uSourceVDN
134353216: {
134353216: }
134353216: },
134353216: userEnteredCode
134353216: {
134353216: type ueNone,
134353216: indicator ueCollect,
134353216: data "",
134353216: collectVDN ""
134353216: },
134353216: userInfo
134353216: {
134353216: type uuiNone,
134353216: data ''H
134353216: },
134353216: ucid "00000000000000000000",
134353216: callOriginatorInfo
134353216: {
134353216: hasInfo FALSE,
134353216: callOriginatorType 0
134353216: },
134353216: flexibleBilling FALSE,
134353216: deviceHistory
134353216: {
134353216: }
134353216: },
134353216: distributingDevice
134353216: {
134353216: deviceID "",
134353216: deviceIDType explicitPublicUnknown,
134353216: deviceIDStatus idNotRequired
134353216: },
134353216: ucid "00001064401562187756",
134353216: callOriginatorInfo
134353216: {
134353216: hasInfo FALSE,
134353216: callOriginatorType 0
134353216: },
134353216: flexibleBilling FALSE,
134353216: deviceHistory
134353216: {
134353216: },
134353216: distributingVDN
134353216: {
134353216: deviceID "18045",
134353216: deviceIDType explicitPrivateLocalNumber,
134353216: deviceIDStatus idProvided
134353216: }
134353216: }

134353216: [07/03/19 14:02:42.206]
134353216: RECEIVED FROM APPLICATION:
134353216: InvokeID 12
134353216: CSTAEscapeService ::=
134353216: {
134353216: null NULL
134353216: }
134353216: ATTV14SingleStepTransferCall ::=
134353216: {
134353216: activeCall
134353216: {
134353216: callID 6440,
134353216: deviceID "18045",
134353216: devIDType staticId
134353216: },
134353216: transferredTo "13602"
134353216: }

134353216: [07/03/19 14:02:42.209]
134353216: RECEIVED FROM TSERVER:
134353216: UniversalFailureConfEvent
134353216: Application not notified (notifyAll == FALSE)

134353216: [07/03/19 14:02:42.209]
134353216: DELIVERED TO APPLICATION:
134353216: InvokeID 12
134353216: UniversalFailureConfEvent ::=
134353216: {
134353216: error invalidCstaDeviceIdentifier
134353216: }

134353216: [07/03/19 14:03:08.655]
134353216: RECEIVED FROM TSERVER:
134353216: ConnectionClearedEvent
134353216: Application not notified (notifyAll == FALSE)

134353216: [07/03/19 14:03:08.669]
134353216: DELIVERED TO APPLICATION:
134353216: MonitorCrossRefID 1
134353216: ConnectionClearedEvent ::=
134353216: {
134353216: droppedConnection
134353216: {
134353216: callID 6440,
134353216: deviceID "4256154648",
134353216: devIDType staticId
134353216: },
134353216: releasingDevice
134353216: {
134353216: deviceID "4256154648",
134353216: deviceIDType explicitPrivateUnknown,
134353216: deviceIDStatus idProvided
134353216: },
134353216: localConnectionInfo csNone,
134353216: cause ecNone
134353216: }
134353216: ATTConnectionClearedEvent ::=
134353216: {
134353216: userInfo
134353216: {
134353216: type uuiNone,
134353216: data ''H
134353216: },
134353216: deviceHistory
134353216: {
134353216: {
134353216: olddeviceID "4256154648",
134353216: cause ecNone,
134353216: oldconnectionID
134353216: {
134353216: callID 6440,
134353216: deviceID "4256154648",
134353216: devIDType staticId
134353216: }
134353216: }
134353216: }
134353216: }

134353216: [07/03/19 14:03:08.669]
134353216: RECEIVED FROM TSERVER:
134353216: CallClearedEvent
134353216: Application not notified (notifyAll == FALSE)

134353216: [07/03/19 14:03:08.669]
134353216: DELIVERED TO APPLICATION:
134353216: MonitorCrossRefID 1
134353216: CallClearedEvent ::=
134353216: {
134353216: clearedCall
134353216: {
134353216: callID 6440,
134353216: deviceID "0",
134353216: devIDType dynamicId
134353216: },
134353216: localConnectionInfo csNone,
134353216: cause ecNone
134353216: }
134353216: ATTCallClearedEvent ::=
134353216: {
134353216: reason arAnswerNormal
134353216: }

134353216: [07/03/19 14:03:27.353]
134353216: RECEIVED FROM APPLICATION:
134353216: InvokeID 9
134353216: CSTAQueryAgentState ::=
134353216: {
134353216: device ""
134353216: }
134353216: Private Data ::=
134353216: {
134353216: vendor "VERSION"
134353216: length 1024
134353216: data
134353216: {
134353216: 00 45 43 53 23 33 2d 38 00 06 00 00 00 00 08 00
134353216: 00 00 00 00 00 00 cc cd da 06 00 00 00 00 08 00
134353216: 00 00 00 00 00 00 00 cd da 06 00 00 00 00 04 00
134353216: 00 00 00 00 00 00 d4 cd da 06 00 00 00 00 04 00
134353216: 00 00 00 00 00 00 d8 cd da 06 00 00 00 00 04 00
134353216: 00 00 00 00 00 00 40 0c a3 06 00 00 00 00 46 00
134353216: 00 00 00 00 00 00 b8 40 a0 06 00 00 00 00 20 00
134353216: 00 00 00 00 00 00 38 54 9c 06 00 00 00 00 a0 00
134353216: 00 00 00 00 00 00 e8 cd da 06 00 00 00 00 02 00
134353216: 00 00 00 00 00 00 ab 08 01 70 23 a9 3b da bc ce
134353216: da 06 32 88 20 70 40 d2 45 01 1c 00 00 00 94 0b
134353216: 7d 07 00 00 00 00 70 e4 1b 07 00 00 00 00 70 d0
134353216: 19 06 00 00 00 00 8f 00 00 06 08 00 00 00 40 0c
134353216: a3 06 b8 40 a0 06 38 54 9c 06 09 00 00 00 7f a9
134353216: 3b da 30 ec 45 01 70 d0 19 06 82 80 20 70 70 e4
134353216: 1b 07 40 0c a3 06 00 00 00 00 b8 40 a0 06 00 00
134353216: 00 00 08 00 00 00 08 00 00 10 70 d0 19 06 00 00
134353216: 00 00 54 01 00 00 01 00 00 00 00 00 00 00 38 54
134353216: 9c 06 94 0b 7d 07 b8 cf da 06 00 00 00 00 c8 cf
134353216: da 06 00 00 00 00 1d d7 1c 77 1c eb 08 af 20 4b
134353216: 60 05 10 4b 60 05 01 00 00 00 02 00 00 00 e3 37
134353216: 1b 77 28 4d 9a 06 00 00 00 00 01 00 00 00 48 ce
134353216: da 06 10 00 00 00 70 47 60 05 50 27 9f 06 64 00
134353216: 00 00 0b 00 00 00 10 4b 60 05 00 00 00 00 a8 0c
134353216: e2 00 00 00 00 00 e0 43 63 05 01 00 00 00 c4 31
134353216: 5a 70 b8 ce da 06 8b 8c f3 6f 00 00 3e 01 00 00
134353216: 00 00 10 4b 60 05 a0 8c f3 6f c4 ce da 06 bd 8c
134353216: f3 6f 10 4b 60 05 d8 ce da 06 28 4d 9a 06 e0 43
134353216: 63 05 01 00 00 00 10 4b 60 05 e8 ce da 06 1c cf
134353216: da 06 b8 f4 f2 6f 28 4d 9a 06 28 4d 9a 06 30 12
134353216: f4 6f 72 10 f4 6f 93 ab 3b da 94 0b 7d 07 0c d0
134353216: da 06 ec 53 9a 06 28 4d 9a 06 00 00 00 00 10 4b
134353216: 60 05 38 cf da 06 c8 fc 4e 70 ff ff ff ff 72 10
134353216: f4 6f 4a 37 fc 6f cb ab 3b da 94 0b 7d 07 70 d0
134353216: 19 06 ec 53 9a 06 14 d0 da 06 24 d0 da 06 48 47
134353216: 4b 70 ff ff ff ff 4a 37 fc 6f 89 2f fc 6f bf b4
134353216: 3b da 60 43 a0 06 00 00 00 00 94 0b 7d 07 04 00
134353216: 00 00 07 00 00 00 1c 00 00 11 44 cf da 06 6d 1c
134353216: 0d 70 38 01 00 00 88 cf da 06 00 00 00 00 00 00
134353216: 00 00 1c 00 00 11 00 00 00 00 00 00 00 00 00 00
134353216: 00 00 e0 43 63 05 ec d0 da 06 00 00 00 00 c0 cf
134353216: da 06 a0 c0 9c 06 01 00 00 00 64 d0 da 06 f0 20
134353216: 0d 70 60 43 a0 06 00 00 00 00 20 00 00 00 94 0b
134353216: 7d 07 c8 0b 7d 07 12 00 00 00 f4 0a 7d 07 13 00
134353216: 00 00 ad ac f4 6f b1 48 1f 07 41 b7 f4 6f 94 0b
134353216: 7d 07 70 d0 19 06 94 0b 7d 07 b1 48 1f 07 94 0b
134353216: 7d 07 12 00 00 00 30 d0 da 06 4f ae f4 6f bf b4
134353216: 3b da 60 43 a0 06 70 d0 19 06 94 0b 7d 07 00 00
134353216: 00 00 94 0b 7d 07 a0 8c f3 6f 24 d0 da 06 00 00
134353216: 00 00 b1 48 1f 07 a4 d0 da 06 f0 e5 4b 70 ff ff
134353216: ff ff 4f ae f4 6f 2d b2 f4 6f c8 0b 7d 07 c8 0b
134353216: 7d 07 00 00 00 00 c7 b4 3b da 94 0b 7d 07 69 bd
134353216: 1c 77 c8 0b 7d 07 38 d3 9e 06 20 ed 45 01 b8 d0
134353216: da 06 7b f3 f2 6f c8 f5 08 af b8 d0 da 06 a0 1c
134353216: 0c 70 00 00 00 00 f7 b4 3b da 70 d0 19 06 e0 43
134353216: 63 05 c8 0b 7d 07 00 00 00 00 70 d0 19 06 e0 43
134353216: 63 05 d4 d5 da 06 69 bd 1c 77 5f 00 01 00 04 0f
134353216: 09 00 00 00 00 80 00 00 00 00 b8 d0 da 06 00 f5
134353216: 08 af d0 d0 da 06 30 d1 da 06 41 b3 f4 6f 48 b3
134353216: f4 6f bf b5 3b da ac d1 da 06 40 d1 da 06 d4 d5
134353216: da 06 18 d3 45 01 1d 00 00 00 50 b3 f4 6f 68 ad
134353216: f4 6f 60 b3 f4 6f 68 ad f4 6f a7 6e 7e d6 e0 f5
134353216: f2 6f 80 d5 da 06 40 d1 da 06 94 0b 7d 07 e0 43
134353216: 63 05 01 00 00 00 00 c8 d9 6e 00 00 00 00 48 d1
134353216: }
134353216: }

134353216: [07/03/19 14:03:27.350]
134353216: RECEIVED FROM TSERVER:
134353216: UniversalFailureConfEvent
134353216: Application not notified (notifyAll == FALSE)

134353216: [07/03/19 14:03:27.350]
134353216: DELIVERED TO APPLICATION:
134353216: InvokeID 9
134353216: UniversalFailureConfEvent ::=
134353216: {
134353216: error objectNotKnown
134353216: }

134353216: [07/03/19 14:03:35.432]
134353216: RECEIVED FROM APPLICATION:
134353216: InvokeID 0
134353216: ACSAbortStream ::=
134353216: {
134353216: null NULL
134353216: }

JohnBiggs
Joined: Jun 20, 2005
Messages: 1139
Location: Rural, Virginia
Offline
You must answer the call before you can transfer it (i.e. a ringing call can not be transferred to a ringing call), one of the two calls must be in a stable answered state, and if the other call is unstable (ringing), it must be an outbound call from one of the transferring devices (stations).
Go to:   
Mobile view