Posts in Category "Telephony"

PGi EMEA adaptor deprecated

PGi wants to move all its PGi-EMEA accounts to PGi-NA and therefore PGi EMEA adaptor has been deprecated. For more details please click here

XML API Tips: Arkadin Profile Creation – Display Numbers

Previously I posted a blog entry on creating audio profiles via the XML API (http://blogs.adobe.com/connectsupport/xml-api-tips-creating-telephony-profiles-via-the-xml-api/).  This is an add-on article describing one additional step for finalizing an Arkadin profile.

Once you complete the Arkadin profile, you may notice the Conference Numbers aren’t showing up at the bottom of the profile (in the UI).  When you build a profile in the UI (without the API) and you save the profile, it will display the Conference Number and Conference Number Toll Free in a datagrid below the credentials.  When you create a profile with the API, it will not (unless you go into the UI and then click Edit and then Save again).

ark1

Notice no Conference Numbers listed in the grid below the Profile Status.

Also, if you create the profile with the API (and you don’t go into the UI and click Edit/Save), you may notice that the conference numbers are not displayed in the Dial In dialogue box in the meeting room for participants.  It will only list the Moderator and Participant codes.

ark3

Notice, no numbers appearing to call into…

To get the numbers to show up in the Profile and in the dial-in dialogue box inside of the meeting room itself, you need to add one additional web service call to your workflow as below:

Once you build your telephony profile from the previous article,  you need to take the profile-id value and make the ‘telephony-profile-dial-in-number-update‘ API call to input the new numbers as such:

/api/xml?action=telephony-profile-dial-in-number-update&profile-id=1379585623&location=Toll%20access%20number&conf-number=+1-8xx-xxx-xxxx&location=Toll%20free%20access%20number&conf-number=+1-xxx-xxx-xxxx

Where you add the profile-id
where you add all the ‘locations’ you want (the string for the conference number description)
where you add the applicable conference numbers for each (toll + toll free for instance)

After completing this step, if you view the profile in the UI again, you see the numbers appear:

ark2

Conference Numbers now listed in the grid below the Profile Status.

 

ark4

Notice now the number(s) appear.

Arkadin Audio Profile Conference Numbers

For Arkadin customers who integrate Arkadin audio profiles into Adobe Connect Meeting rooms, they need to be very careful in what numbers they are inputting into the profile fields when they are creating the telephony profiles.  Also, if these profiles are being provisioned automatically by an application utilizing the API, developers need to make sure the values they are passing in via the web services are also correct.

Arkadin has 3 phone numbers that are required when building an audio profile (UI pictured below).

arkprof

  1. Toll Access Number‘ (in the API this is: ‘x-tel-arkadin-conference-number‘)
  2. Toll Free Access Number‘ (in the API this is ‘x-tel-arkadin-conference-number-free‘)
  3. SIP Access Number‘ (in the API this is ‘x-tel-arkadin-conference-number-uvline‘)

It is crucial that you do NOT inadvertently put the Toll number (a non ’1-8xx’ number) in for the Toll Free value and vice versa.  If you put a toll number in for the toll free number, the audio profile will save correctly, HOWEVER the UV line (Universal Voice) will not be able to connect to your meeting room when you try to start the audio (for Audio Broadcast and for Meeting Recording with Arkadin).  Universal Voice can only call out to a toll FREE number.  So if you are seeing your Arkadin audio conference not connecting correctly in the Adobe Connect Meeting room, please make sure to check your Arkadin profile that is assigned to the meeting, to make sure the toll free number is actually a toll free number, and the toll number is also correct.  The SIP access number should be set to the toll FREE number as well.

 

XML API Tips: Creating Telephony Profiles Via the XML API

UPDATED – 4-11-2014

The workflow for creating telephony profiles for INTEGRATED telephony providers via the XML API has changed over the last year or so.  Here is an update on the supported method for creating telephony profiles for users using the Adobe Connect Web Services (XML API).

First, you need to find the telephony provider id number (provider-id) that you want to create a profile from.

To do this, you can make the ‘telephony-provider-list‘ API call as follows:

https://{connectURL}/api/xml?action=telephony-provider-list

The results will look like this (with obvious real values for the provider-id and acl-id parameters):

<results>
<status code=”ok”/>
<providers-account>
<provider provider-id=”xxxxxxxxx” acl-id=”xxxxxxxxx” provider-type=”integrated”>
<class-name>
com.macromedia.breeze_ext.premiere.gateway.PTekGateway
</class-name>
<adaptor-id>premiere-adaptor</adaptor-id>
<name>PGi NA</name>
<provider-status>enabled</provider-status>
</provider>
<provider provider-id=”xxxxxxxxx” acl-id=”xxxxxxxxx” provider-type=”integrated”>
<class-name>
com.macromedia.breeze_ext.telephony.Intercall.IntercallTelephonyAdaptor
</class-name>
<adaptor-id>intercall-adaptor</adaptor-id>
<name>InterCall</name>
<provider-status>enabled</provider-status>
</provider>
<provider provider-id=”xxxxxxxxx” acl-id=”xxxxxxxxx” provider-type=”integrated”>
<class-name>
com.meetingone.adobeconnect.MeetingOneAdobeConnectAdaptor
</class-name>
<adaptor-id>meetingone-adaptor</adaptor-id>
<name>MeetingOne</name>
<provider-status>enabled</provider-status>
</provider>
<provider provider-id=”xxxxxxxxx” acl-id=”xxxxxxxxx” provider-type=”integrated”>
<class-name>com.macromedia.breeze_ext.arkadin.ArkadinAdaptor</class-name>
<adaptor-id>arkadin-adaptor</adaptor-id>
<name>Arkadin</name>
<provider-status>enabled</provider-status>
</provider>
</providers-account>
</results>

Next, you take the provider-id from the call above, and make the ‘telephony-profile-update‘ call to create the initial telephony profile container.  The formatted call will look like this:

https://{connectURL}/api/xml?action=telephony-profile-update&principal-id=xxxxxxxxx&profile-status=enabled&provider-id=xxxxxxxxx&profile-name=xxxxxxxx

Where:
principal-id = the principal id of the user for whom you are creating the profile (obtained by other APIs).
profile-status=enabled (to enable the profile).
provider-id = the provider-id value from the first API call above, for which you are creating the profile.
 profile-name =the name of the profile you are creating for the user (it’s up to you for naming convention).

The results will look like this:

<results>
<status code=”ok”/>
<telephony-profile profile-status=”enabled” provider-id=”xxxxxxxxx” principal-id=”xxxxxxxxx” profile-id=”xxxxxxxxx”>
<profile-name>xxxxxxxxx</profile-name>
</telephony-profile>
</results>

Next, you take the applicable provider-id value from the result above, and run the telephony-provider-info API call to get the appropriate fields you would need to add to the profile (and hard code them into your app for future):

https://{connectURL}/api/xml?action=telephony-provider-info&provider-id=xxxxxxxxx

Where:
   provider-id = value from the first call.

The results will look like this (using Arkadin as an example).  What you really want to look for are the ‘telephony-provider-fields’ in the results.  The rest of the provider-dial-in-info can be ignored for the purpose of creating integrated profiles in this fashion.

The results in BLUE are the required ‘x-tel’ values for (in this example) Arkadin, to create a profile.

<results>
<status code=”ok”/>
<telephony-provider-fields>
<field provider-id=”xxxxxxxxx” field=”xxxxxxxxx” field-id=”x-tel-arkadin-conference-id” display-in-meeting=”none” required=”true” user-specified=”true” input-type=”text” is-hidden=”false”>
<name>Web login</name>
</field>
<field provider-id=”xxxxxxxxx” field=”xxxxxxxxx” field-id=”x-tel-arkadin-moderator-code” display-in-meeting=”hosts” required=”true” user-specified=”true” input-type=”text” is-hidden=”false”>
<name>Moderator pin code</name>
</field>
<field provider-id=”xxxxxxxxx” field=”xxxxxxxxx” field-id=”x-tel-arkadin-participant-code” display-in-meeting=”participants” required=”true” user-specified=”false” input-type=”text” is-hidden=”false”>
<name>Participant pin code</name>
</field>
<field provider-id=”xxxxxxxxx” field=”xxxxxxxxx” field-id=”x-tel-arkadin-conference-number” display-in-meeting=”none” required=”true” user-specified=”true” input-type=”text” is-hidden=”false”>
<name>Toll access number</name>
</field>
<field provider-id=”xxxxxxxxx” field=”xxxxxxxxx” field-id=”x-tel-arkadin-conference-number-free” display-in-meeting=”none” required=”true” user-specified=”true” input-type=”text” is-hidden=”false”>
<name>Toll free access number</name>
</field>
<field provider-id=”xxxxxxxxx” field=”xxxxxxxxx” field-id=”x-tel-arkadin-company-url” display-in-meeting=”participants” required=”true” user-specified=”false” input-type=”url” is-hidden=”false”>
<name>Other access numbers</name>
</field>
<field provider-id=”xxxxxxxxx” field=”xxxxxxxxx” field-id=”x-tel-arkadin-conference-number-uvline” display-in-meeting=”none” required=”true” user-specified=”true” input-type=”text” is-hidden=”false”>
<name>SIP access number</name>
</field>
</telephony-provider-fields>
</results>

Lastly, now you put everything together.  You take the profile-id that was from the newly created profile as part of the telephony-profile-update API above, and all the applicable ‘x-tel’ values from the telephony-provider-info call directly above, and piece them all together in an acl-field-update call as below (again, this example is for Arkadin):

https://{connectURL}/api/xml?action=acl-field-update&acl-id=xxxxxxxxx&field-id=x-tel-arkadin-conference-id&value=xxxxxxxxx&field-id=x-tel-arkadin-moderator-code&value=xxxxxxxxx&field-id=x-tel-arkadin-participant-code&value=xxxxxxxxx&field-id=x-tel-arkadin-conference-number&value=1-xxx-xxx-xxxx&field-id=x-tel-arkadin-conference-number-free&value=1-xxx-xxx-xxxx&field-id=x-tel-arkadin-conference-number-uvline&value=1-xxx-xxx-xxxx

Where:
 acl-id = the profile id value of the profile you created in the telephony-profile-update call above.
field-id = the x-tel params required by the provider.  As you can see above, for Arkadin, there are 6.
value = the value of the x-tel parameters.  You would get this from your conference provider.

The results will simply be:

<results>
<status code=”ok”/>
</results>

UPDATED – 4-11-2014
For completing an ARKADIN profile, please also add the following to the workflow:
http://blogs.adobe.com/connectsupport/xml-api-tips-arkadin-profile-creation-display-numbers/

For all the main providers on hosted, here are the required ‘x-tel’ values:

Arkadin:

x-tel-arkadin-conference-id
x-tel-arkadin-moderator-code
x-tel-arkadin-participant-code
x-tel-arkadin-conference-number
x-tel-arkadin-conference-number-free
x-tel-arkadin-conference-number-uvline

PGI:

x-tel-premiere-user-id
x-tel-premiere-password
x-tel-premiere-moderator-code

InterCall:

x-tel-intercall-participant-code
x-tel-intercall-leader-pin

MeetingOne:

x-tel-meetingone-conference-id
x-tel-meetingone-host-pin

Demystifying Mixing VoIP and Telephony in a Meeting

With Unified Voice (UV) enabled and selected from within a meeting room:

The host may choose: Meeting>Preferences>Audio Conference>Allow participants to use Microphones: When Allow participants to use Microphones is checked, participants have power to enable their own microphones within the meeting. When it is unchecked, the host must enable microphones first and then the participant can enable the microphone with host permission within the meeting:

uv-1.fw

In either case, checked or unchecked, the host needs to first start the audio conference within any meeting:

uv-1b.fw

And the participant needs to choose the microphone option and enable it (even though the host has enabled it manually within the meeting or set it as permanently enabled within the room):

uv-1a.fw

Note that by default, when UV is in use, the telephony option is checked for the participant:

UV2.fw

The participant must select the microphone option in order to use the microphone instead of the phone; this will allow the microphone to broadcast to the users in the meeting using UV telephony:

UV3.fw

With all these settings in place, VoIP microphones can talk to telephony and telephony to VoIP and both will be audible in an archive recording for playback on demand.

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:

tel1

This is what an individual user can access to disconnect their phone.

tel2

This is what a Meeting Host can do in the Attendee List pod, to hang up a user’s line.

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 (sans Avaya). ( 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:

 [2014-01-27 11:38:04,019] [Thread-677] (DEBUG) rtmp.RTMPConnection  - Calling MeetingApp method. methodName: telephonyUserOffline, parameters: {telephony-user-id=2501-130152300, conference-id=4040116}

 

Upgrade to Adobe Connect 9.1 causes Avaya Adaptor to be broken

Problem :

If you’ve upgraded your Adobe Connect server to version 9.1 and you already have Avaya adaptor configured, you might find it broken after the upgrade.

You might also run into this issue if you have a fresh installation of 9.1 and you are configuring Avaya adaptor for the first time

Reason :

The adaptor path is incorrect in the telephony configuration files in version 9.1

Environments Affected : Connect 9.1.1 Licensed

Solution :

  • Locate the following folder on your Adobe Connect 9.1.1 root installation : {Connect-Root}\9.1.1\TelephonyService\conf
  • Create a backup copy of  telephony-settings.xml file
  • Open the file in a text editor and locate the following lines for Avaya adaptor : <telephony-adaptor class-name=”com.macromedia.breeze_ext.telephony.AvayaAdaptor” enabled=”true” id=”avaya-adaptor”>
  • Replace the line with the following : <telephony-adaptor class-name=”com.macromedia.breeze_ext.telephony.Avaya.AvayaAdaptor” enabled=”true” id=”avaya-adaptor”>
  • Save the file and reopen the file with IE to make sure there are no errors.
  • Next, Create a backup copy of  telephony-capabilities.xml file
  • Open the file in a text editor and locate the following lines for Avaya adaptor : <telephony-adaptor class-name=”com.macromedia.breeze_ext.telephony.AvayaAdaptor” enabled=”true” id=”avaya-adaptor”>
  • Replace the line with the following : <telephony-adaptor class-name=”com.macromedia.breeze_ext.telephony.Avaya.AvayaAdaptor” enabled=”true” id=”avaya-adaptor”>
  • Save the file and reopen the file with IE to make sure there are no errors.
  • Restart the Adobe Connect & Telephony services.

 

XML API Tips: Adding a Telephony Profile to a Meeting Room

Another one of the undocumented workflows for Adobe Connect with regards to the XML API is adding telephony profiles to Adobe Connect Meeting rooms.

How do I add a telephony profile to a meeting?

https://connectURL/api/xml?action=acl-field-update&field-id=telephony-profile&value=XXXXXXXX&acl-id=XXXXXXXX

Where:
action=acl-field-update
field-id = set to ‘telephony-profile’
value = profile-id value
acl-id = meeting sco-id value

Results:

<results><results>
<status code=”ok”/>
</results>

To find the profile-id, you can run the telephony-profile-list API call, which will list the API caller’s telephony profiles.

Connect & Unified Voice (UV) Traffic Flow Diagram

Issue: Plan for the flow of traffic to enable UV among the various components in any Connect deployment: Connect, Flash Media Gateway (FMG), Session Initiation Protocol (SIP)

There are numerous documents on the topic of Unified Voice (UV) with Connect:

This diagram shows the flow of traffic and the protocols used for UV with Connect and is offered as a planning and a troubleshooting tool; click on the diagram to expand it for viewing:

 

Connect_FMG_Flow

Adobe Connect with H.323/two-way video telephony-support.

Problem : 1. - Does Adobe Connect works with H.323? If yes, is it an on-premise solution only or also achievable on hosting environment for adobe?

2. – If there are any plans in future for supporting two-way video telephony.

Answer : 

No, we don’t work with H.323 directly – only SIP. However you could work with an external service to bridge your H.323 devices with our servers. There are companies that provide cloud-based services that will communicate with legacy H.323 hardware and then use SIP to communicate with Connect to provide the video and audio directly.