Please login or register to access secure site features.

Note: By continuing to use DevConnect Program Services you agree to our latest Registered Member Terms.

Sign in using DevConnect ID

Forgot password?

Trouble logging in?

Submit a ticket for Registration Support.

I have an SSO ID

?
sign in

Don't have a DevConnect or SSO ID ?

Create a DevConnect account or join the program.

register now
^
Forum Index » DMCC APIs » DMCC Registration Issue   XML
 
Author Message
AbdulKA



Joined: 06/11/2013 06:10:44
Messages: 35
Offline

Hello,

we have a DMCC voice logger application which is executed in the following sequence

1. Devices IDs are requested and on the response of get device id request, The device id will be registered in client media mode

2. In the response of device registration , It will go off hook , then press a service observe button and sleep for 500 ms then dial each digit of the extension to be recorded. Between each digit 200 ms wait is given.

3. Step 1 is happening in a loop for getting device id and send it for registration on the response. Right now it is not waiting for the response to send the next request for registration.

It was noticed that ,up to 60 devices i got registered this way . But when i increased the number of devices to 100 , It is getting DMCC socket closed event. The reason for socket closed when i print is obtained as "Unable to read from socket. Socket to server has been closed."


How can i ensure that 100 devices can be registered safely in one session. ? Should my application wait for each registration response before i send next request? If it do this wait in a loop , will it affect the call back machanism?

Requesting all to kindly get back to me on this issue as soon as possible

Thanks and Regards
Abdul
MartinFlynn



Joined: 30/11/2009 05:00:18
Messages: 1758
Offline

It sounds like you may be registering your phones too quickly. Have a look at the section "Capacities for calls in DMCC applications" in "Avaya Aura Application Enablement Services Overview".

For newer AE Services, there is a maximum number of device Registrations that can be outstanding at any given time. Once this threshold is reached, your application must cache registration requests and only send one when it received a Registration Response.

For older AE Services, there is a maximum number of Registration requests that you can make per 10 second interval.

Martin
Anonymous


IP: 117.239.154.178

Dear Martin,

Thanks a lot . Can you please let me know which is version can be considered old under the category which expects a specific number of registrations in 10 secs? Also which version has a maximum number of device Registrations that can be outstanding at any given time?

Thanks and Regards
Abdul
MartinFlynn



Joined: 30/11/2009 05:00:18
Messages: 1758
Offline

You should get the version of "Avaya Aura Application Enablement Services Overview" that matches your AE Services. This will give the description that is appropriate to you.

I think the change in the description was made in one of the 6.x releases.

Martin
AbdulKA



Joined: 06/11/2013 06:10:44
Messages: 35
Offline

Thanks Martin. we managed to get it working by giving next registration request only after getting the previous one's response. Though it take bit longer to complete all registrations, i think this might be the safer way. :) . I have one more query regarding Service observe. In our current application , from the softphone's registration response , it will dial Service observe button followed by a 500 ms delay and then dial the extension to be service observed and each button has a delay of 200ms between them. But it was noticed that some of the softphones are not getting media events and media , even after we do the service observe. Is there a chance of failure of service observe? How can we know that the service observe from our registered softphone was succesful?


Best Regards
Abdul
MartinFlynn



Joined: 30/11/2009 05:00:18
Messages: 1758
Offline

You should be able to speed up the registration process by allowing more than one outstanding registration. Even allowing only 4 should save time.

Using DMCC First Party control alone, I think it would be difficult to tell if a SO attempt failed. If you start a Call Control monitor on the phone, you would get a Failed event if there were a problem. However, this uses a TSAPI Basic license per phone.

On the Communication Manager, use the "display events" command and filter for "denial" events. This should show all the denial events for failed calls that took place recently. These should give a clue as to the problem. If there are a lot of events, use "clear events" before attempting the SO.

BTW. You should be able to use shorter delays between digits - e.g. 20mS should probably be enough.

Martin
AbdulKA



Joined: 06/11/2013 06:10:44
Messages: 35
Offline

Dear Martin,


As given in the below FAQ , i tried to monitor phone lamp events for the registered soft phones. For those softphones which failed to do service observe, i noticed that LampMode is "BrokenFlutter" . For all those are succesful, the lampmode is "Wink" . Is there anyway to get why a BrokenFlutter is happening and service observe is getting failed.?



"How can the application tell if the de/activation of Service Observing (SO) was successful?
You can monitor for Physical Device Events, specifically Lamp Mode events, and look for the following:

If you are enabling Service Observation via a feature access code, then the active call appearance (where the feature access code has been "dialed") will change from steady green (Lamp Mode = steady, Lamp Color = Green) to dark (Lamp Mode = off).
If enabling via an SO button on the CMAPI phone, then the lamp (Lamp Mode) associated with the SO button flutters. If a feature access code is used and the station has a SO button provisioned, it will flutter as well.
If the SO enabling is unsuccessful, then the lamp will be steady green for the period of time when the switch is playing an intercept tone to the CMAPI phone"



Thanks and Regards
Abdul
MartinFlynn



Joined: 30/11/2009 05:00:18
Messages: 1758
Offline

AbdulKA wrote:Dear Martin,


As given in the below FAQ , i tried to monitor phone lamp events for the registered soft phones. For those softphones which failed to do service observe, i noticed that LampMode is "BrokenFlutter" . For all those are succesful, the lampmode is "Wink" . Is there anyway to get why a BrokenFlutter is happening and service observe is getting failed.?


No, I'm afraid not.
AbdulKA



Joined: 06/11/2013 06:10:44
Messages: 35
Offline

Dear Martin,

Unfortunately the issue is still not solved. Is there any logs to be verified to see what is really happening. I am taking care of the delay and each and every point as per the document for registration and for dialing the Service observe. I am totally confused why it is happening.


Best Regards
Rasheed
AbdulKA



Joined: 06/11/2013 06:10:44
Messages: 35
Offline

One more question. Is it ok to register 100 IP Softphones in 1 single session for AES 5.2

Best Regards
Abdul
MartinFlynn



Joined: 30/11/2009 05:00:18
Messages: 1758
Offline

You can use the SAT command "list trace station" on the Communication Manager to see the progress of the call. It should show a Denial cause if the call fails. This should give you a clue as to the problem.

You may register a large number of stations using one session. The important thing to note is that there is a limit to how fast you can attempt to register them. The limitations are detailed in the document "Avaya Aura Application Enablement Services Overview and Specification".

Martin
AbdulKA



Joined: 06/11/2013 06:10:44
Messages: 35
Offline

Dear Martin,

I modified my code by giving delays for registrations as mentioned in the Overview document. But still i facing issues. Eventually the following errors are noted in DMCC logs. i am attaching the logs as a zip file along with this thread.

WARNIN2014-02-12 15.53.31,490 com.avaya.mvcs.ccms.CcmsDownlinkParser parseTransparentVdtMessage
G: buffer=java.nio.HeapByteBuffer[pos=0 lim=8 cap=8] Buffer contents={03,00,00,0C,E0,04,00,7F}
2014-02-12 15.53.32,304 com.avaya.mvcs.ccms.CcmsDownlinkParser parseTransparentVdtMessage
WARNING: Parse error, index=0,buffer={80,11,2}
2014-02-12 15.53.33,730 com.avaya.mvcs.ccms.CcmsDownlinkParser parseTransparentVdtMessage
WARNING: Parse error, index=0,buffer={80,11,2}
2014-02-12 15.53.42,272 com.avaya.mvcs.station.h323.ras.DefaultTerminalDevice$H323StationProxyImpl timeout
WARNING: [10.100.115.75:12088:0] : CM Connection lost - protocol timeout: MISC timer, tried 3 times.Possible problem(s) include:
1. Network connection is not working or is congested

2014-02-12 15.53.43,906 com.avaya.workflow.impl.RouterImpl routeRequest
WARNING: A service method threw an Exception when invoked!
ServiceMethod: com.avaya.platform.broker.impl.ServiceMethodImpl@1a09181[com.avaya.cmapi.extsvc.PhysicalDeviceServicesImpl@51ef4e, public ch.ecma.csta.binding.ButtonPressResponse com.avaya.cmapi.extsvc.PhysicalDeviceServicesImpl.pressButton(ch.ecma.csta.binding.ButtonPress) throws ch.ecma.csta.errors.CstaException]
Exception: java.lang.IllegalStateException: [12088:CMPROD01:10.100.115.75:0] Station is not registered
Request: session[session 3145AEBA2BB9AC0F738B27A326B40B8F-11] ch.ecma.csta.binding.ButtonPress@1058600
java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor117.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.avaya.platform.broker.impl.ServiceMethodImpl.invoke(ServiceMethodImpl.java:96)
at com.avaya.workflow.impl.RouterImpl.routeRequest(RouterImpl.java:97)
at com.avaya.mvcs.proxy.CstaRouter.routeRequest(CstaRouter.java:173)
at com.avaya.mvcs.proxy.CstaRouterService.routeRequest(CstaRouterService.java:141)
at com.avaya.mvcs.proxy.CstaRouterNode.processPacket(CstaRouterNode.java:332)
at com.avaya.mvcs.proxy.AbstractPipelineNode.process(AbstractPipelineNode.java:130)
at com.avaya.mvcs.proxy.Pipeline$PipelineSubscriber.inform(Pipeline.java:427)
at com.avaya.common.eventservice.UnfilteredSubscription.notify(UnfilteredSubscription.java:70)
at com.avaya.common.multicaster.Multicaster.notify(Multicaster.java:386)
at com.avaya.common.channel.Channel.publish(Channel.java:115)
at com.avaya.common.eventservice.EventService.publish(EventService.java:123)
at com.avaya.common.eventservice.EventServiceManager.publish(EventServiceManager.java:156)
at com.avaya.common.eventservice.Publisher.publish(Publisher.java:110)
at com.avaya.mvcs.proxy.CstaUnmarshallerNode$CstaUnmarshallerProcessorThread.run(CstaUnmarshallerNode.java:253)
at com.avaya.common.util.concurrent.impl.RunnableWrapper.run(RunnableWrapper.java:53)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.IllegalStateException: [12088:CMPROD01:10.100.115.75:0] Station is not registered


