Identifying Telephony Disconnects
One common request from Adobe Connect users is to find out why a user may have gotten disconnected from a conference call while using Adobe Connect. The important thing to realize here is that Adobe Connect will only disconnect a user from a conference call (with integrated telephony adaptor in place) if that user or a host in the meeting very deliberately choses one of a couple of options to disconnect the user.
The options for the in-meeting telephony disconnects are shown below:
Other than using these options, Adobe Connect does NOT send API commands to the telephony provider to hang up a conference user. So a common scenario we may have is to identify whether Adobe hung up a user (via a very deliberate action) or whether the user was hung up by an external action (external to Adobe Connect). We do so by looking at the Adobe logs in conjunction with the Telephony Provider’s logs (PGI, InterCall, MeetingOne, Arkadin, etc).
On the Telephony Provider side, they can also differentiate between receiving an API from Adobe to disconnect a user vs just getting notification that the line is no longer active (which happens when a user is hung up for a reason between the Provider and Adobe).
User phone connections can drop for a variety of reasons. Cell phone reception being dropped, IP phone connections (relying on an internet connection) going up and down (VPN, etc), user accidentally hanging up their own phone, a provider or carrier setting that sets a maximum connection time that gets exceeded, or a general carrier outage or issue in between Adobe and the Provider. This is the most common. Sometimes we see where a specific carrier will have a routing issue or other type of problem and it will interrupt that user’s connection to the conference. These are outside of the realm of Adobe support and what needs to happen in this case is that the users must open a ticket with their Provider and through their Provider, they can have them track the possible route of the calls through the specific carriers involved, to see where the disconnect and problem occurred.
With regards to log analysis (overview article of the applicable logs needed), here is a breakdown (example) of the two scenarios for each of the main telephony providers we serve on our Hosted and Licensed environment. ( I have ‘x’ed out some items like urls, conference codes, and phone numbers ):
MeetingOne
For an Adobe responsible hangup (deliberate):
In the meeting (application.log) log we will see:
2014-01-23 08:39:02 5552 (s)2641173 TelephonyServiceConnector, Calling action: conference-call-out –
2014-01-23 08:39:02 5552 (s)2641173 Asc-Telephony IS_HANG_UP_USER Hangup a user. TS CALL-10 conference-call-out –
2014-01-23 08:39:02 5552 (s)2641173 Asc-Telephony IS_HANG_UP_USER Hangup a user. TS RESP-10 conference-call-out –
In the MeetingOne_Adaptor.log we will see:
Jan 23, 2014 8:39:02 AM com.meetingone.adobeconnect.MeetingOneAdobeConnectAdaptor hangUp
INFO: entering hangUp
confId=5471dac0-fda8-4319-b8fe-c6b2a6942e73telephonyUserId=29834e741439299a5f251ed
Jan 23, 2014 8:39:02 AM com.meetingone.adobeconnect.bridge.BridgeProxyImpl hangUp
INFO: Bridge proxy – hangUp
Jan 23, 2014 8:39:02 AM com.meetingone.adobeconnect.bridge.BridgeProxyImpl sendXML2APIServer
INFO: posting xml to http://xxxxxxxxxx:80/api/audio?token=BRZ5930ecc7e013c5e76828ba7714390c7ae1d1b8
In the TelephonyService.log we will see:
[2014-01-23 08:39:02,255] [FCSj_Worker:8] (DEBUG) rtmp.RTMPConnection – Calling telephony action on request from MeetingApp. action: conference-call-out, parameters: {telephony-user-id=29834e741439299a5f251ed, conference-id=5471dac0-fda8-4319-b8fe-c6b2a6942e73, unset=true, action=conference-call-out, adaptor-id=meetingone-adaptor}
[2014-01-23 08:39:02,768] [FCSj_Worker:8] (DEBUG) rtmp.RTMPConnection – Returning telephony action response to MeetingApp. acrion: conference-call-out, response: {code=ok}
For an external hangup (not due to Adobe):
In the meeting (application.log) log we will see:
2014-01-23 08:51:47 5552 (s)2641173 Asc-UserManager IS_SET_USER_PHONE_STATUS set user phone status { userID=1, phoneStatus=0 } –
2014-01-23 08:51:47 5552 (s)2641173 shouldBeKilled p_userID=1 advUserDesc.isNotInLive=false –
2014-01-23 08:51:47 5552 (s)2641173 dispatchEventToClient: p_evtObj.type=userPhoneStatusChanged p_isAdvancedEvent=true –
2014-01-23 08:51:47 5552 (s)2641173 dispatchRPCEventToClient: userId=1 p_evtObj.type=userPhoneStatusChanged –
In the MeetingOne_Adaptor.log we will see:
Jan 23, 2014 8:51:47 AM com.meetingone.adobeconnect.bridge.BridgeProxyEventPump parseEvents
INFO: <?xml version=”1.0″ encoding=”UTF-8″?>
<m1_api_events>
<api_response id=”29834e74:1439299a5f2:-514b” status=”0″ >
<events>
<event source_id=”xxxxxxxxxx” source=”audio” timestamp=”2014-01-23T09:49:59.458-07:00″ id=”2706933″><type>OnHangUp</type><parameters count=”4″><int_param name=”status”>0</int_param><string_param name=”participant_id”>81652</string_param><string_param name=”room_id”></string_param><int_param name=”reason”>0</int_param></parameters></event>
</events>
</api_response>
</m1_api_events>
Jan 23, 2014 8:51:47 AM com.meetingone.adobeconnect.bridge.messageDispatcher run
INFO: processing events…
Jan 23, 2014 8:51:47 AM com.meetingone.adobeconnect.bridge.messageDispatcher run
INFO: received event OnHangUp
Jan 23, 2014 8:51:47 AM com.meetingone.adobeconnect.bridge.messageDispatcher ProcessHangupResponse
INFO: ProcessHangupResponse
Jan 23, 2014 8:51:47 AM com.meetingone.adobeconnect.bridge.BridgeProxyEventPump GetEvents
INFO: Get events
In the TelephonyService.log we will see:
[2014-01-23 08:51:47,249] [Timer-6] (DEBUG) rtmp.RTMPConnection – Calling MeetingApp method. methodName: telephonyUserOffline, parameters: {telephony-user-id=29834e741439299a5f25157, conference-id=5471dac0-fda8-4319-b8fe-c6b2a6942e73}
Arkadin
For an Adobe responsible hangup (deliberate):
In the meeting (application.log) log we will see:
2014-01-24 11:47:45 42656 (s)2641173 TelephonyServiceConnector, Calling action: conference-call-out –
2014-01-24 11:47:45 42656 (s)2641173 Asc-Telephony IS_HANG_UP_USER Hangup a user. TS CALL-10 conference-call-out –
2014-01-24 11:47:45 42656 (s)2641173 Asc-Telephony IS_HANG_UP_USER Hangup a user. TS RESP-10 conference-call-out –
In the Arkadin_Adaptor.log we will see:
[11:47:45] – [Verbose] [122421585] =>Bamboo : POST: <Arka_Trans MessageId=”Adobe2285″> <Arka_Drop UserId=”111248954663623″ ResponseURL=”https://xxxxxxx.adobeconnect.com/servlet/bamboo” ConfId=”6505088d-bf01-4b66-8b7c-35e2cf195a06\1″ MessageId=”Adobe2284″/></Arka_Trans>
[11:47:45] – [Info] [122421585] drop(122421585<6505088d-bf01-4b66-8b7c-35e2cf195a06\1>, Jim Johnson<111248954663623>)
[11:47:45] – [Verbose] [122421585] <=Adobe : hangUp(122421585, 7b15ec77-3c0a-439f-bc7f-d1fd77eb593b);
[11:47:46] – [Verbose] [122421585] =>Adobe : userOffline(7b15ec77-3c0a-439f-bc7f-d1fd77eb593b)
[11:47:46] – [Info] [122421585] PARTICIPANT_LEFT(122421585<6505088d-bf01-4b66-8b7c-35e2cf195a06\1>, Jim Johnson<111248954663623>)
[11:47:46] – [Verbose] [122421585] <=Bamboo : <Arka_NotifyUserLeave ConfId=”6505088d-bf01-4b66-8b7c-35e2cf195a06\1″ MessageId=”18″ UserId=”111248954663623″/>
In the TelephonyService.log we will see:
[2014-01-24 11:47:45,272] [FCSj_Worker:6] (DEBUG) rtmp.RTMPConnection – Calling telephony action on request from MeetingApp. action: conference-call-out, parameters: {telephony-user-id=7b15ec77-3c0a-439f-bc7f-d1fd77eb593b, conference-id=xxxxxxxxxx, unset=true, action=conference-call-out, adaptor-id=arkadin-adaptor}
[2014-01-24 11:47:45,272] [FCSj_Worker:6] (DEBUG) rtmp.RTMPConnection – Returning telephony action response to MeetingApp. acrion: conference-call-out, response: {code=ok}
[2014-01-24 11:47:46,600] [Thread :: bambooEvents] (DEBUG) rtmp.RTMPConnection – Calling MeetingApp method. methodName: telephonyUserOffline, parameters: {telephony-user-id=7b15ec77-3c0a-439f-bc7f-d1fd77eb593b, conference-id=xxxxxxxxxx}
For an external hangup (not due to Adobe):
In the meeting (application.log) log we will see:
2014-01-24 12:14:49 26224 (s)2641173 Asc-UserManager IS_SET_USER_PHONE_STATUS set user phone status { userID=2, phoneStatus=0 } –
2014-01-24 12:14:49 26224 (s)2641173 shouldBeKilled p_userID=2 advUserDesc.isNotInLive=true –
2014-01-24 12:14:49 26224 (s)2641173 dispatchEventToClient: p_evtObj.type=userPhoneStatusChanged p_isAdvancedEvent=true –
2014-01-24 12:14:49 26224 (s)2641173 dispatchRPCEventToClient: userId=2 p_evtObj.type=userPhoneStatusChanged –
2014-01-24 12:14:49 26224 (s)2641173 Remove the user 2 –
2014-01-24 12:14:49 26224 (s)2641173 Asc-UserManager IS_REMOVE_USER Removing user. { userID=2, eject=undefined } –
In the Arkadin_Adaptor.log we will see:
[12:14:49] – [Verbose] [122421585] <=Bamboo : <Arka_NotifyUserLeave ConfId=”9e73d0b5-0525-4e17-9d77-af7a1e42a0e7\1″ MessageId=”9″ UserId=”26147684307333456″/>
[12:14:49] – [Info] [122421585] PARTICIPANT_LEFT(122421585<9e73d0b5-0525-4e17-9d77-af7a1e42a0e7\1>, xxxxxxxxxx<26147684307333456>)
[12:14:49] – [Verbose] [122421585] =>Adobe : userOffline(4d267465-ebd1-4968-893c-1428e61eaa2b)
In the TelephonyService.log we will see:
[2014-01-24 12:14:49,679] [Thread :: bambooEvents] (DEBUG) rtmp.RTMPConnection – Calling MeetingApp method. methodName: telephonyUserOffline, parameters: {telephony-user-id=4d267465-ebd1-4968-893c-1428e61eaa2b, conference-id=122421585}
InterCall
For an Adobe responsible hangup (deliberate):
In the meeting (application.log) log we will see:
2014-01-24 12:41:38 80764 (s)2641173 TelephonyServiceConnector, Calling action: conference-call-out –
2014-01-24 12:41:38 80764 (s)2641173 Asc-Telephony IS_HANG_UP_USER Hangup a user. TS CALL-10 conference-call-out –
2014-01-24 12:41:38 80764 (s)2641173 Asc-Telephony IS_HANG_UP_USER Hangup a user. TS RESP-10 conference-call-out –
In the Intercall_Adaptor.log we will see:
[2014-01-24 12:41:38,208] [FCSj_Worker:11] (DEBUG) Intercall.IntercallConference – FCSj_Worker:11:com.macromedia.breeze_ext.telephony.Intercall.IntercallConference:hangUp:Intercall-1.3:intercall-adaptor:Conference Code: xxxxxxxxx
[2014-01-24 12:41:38,208] [FCSj_Worker:11] (DEBUG) Intercall.IntercallConference – FCSj_Worker:11:com.macromedia.breeze_ext.telephony.Intercall.IntercallConference:hangUp:Intercall-1.3:intercall-adaptor:Conversation Id: xxxxxx.adobeconnect.com_intercall-adaptor_323_-555337
[2014-01-24 12:41:38,208] [FCSj_Worker:11] (DEBUG) Intercall.IntercallConference – FCSj_Worker:11:com.macromedia.breeze_ext.telephony.Intercall.IntercallConference:hangUp:Intercall-1.3:intercall-adaptor:Connect part Id: Jim Johnson_196253313@1-xxx-xxx-xxxx
[2014-01-24 12:41:38,208] [FCSj_Worker:11] (DEBUG) Intercall.IntercallConference – FCSj_Worker:11:com.macromedia.breeze_ext.telephony.Intercall.IntercallConference:hangUp:Intercall-1.3:intercall-adaptor:Intercall part Id: 1
[2014-01-24 12:41:38,208] [FCSj_Worker:11] (DEBUG) Intercall.IntercallConference – FCSj_Worker:11:com.macromedia.breeze_ext.telephony.Intercall.IntercallConference:hangUp:Intercall-1.3:intercall-adaptor:Hanging up user
In the TelephonyService.log we will see:
[2014-01-24 12:41:38,208] [FCSj_Worker:11] (DEBUG) rtmp.RTMPConnection – Calling telephony action on request from MeetingApp. action: conference-call-out, parameters: {telephony-user-id=Jim Johnson_196253313@1-xxx-xxx-xxxx, conference-id=xxxxxx.adobeconnect.com_intercall-adaptor_323_-555337, unset=true, action=conference-call-out, adaptor-id=intercall-adaptor}
[2014-01-24 12:41:38,302] [FCSj_Worker:11] (DEBUG) rtmp.RTMPConnection – Returning telephony action response to MeetingApp. acrion: conference-call-out, response: {code=ok}
For an external hangup (not due to Adobe):
In the meeting (application.log) log we will see:
2014-01-27 11:09:58 99308 (s)2641173 Asc-UserManager IS_SET_USER_PHONE_STATUS set user phone status { userID=2, phoneStatus=0 } –
2014-01-27 11:09:58 99308 (s)2641173 shouldBeKilled p_userID=2 advUserDesc.isNotInLive=true –
2014-01-27 11:09:58 99308 (s)2641173 dispatchEventToClient: p_evtObj.type=userPhoneStatusChanged p_isAdvancedEvent=true –
2014-01-27 11:09:58 99308 (s)2641173 dispatchRPCEventToClient: userId=2 p_evtObj.type=userPhoneStatusChanged –
2014-01-27 11:09:58 99308 (s)2641173 Remove the user 2 –
2014-01-27 11:09:58 99308 (s)2641173 Asc-UserManager IS_REMOVE_USER Removing user. { userID=2, eject=undefined } –
In the Intercall_Adaptor.log we will see:
[2014-01-27 11:09:58,902] [http-bio-9443-exec-6] (DEBUG) Intercall.IntercallEventHandler – http-bio-9443-exec-6:com.macromedia.breeze_ext.telephony.Intercall.IntercallEventHandler:onEvent:Intercall-1.3::Event received:
[2014-01-27 11:09:58,902] [http-bio-9443-exec-6] (DEBUG) Intercall.IntercallEventHandler – http-bio-9443-exec-6:com.macromedia.breeze_ext.telephony.Intercall.IntercallEventHandler:onEvent:Intercall-1.3::Got events for conversation xxxxxx.adobeconnect.com_intercall-adaptor_251_-523503: com.intercall.www.CCAPICallback.xsd.spi.event.ParticipantLeftEvent@ceebb956
[2014-01-27 11:09:58,902] [http-bio-9443-exec-6] (DEBUG) Intercall.IntercallCallback – http-bio-9443-exec-6:com.macromedia.breeze_ext.telephony.Intercall.IntercallCallback:onParticipantLeftEvent:Intercall-1.3:intercall-adaptor:Now handling ParticipantLeftEvent for conversation ID xxxxxx.adobeconnect.com_intercall-adaptor_251_-523503
[2014-01-27 11:09:58,902] [http-bio-9443-exec-6] (DEBUG) Intercall.IntercallConference – http-bio-9443-exec-6:com.macromedia.breeze_ext.telephony.Intercall.IntercallConference:removeParticipant:Intercall-1.3:intercall-adaptor:Conference Code:xxxxxxxx
[2014-01-27 11:09:58,902] [http-bio-9443-exec-6] (DEBUG) Intercall.IntercallConference – http-bio-9443-exec-6:com.macromedia.breeze_ext.telephony.Intercall.IntercallConference:removeParticipant:Intercall-1.3:intercall-adaptor:Conversation Id: xxxxxx.adobeconnect.com_intercall-adaptor_251_-523503
[2014-01-27 11:09:58,902] [http-bio-9443-exec-6] (DEBUG) Intercall.IntercallConference – http-bio-9443-exec-6:com.macromedia.breeze_ext.telephony.Intercall.IntercallConference:removeParticipant:Intercall-1.3:intercall-adaptor:ConnectPartId: 3
[2014-01-27 11:09:58,902] [http-bio-9443-exec-6] (DEBUG) Intercall.IntercallConference – http-bio-9443-exec-6:com.macromedia.breeze_ext.telephony.Intercall.IntercallConference:removeParticipant:Intercall-1.3:intercall-adaptor:Removing this participant
In the TelephonyService.log we will see:
[2014-01-27 11:09:58,902] [http-bio-9443-exec-6] (DEBUG) rtmp.RTMPConnection – Calling MeetingApp method. methodName: telephonyUserOffline, parameters: {telephony-user-id=3, conference-id=xxxxxx.adobeconnect.com_intercall-adaptor_251_-523503}
PGI
For an Adobe responsible hangup (deliberate):
In the meeting (application.log) log we will see:
2014-01-27 11:35:33 120876 (s)2641173 Asc-Telephony IS_HANG_UP_USER Hangup a user. TS CALL-10 conference-call-out –
2014-01-27 11:35:33 120876 (s)2641173 Asc-UserManager IS_SET_USER_PHONE_STATUS set user phone status { userID=2, phoneStatus=0 } –
In the Premiere_Adaptor.log we will see:
[2014-01-27 11:35:33,628] [FCSj_Worker:15] (DEBUG) gateway.PTekGateway – PREMIERE TEL v800.000[FCSj_Worker:15]com.macromedia.breeze_ext.premiere.gateway.PTekGateway.hangUp:628:hangUp request received for confId:xxxxxx telephonyUserId:2501-129866748
[2014-01-27 11:35:33,629] [FCSj_Worker:15] (DEBUG) gateway.PTekConnection – PREMIERE TEL v800.000[premiere-adaptor][FCSj_Worker:15]com.macromedia.breeze_ext.premiere.gateway.Util$LoggingOutputStream.flush:162:
<PremiereConferencing ID=”xxxxxx” MsgID=”107″ PW=”xxxxxxxx” WebID=”xxxxxx” WebPW=”xxxxxxxx”>
<HangupParticipant ConfID=”xxxxxx” PartID=”2501-129866748″/>
</PremiereConferencing>
[2014-01-27 11:35:33,913] [Thread-677] (DEBUG) gateway.ConnectionHandler – PREMIERE TEL v800.000[premiere-adaptor][Thread-677]com.macromedia.breeze_ext.premiere.gateway.Util$LoggingOutputStream.flush:162:
<PremiereConferencing>
<UnsolicitedPartInfo>
<Result ErrorCode=”0″/>
<Participant ANI=”xxxxxxxxxx” ConfID=”xxxxxx” Connected=”False” DNIS=”xxxxxxxxxx” EndDate=”20140127″ EndTime=”173533″ Hold=”False” InQA=”False” IsQATalker=”False” ListenLevel=”0″ ListenOnly=”False” Mute=”False” PartID=”2501-129866748″ PartType=”Normal” StartDate=”20140127″ StartTime=”173417″ SubConfID=”” VoiceLevel=”0″/>
</UnsolicitedPartInfo>
</PremiereConferencing>
In the TelephonyService.log we will see:
[2014-01-27 11:35:33,628] [FCSj_Worker:15] (DEBUG) rtmp.RTMPConnection – Calling telephony action on request from MeetingApp. action: conference-call-out, parameters: {telephony-user-id=2501-129866748, conference-id=xxxxxx, unset=true, action=conference-call-out, adaptor-id=premiere-adaptor}
[2014-01-27 11:35:33,913] [Thread-677] (DEBUG) rtmp.RTMPConnection – Calling MeetingApp method. methodName: telephonyUserOffline, parameters: {telephony-user-id=2501-129866748, conference-id=xxxxxx}
For an external hangup (not due to Adobe):
In the meeting (application.log) log we will see:
2014-01-27 11:38:03 120876 (s)2641173 Asc-UserManager IS_SET_USER_PHONE_STATUS set user phone status { userID=3, phoneStatus=0 } –
2014-01-27 11:38:03 120876 (s)2641173 shouldBeKilled p_userID=3 advUserDesc.isNotInLive=true –
2014-01-27 11:38:03 120876 (s)2641173 dispatchEventToClient: p_evtObj.type=userPhoneStatusChanged p_isAdvancedEvent=true –
2014-01-27 11:38:03 120876 (s)2641173 dispatchRPCEventToClient: userId=3 p_evtObj.type=userPhoneStatusChanged –
2014-01-27 11:38:03 120876 (s)2641173 Remove the user 3 –
2014-01-27 11:38:03 120876 (s)2641173 Asc-UserManager IS_REMOVE_USER Removing user. { userID=3, eject=undefined } –
In the Premiere_Adaptor.log we will see:
<Participant ANI=”xxxxxxxxxx” ConfID=”xxxxxxx” Connected=”False” DNIS=”xxxxxxxxxx” EndDate=”20140127″ EndTime=”173803″ Hold=”False” InQA=”False” IsQATalker=”False” ListenLevel=”0″ ListenOnly=”False” Mute=”False” PartID=”2501-130152300″ PartType=”Normal” StartDate=”20140127″ StartTime=”173634″ SubConfID=”” VoiceLevel=”0″/>
</UnsolicitedPartInfo>
</PremiereConferencing>
[2014-01-27 11:38:04,019] [Thread-677] (INFO ) gateway.ConnectionHandler – PREMIERE TEL v800.000[premiere-adaptor][Thread-677]com.macromedia.breeze_ext.premiere.gateway.ConnectionHandler.onUnsolicitedPartInfoMsg:337:Got error code: 0
In the TelephonyService.log we will see: