Author Message
AlokKulkarni
Joined: Jan 5, 2017
Messages: 30
Offline
Hello,
My use case is to do a conference call from a Javascript browser client with a Camera logged in as a SIP client and do a FECC to the camera.

I see that there is a CameraControl as part of CSDK mentioned here but not sure how to use it.
https://www.devconnectprogram.com/site/global/products_resources/avaya_client_sdk/programming_docs/current/javascript/communication/api_refs/AvayaClientServices/AvayaClientServices.Services.Conference.html

Can I have a sample code for the same ?

If it's possible to do FECC, can I do it with any Avaya compatible camera which might be from a different vendor ?

Is it possible to do Presets like I can set certain positions marked on the camera so that I can directly pan or zoom to that saved positions ?


If it is not possible to do using CSDK, I came to know of another option to use Avaya Equinox Management APIs to do FECC. Can someone throw light on this ?




Artem.Tsarev
Joined: Jul 13, 2016
Messages: 48
Offline
Hello,

The design team recommends checking the Javascript Communication Services Sample Application, here is a code snippet you might be interested in -

vm.cameraControlAction = function (action) {
// Where vm.selectedParticipant is a Participant Object from conference.getActiveParticipants()
// and action is a member of the AvayaClientServices.Services.Conference.CameraControl enumeration
var participant = vm.selectedParticipant;
if (participant) {
if (participant.getFeccRecvSupport()) {
participant.controlRemoteCamera(action).then(function () {
// Camera action was successful
}, function () {
// Action failed
});
}
}
}

The team is still looking for the answer to the other part of your question, we will provide you with update as soon as possible.
AlokKulkarni
Joined: Jan 5, 2017
Messages: 30
Offline
Thank you Artem for the inputs.

It seems that the API "controlRemoteCamera" has been removed out of or not present in the Javascript API reference guide. I will try out the code you have provided. But does no documentation mean that the API might get removed in later versions ?Also the latest Javascript Communication Services Sample Application does not contain the code snippet that you provided.

The camera in use will be recommended as XT 4300 , but may use other cameras like usb hc 020, usb 8c050, cu360 or any third party camera which is Avaya compatible. I assume the FECC will be possible on these cameras using the CSDK APIs

Regarding the preset , I learnt that XT 4300 supports preset but I guess the APIs for doing the presets is not exposed using some SDK or API calls. Please correct me if I am wrong.

Also can you please clarify what is the vm object as per the sample application ?
AlokKulkarni
Joined: Jan 5, 2017
Messages: 30
Offline
Hello,
I did the following.
Logged in with a user
Made video call to my own Virtual Meeting Room
Added the camera XT4300 as a participant to the call
The camera got added .
To send commands to the camera , I did the following :

this._conference = this._call.getConference();

this._participants = this._conference.getActiveParticipants();
this._participants.forEach(function(participant) {
if(participant.getAddress().includes(remoteAddress))
{
// Where vm.selectedParticipant is a Participant Object from conference.getActiveParticipants()
// and action is a member of the AvayaClientServices.Services.Conference.CameraControl enumeration

this._action = "CAMERA_CONTROL_ZOOM_IN";
if (participant.getFeccRecvSupport()) {
participant.controlRemoteCamera(this._action).then(function () {
// Camera action was successful
console.log("Success camera movement");
}, function () {
// Action failed
console.log("Failed camera movement");
});
}

}
}.bind(this));


In browser logs I can see following

ScopiaConferenceProvider,PROVIDER:,WebSocketProvider,
MESSAGE SENT:,{
"protocolType": "UCCP",
"name": "feccRequest",
"params": {
"transId": "16",
"participantId": "REMOVED",
"action": "CAMERA_CONTROL_ZOOM_IN"
}
},
OPTIONS SENT:,



MESSAGE RECEIVED:,{
"protocolType": "UCCP",
"name": "subscribeRosterResponse",
"params": {
"transId": "20",
"responseCode": "success",
"participants": [
{
"participantId": "REMOVED",
"name": "7100, XT ",
"userId": "REMOVED",
"email": "REMOVED",
"callerId": "REMOVED",
"joinTime": "2019-05-09T20:06:19+04:00",
"sourceID": "16786336",
"status": "active",
"handRaised": "false",
"role": "participant",
"feccRecvSupport": "true",
"audioFromParticipant": "selfMuted",
"audioToParticipant": "available",
"videoFromParticipant": "active",
"videoToParticipant": "available",
"contentFromParticipant": "allowed",
"contentToParticipant": "available",
"canLecture": "true"
}
]
}
}


I see feccRecvSupport = true and I get a success callback for the action but nothing actually happens on the camera side. It does not zoom in. Same was true when I gave other actions as "CAMERA_CONTROL_DOWN" etc.

Please help me what I am missing.
JMiddleton
Joined: Apr 1, 2019
Messages: 86
Offline
Hi,

First regarding the documentation, yes controlRemoteCamera is supported but appears to be missing from the documentation. Thanks for noticing this.

Regarding the sample app, yes controlRemoteCamera is intentionally not part of the sample app. The sample app only has the most commonly used functions in order to keep it digestible.

Yes, the CSDK does not expose functions for preset camera locations.

The vm object isn't important. I should've left it off the code Artem sent you earlier. What is important is that you obtain a Participant from conference.getActiveParticipants() which represents the device you want to control. It appears you have done so based on your last response.

As discussed offline, please gather full browser console logs and the CS log support package to see why the camera isn't moving. The logs that you did include seem to indicate a message was sent properly to move the camera.
Go to:   
Mobile view