Thanks and Regards
Abdul

 Filename error12022014-162055.zip [Disk] Download
 Description No description given
 Filesize 1174 Kbytes
 Downloaded:  753 time(s)

MartinFlynn



Joined: 30/11/2009 05:00:18
Messages: 1758
Offline

Exception: java.lang.IllegalStateException: [12088:CMPROD01:10.100.115.75:0] Station is not registered

It looks like you are pressing the button before the station has been registered. It is important that you wait for the RegisterTerminalResponse before attempting any actions on the station.

martin
AbdulKA



Joined: 06/11/2013 06:10:44
Messages: 35
Offline

Dear Martin,

we call the button press APIs from the register terminal response handler function. In the function we check if the response is not an error (means successful registration) then we dial the buttons. Please find the code section inside the response of Registerterminal response function on how we do that.

AddHandler RecordingDevice.getPhone.OnLampUpdatedEvent, AddressOf RecordingDevice_getPhone_OnLampUpdatedEvent
Logger.log("addHandler OnLampUpdatedEvent for RecordingDevice " & RecordingDeviceExt, strDatapath, LogStat)

e.getPhone.SetHookswitchStatus(True, Nothing) 'SessionID)
Threading.Thread.Sleep(100)
e.getPhone.GetLampMode(Phone.ButtonIDConstants.BUTTON_1 + (PushButtonVal - 1), Nothing)
e.getPhone.PressButton(Phone.ButtonIDConstants.BUTTON_1 + (PushButtonVal - 1), Nothing) 'SessionID) '
Threading.Thread.Sleep(500)
For i As Integer = 0 To OwnerDeviceExt.Length - 1
Dim buttonNumber As Integer = setButtonIDConstants(OwnerDeviceExt.Substring(i, 1))
'Dim k As Integer =
e.getPhone.PressButton(buttonNumber, Nothing) 'SessionID) '
' Logger.log("k:" & k, strDatapath, LogStat)
Threading.Thread.Sleep(200)
Next
'////////////END OF TEST




Thanks and Regards
Abdul

MartinFlynn



Joined: 30/11/2009 05:00:18
Messages: 1758
Offline

The log shows the AE Services loosing the connection with the Communication Manager and automatically unregistering the phone:

2014-02-12 15.53.42,272 com.avaya.mvcs.station.h323.ras.DefaultTerminalDevice$H323StationProxyImpl timeout
WARNING: [10.100.115.75:12088:0] : CM Connection lost - protocol timeout: MISC timer, tried 3 times.Possible problem(s) include:
1. Network connection is not working or is congested

followed by:

2014-02-12 15.53.42,285 com.avaya.mvcs.station.h323.ras.OutgoingRASHandlerImpl shutdown
FINE: [10.100.115.75:12088:0] unregister reason=CM Connection lost - protocol timeout: MISC timer, tried 3 times.Possible problem(s) include:
1. Network connection is not working or is congested

If your application is monitoring for TerminalUnregistered events, I think it will receive an event when this happens.

You will need to figure out why the AE Services is loosing the connection to the Communication Manager.


Another thing that I should point out is that you are performing a lot of processing (including sending requests to the AE Services) using the DMCC Event thread. You should never do any processing in this thread as it will seriously degrade the performance of your application and can lead to links being dropped.

The only code that should be in your handler callback function is to take the incoming event and place it on your own, internal, queue. You can then service this queue with your own thread.

Martin
 
 
Go to: