asterisk-java-devel Mailing List for Asterisk-Java Library (Page 23)
Brought to you by:
srt
You can subscribe to this list here.
2005 |
Jan
|
Feb
(1) |
Mar
(1) |
Apr
|
May
|
Jun
(8) |
Jul
(3) |
Aug
(6) |
Sep
(5) |
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(8) |
Feb
(6) |
Mar
(1) |
Apr
|
May
(2) |
Jun
|
Jul
(17) |
Aug
(21) |
Sep
(2) |
Oct
(7) |
Nov
(8) |
Dec
(12) |
2007 |
Jan
(10) |
Feb
(19) |
Mar
(2) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
(5) |
Oct
(6) |
Nov
(1) |
Dec
(5) |
2008 |
Jan
(12) |
Feb
(15) |
Mar
(18) |
Apr
(34) |
May
(3) |
Jun
(34) |
Jul
(5) |
Aug
(1) |
Sep
(8) |
Oct
|
Nov
(2) |
Dec
(2) |
2009 |
Jan
(8) |
Feb
(2) |
Mar
(35) |
Apr
(16) |
May
(11) |
Jun
(2) |
Jul
(6) |
Aug
(2) |
Sep
(1) |
Oct
|
Nov
(4) |
Dec
|
2010 |
Jan
(43) |
Feb
(15) |
Mar
(1) |
Apr
(7) |
May
(3) |
Jun
(7) |
Jul
(1) |
Aug
(3) |
Sep
(5) |
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
(2) |
Mar
(9) |
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(6) |
2012 |
Jan
(9) |
Feb
(2) |
Mar
(4) |
Apr
(1) |
May
(1) |
Jun
(3) |
Jul
(1) |
Aug
|
Sep
(1) |
Oct
(10) |
Nov
(10) |
Dec
|
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(2) |
Jul
|
Aug
(2) |
Sep
|
Oct
|
Nov
(10) |
Dec
|
2014 |
Jan
|
Feb
(5) |
Mar
|
Apr
|
May
|
Jun
(5) |
Jul
(11) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
(2) |
Mar
(7) |
Apr
(39) |
May
(18) |
Jun
(6) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
(9) |
Mar
(1) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Steve P. <sp...@ge...> - 2006-11-02 23:04:18
|
Stefan Reuter wrote: > Hi Steve, > > Steve Prior wrote: > >>Just to save others a LOT of tedious typing, I propose the following >>utility class to "crack" the generic event into a handler for the >>type specific event. I'm VERY flexible on the exact name for the >>class. Using the class is easy, here's the tutorial exmaple: > > > would you mind if we add this class to the "official" source tree and > publish it under the terms of the ASF? Not at all, that was my intent by posting it. Please note that my code was based on the 0.3 m1 code - if the event structure has changed since then my code could need tweaking. Actually that was part of my point in thinking the class should be part of the distribution - ideally a change in the Event class structure would be updated by the maintainers in the cracking class, so users of the API wouldn't be affected much. Thanks! Steve > > =Stefan |
From: Stefan R. <ste...@re...> - 2006-11-02 22:27:22
|
> What do you mean with "track originated calls"? What is this > information? (maybe it is worth...) The trace id is the the indendet solution to the following problem: Wehn you originate a call you receive the call id (uniqueId) with the OriginateSuccess event, i.e. when the first party answers the call. For several use cases (e.g. hangup an originated call before the first party answered) this is too late. So the idea is to set a variable (the trace id) with the originate and poll for it for each new channel that is detected. This is only needed if you use the originateXX methods from AsteriskServer in the new live package. If you dont use it its of course worthless so I understand your concerns. > Untill now this didn't hurt. But we're developing an application that i= s > supposed to run in every desktop of a company. My customer argues that > if all the desktops call getVariable() at the same time after they > receive a DialEvent, the asterisk server can get slow. And I think he's= > right, don't you? Umm if you really plan to open the Manager API to every desktop this might call for trouble depending on how many dektops there are and how trustworty your environment is. Remember that the Manager API exposes a whole bunch of functions that are in no way restricted to a set of channels/extensions. In my opinion this raises questions regarding privacy and abuse (looking what numbers your boss is dialing, hangup or redirecting calls from collegues, etc.). I would implement a central server that talks to Asterisk and only passes the relevant information to each client and checks the validity of requests they make. > Is there any other way to track that information you want without these= > getVariable() calls? I am very open to any suggestions as long as they address the problem outlined above. > If I'll make a patch for the manager interface on the asterisk server, > couldn't I add some info to be sent on the DialEvents that would save > you from actively calling a getVariable() on the server? The bristuff patches from Junghanns provide the uniqueId in the response to the OriginateAction but thats non-standard. If you manage to get Digium to adapt this by providing a disclaimed patch and convince them of the need to integrate it into Asterisk 1.6, well... > I think these events are lacking a lot of valuable information and this= > is what is making them so difficult to parse and understand. Yes the Manager API is a pain and the live package tries to work around that asuming that its easier to use what is there than to redesign the Manager API. =3DStefan --=20 reuter network consulting Neusser Str. 110 50760 Koeln Germany Telefon: +49 221 1305699-0 Telefax: +49 221 1305699-90 E-Mail: ste...@re... Jabber: ste...@re... |
From: Bruno N. <bn...@gm...> - 2006-11-02 22:08:30
|
Hi Stefan, On 11/2/06, Stefan Reuter <ste...@re...> wrote: > > Hi, > > this variable is used internally to allow Asterisk-Java to track > originated calls. Ok, but this variable never has a value in our case. I don't know if our asterisk server is lacking some configuration that would make that variable be set. Should we set this variable? What do you mean with "track originated calls"? What is this information? (maybe it is worth...) Does it really hurt you? i.e. did you notice any performance problems > that you relate to the trace id? Untill now this didn't hurt. But we're developing an application that is supposed to run in every desktop of a company. My customer argues that if all the desktops call getVariable() at the same time after they receive a DialEvent, the asterisk server can get slow. And I think he's right, don't you? Is there any other way to track that information you want without these getVariable() calls? If I'll make a patch for the manager interface on the asterisk server, couldn't I add some info to be sent on the DialEvents that would save you from actively calling a getVariable() on the server? I think these events are lacking a lot of valuable information and this is what is making them so difficult to parse and understand. regards, bnegrao =Stefan > > -- > reuter network consulting > Neusser Str. 110 > 50760 Koeln > Germany > Telefon: +49 221 1305699-0 > Telefax: +49 221 1305699-90 > E-Mail: ste...@re... > Jabber: ste...@re... > > > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job > easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > > _______________________________________________ > Asterisk-java-devel mailing list > Ast...@li... > https://lists.sourceforge.net/lists/listinfo/asterisk-java-devel > > > > |
From: Stefan R. <ste...@re...> - 2006-11-02 22:08:01
|
Hi Steve, Steve Prior wrote: > Just to save others a LOT of tedious typing, I propose the following > utility class to "crack" the generic event into a handler for the > type specific event. I'm VERY flexible on the exact name for the > class. Using the class is easy, here's the tutorial exmaple: would you mind if we add this class to the "official" source tree and publish it under the terms of the ASF? =3DStefan --=20 reuter network consulting Neusser Str. 110 50760 Koeln Germany Telefon: +49 221 1305699-0 Telefax: +49 221 1305699-90 E-Mail: ste...@re... Jabber: ste...@re... |
From: Stefan R. <ste...@re...> - 2006-11-02 21:47:37
|
Hi, this variable is used internally to allow Asterisk-Java to track originated calls. Does it really hurt you? i.e. did you notice any performance problems that you relate to the trace id? =3DStefan --=20 reuter network consulting Neusser Str. 110 50760 Koeln Germany Telefon: +49 221 1305699-0 Telefax: +49 221 1305699-90 E-Mail: ste...@re... Jabber: ste...@re... |
From: Bruno N. <bn...@gm...> - 2006-11-02 16:04:33
|
Hi guys, The method ChannelManager.handleDialEvent() calls twice the private method getTraceId() (code bellow): private String getTraceId(AsteriskChannel channel) { String traceId; try { traceId = channel.getVariable(Constants.VARIABLE_TRACE_ID); } catch (Exception e) { traceId = null; } //logger.info("TraceId for channel " + channel.getName() + " is " + traceId); return traceId; } My customer complains that this getVariable() is nonsense because the variable TRACE_ID is never set on our asterisk server. Also he says this action consumes resources on the server, so he is asking me to disable this. He even gave me a patch (bellow) to disable the call to getVariable(). I agree with the points my customer is saying. Guys, could you add an "option" to the AsteriskServer interface to disable this action? For example, something like AsteriskServer.discoverTraceId(boolean enable) Meanwhile I believe I'll have to apply his patch: > --- ./src/main/java/org/asteriskjava/live/internal/ChannelManager.java.original 2006-11-01 10:40:17.000000000 -0300 > +++ ./src/main/java/org/asteriskjava/live/internal/ChannelManager.java 2006-09-20 18:29:25.000000000 -0300 > @@ -604,7 +604,10 @@ > > try > { > - traceId = channel.getVariable(Constants.VARIABLE_TRACE_ID); > + //CHANGE BEGINS HERE > + //traceId = channel.getVariable(Constants.VARIABLE_TRACE_ID); > + traceId = ""; > + //CHANGE ENDS HERE > } > catch (Exception e) > { > |
From: Steve P. <sp...@ge...> - 2006-10-30 02:37:49
|
Just to save others a LOT of tedious typing, I propose the following utility class to "crack" the generic event into a handler for the type specific event. I'm VERY flexible on the exact name for the class. Using the class is easy, here's the tutorial exmaple: public class HelloEvents extends EventCracker implements ManagerEventListener { private ManagerConnection managerConnection; public HelloEvents(String machine, String userid, String password) throws IOException { ManagerConnectionFactory factory = new ManagerConnectionFactory(machine, userid, password); this.managerConnection = factory.createManagerConnection(); } public void run() throws IOException, AuthenticationFailedException, TimeoutException, InterruptedException { // register for events managerConnection.addEventListener(this); // connect to Asterisk and log in managerConnection.login(); // request channel state managerConnection.sendAction(new StatusAction()); // wait 10 seconds for events to come in Thread.sleep(10000); // and finally log off and disconnect managerConnection.logoff(); } protected void handleEvent(StatusEvent event) { System.out.println(event.getChannel() + ":" + event.getState()); } public static void main(String[] args) throws Exception { HelloEvents helloEvents; helloEvents = new HelloEvents("machine", "userid", "password"); helloEvents.run(); } } -------------- snip ----------------------------------- public class EventCracker { protected void handleEvent(AgentCallbackLoginEvent event){} protected void handleEvent(AgentCallbackLogoffEvent event){} protected void handleEvent(AgentCalledEvent event){} protected void handleEvent(AgentLoginEvent event){} protected void handleEvent(AgentLogoffEvent event){} protected void handleEvent(AlarmClearEvent event){} protected void handleEvent(AlarmEvent event){} protected void handleEvent(CdrEvent event){} protected void handleEvent(ConnectEvent event){} protected void handleEvent(DialEvent event){} protected void handleEvent(DisconnectEvent event){} protected void handleEvent(DndStateEvent event){} protected void handleEvent(ExtensionStatusEvent event){} protected void handleEvent(HoldedCallEvent event){} protected void handleEvent(HoldEvent event){} protected void handleEvent(LogChannelEvent event){} protected void handleEvent(MessageWaitingEvent event){} protected void handleEvent(NewExtenEvent event){} protected void handleEvent(PeerStatusEvent event){} protected void handleEvent(ProtocolIdentifierReceivedEvent event){} protected void handleEvent(QueueEvent event){} protected void handleEvent(RegistryEvent event){} protected void handleEvent(ReloadEvent event){} protected void handleEvent(RenameEvent event){} protected void handleEvent(ShutdownEvent event){} protected void handleEvent(UnholdEvent event){} protected void handleEvent(UserEvent event){} protected void handleEvent(AgentCompleteEvent event){} protected void handleEvent(AgentConnectEvent event){} protected void handleEvent(AgentDumpEvent event){} protected void handleEvent(FaxReceivedEvent event){} protected void handleEvent(NewCallerIdEvent event){} protected void handleEvent(HangupEvent event){} protected void handleEvent(NewChannelEvent event){} protected void handleEvent(NewStateEvent event){} protected void handleEvent(MeetMeJoinEvent event){} protected void handleEvent(MeetMeLeaveEvent event){} protected void handleEvent(MeetMeMuteEvent event){} protected void handleEvent(MeetMeStopTalkingEvent event){} protected void handleEvent(MeetMeTalkingEvent event){} protected void handleEvent(ParkedCallGiveUpEvent event){} protected void handleEvent(ParkedCallTimeOutEvent event){} protected void handleEvent(UnparkedCallEvent event){} protected void handleEvent(QueueMemberAddedEvent event){} protected void handleEvent(QueueMemberPausedEvent event){} protected void handleEvent(QueueMemberRemovedEvent event){} protected void handleEvent(AgentsCompleteEvent event){} protected void handleEvent(AgentsEvent event){} protected void handleEvent(DbGetResponseEvent event){} protected void handleEvent(JoinEvent event){} protected void handleEvent(LeaveEvent event){} protected void handleEvent(LinkEvent event){} protected void handleEvent(OriginateFailureEvent event){} protected void handleEvent(OriginateSuccessEvent event){} protected void handleEvent(ParkedCallEvent event){} protected void handleEvent(ParkedCallsCompleteEvent event){} protected void handleEvent(PeerEntryEvent event){} protected void handleEvent(PeerlistCompleteEvent event){} protected void handleEvent(QueueEntryEvent event){} protected void handleEvent(QueueMemberEvent event){} protected void handleEvent(QueueMemberStatusEvent event){} protected void handleEvent(QueueParamsEvent event){} protected void handleEvent(QueueStatusCompleteEvent event){} protected void handleEvent(StatusCompleteEvent event){} protected void handleEvent(StatusEvent event){} protected void handleEvent(UnlinkEvent event){} protected void handleEvent(ZapShowChannelsCompleteEvent event){} protected void handleEvent(ZapShowChannelsEvent event){} public void onManagerEvent(ManagerEvent event) { if (event instanceof AgentCallbackLoginEvent){ handleEvent((AgentCallbackLoginEvent) event); } else if (event instanceof AgentCallbackLogoffEvent){ handleEvent((AgentCallbackLogoffEvent) event); } else if (event instanceof AgentCalledEvent){ handleEvent((AgentCalledEvent) event); } else if (event instanceof AgentLoginEvent){ handleEvent((AgentLoginEvent) event); } else if (event instanceof AgentLogoffEvent){ handleEvent((AgentLogoffEvent) event); } else if (event instanceof AlarmClearEvent){ handleEvent((AlarmClearEvent) event); } else if (event instanceof AlarmEvent){ handleEvent((AlarmEvent) event); } else if (event instanceof CdrEvent){ handleEvent((CdrEvent) event); } else if (event instanceof ConnectEvent){ handleEvent((ConnectEvent) event); } else if (event instanceof DialEvent){ handleEvent((DialEvent) event); } else if (event instanceof DisconnectEvent){ handleEvent((DisconnectEvent) event); } else if (event instanceof DndStateEvent){ handleEvent((DndStateEvent) event); } else if (event instanceof ExtensionStatusEvent){ handleEvent((ExtensionStatusEvent) event); } else if (event instanceof HoldedCallEvent){ handleEvent((HoldedCallEvent) event); } else if (event instanceof HoldEvent){ handleEvent((HoldEvent) event); } else if (event instanceof LogChannelEvent){ handleEvent((LogChannelEvent) event); } else if (event instanceof MessageWaitingEvent){ handleEvent((MessageWaitingEvent) event); } else if (event instanceof NewExtenEvent){ handleEvent((NewExtenEvent) event); } else if (event instanceof PeerStatusEvent){ handleEvent((PeerStatusEvent) event); } else if (event instanceof ProtocolIdentifierReceivedEvent){ handleEvent((ProtocolIdentifierReceivedEvent) event); } else if (event instanceof QueueEvent){ handleEvent((QueueEvent) event); } else if (event instanceof RegistryEvent){ handleEvent((RegistryEvent) event); } else if (event instanceof ReloadEvent){ handleEvent((ReloadEvent) event); } else if (event instanceof RenameEvent){ handleEvent((RenameEvent) event); } else if (event instanceof ShutdownEvent){ handleEvent((ShutdownEvent) event); } else if (event instanceof UnholdEvent){ handleEvent((UnholdEvent) event); } else if (event instanceof UserEvent){ handleEvent((UserEvent) event); } else if (event instanceof AgentCompleteEvent){ handleEvent((AgentCompleteEvent) event); } else if (event instanceof AgentConnectEvent){ handleEvent((AgentConnectEvent) event); } else if (event instanceof AgentDumpEvent){ handleEvent((AgentDumpEvent) event); } else if (event instanceof FaxReceivedEvent){ handleEvent((FaxReceivedEvent) event); } else if (event instanceof NewCallerIdEvent){ handleEvent((NewCallerIdEvent) event); } else if (event instanceof HangupEvent){ handleEvent((HangupEvent) event); } else if (event instanceof NewChannelEvent){ handleEvent((NewChannelEvent) event); } else if (event instanceof NewStateEvent){ handleEvent((NewStateEvent) event); } else if (event instanceof MeetMeJoinEvent){ handleEvent((MeetMeJoinEvent) event); } else if (event instanceof MeetMeLeaveEvent){ handleEvent((MeetMeLeaveEvent) event); } else if (event instanceof MeetMeMuteEvent){ handleEvent((MeetMeMuteEvent) event); } else if (event instanceof MeetMeStopTalkingEvent){ handleEvent((MeetMeStopTalkingEvent) event); } else if (event instanceof MeetMeTalkingEvent){ handleEvent((MeetMeTalkingEvent) event); } else if (event instanceof ParkedCallGiveUpEvent){ handleEvent((ParkedCallGiveUpEvent) event); } else if (event instanceof ParkedCallTimeOutEvent){ handleEvent((ParkedCallTimeOutEvent) event); } else if (event instanceof UnparkedCallEvent){ handleEvent((UnparkedCallEvent) event); } else if (event instanceof QueueMemberAddedEvent){ handleEvent((QueueMemberAddedEvent) event); } else if (event instanceof QueueMemberPausedEvent){ handleEvent((QueueMemberPausedEvent) event); } else if (event instanceof QueueMemberRemovedEvent){ handleEvent((QueueMemberRemovedEvent) event); } else if (event instanceof AgentsCompleteEvent){ handleEvent((AgentsCompleteEvent) event); } else if (event instanceof AgentsEvent){ handleEvent((AgentsEvent) event); } else if (event instanceof DbGetResponseEvent){ handleEvent((DbGetResponseEvent) event); } else if (event instanceof JoinEvent){ handleEvent((JoinEvent) event); } else if (event instanceof LeaveEvent){ handleEvent((LeaveEvent) event); } else if (event instanceof LinkEvent){ handleEvent((LinkEvent) event); } else if (event instanceof OriginateFailureEvent){ handleEvent((OriginateFailureEvent) event); } else if (event instanceof OriginateSuccessEvent){ handleEvent((OriginateSuccessEvent) event); } else if (event instanceof ParkedCallEvent){ handleEvent((ParkedCallEvent) event); } else if (event instanceof ParkedCallsCompleteEvent){ handleEvent((ParkedCallsCompleteEvent) event); } else if (event instanceof PeerEntryEvent){ handleEvent((PeerEntryEvent) event); } else if (event instanceof PeerlistCompleteEvent){ handleEvent((PeerlistCompleteEvent) event); } else if (event instanceof QueueEntryEvent){ handleEvent((QueueEntryEvent) event); } else if (event instanceof QueueMemberEvent){ handleEvent((QueueMemberEvent) event); } else if (event instanceof QueueMemberStatusEvent){ handleEvent((QueueMemberStatusEvent) event); } else if (event instanceof QueueParamsEvent){ handleEvent((QueueParamsEvent) event); } else if (event instanceof QueueStatusCompleteEvent){ handleEvent((QueueStatusCompleteEvent) event); } else if (event instanceof StatusCompleteEvent){ handleEvent((StatusCompleteEvent) event); } else if (event instanceof StatusEvent){ handleEvent((StatusEvent) event); } else if (event instanceof UnlinkEvent){ handleEvent((UnlinkEvent) event); } else if (event instanceof ZapShowChannelsCompleteEvent){ handleEvent((ZapShowChannelsCompleteEvent) event); } else if (event instanceof ZapShowChannelsEvent){ handleEvent((ZapShowChannelsEvent) event); } } } |
From: Bruno N. <bn...@gm...> - 2006-10-14 16:44:38
|
Hi guys, there is a wierd thing happening with the messages I've posted here on these lists - apparently they are being removed from the archive. I posted a message with the subject "AsteriskChannels from org.asterisk.live package don't end up in a consistent state." And it is not on the archive anymore. The archive says "This message does not (any longer) exist." after I search it using the search engine. You can check it by yourself trying the url http://sourceforge.net/search/index.php?words=subject%3A%28%2Bconsistent%29+AND+ml_name%3A%28asterisk-java-devel%29&sort=subject&sortdir=desc&offset=0&group_id=118998&type_of_search=mlists Why is it happening? I cannot understand...!!!?? Any help would be appreciated, Bruno. |
From: Bruno N. <bn...@gm...> - 2006-10-13 20:57:42
|
Hi everybody, First I'd like to say thank you for your great job on org.asterisk.live. It is very straightforward and easy to use. When it will be finished it will make life much easier, absolutely. I'm testing org.asterisk.live package and I'm noticing the AsteriskChannel objects not always end up in a consistent state, even after following all the PropertyChangeEvents they fire. What showed me that was the following test. First I'll (try to) explain my test, then I'll tell what would be the expected results and then I'll show what I'm getting. ===> THE TEST: A person at extension 3025 asked the asterisk server to call the 3026 extension and then transfer the call to his extension. Simply put, the person at 3025 wants to talk to the person at 3026, but asked the asterisk server to initiate the call instead of directly dialing to 3026 by himself. To accomplish this task the asterisk server will do these steps: 1) asterisk creates a pair of "Local/3025" channels, lets say "Local/3025@foo,2" and "Local/3025@foo,1". 2) A new channel called "SIP/3025-bleh" is created and "Local/3025@foo,2" will dial to "SIP/3025-bleh". Let's assume a person on "SIP/3025-bleh" answers the phone and both channels are linked together. 3) Now a new channel called "SIP/3026-bzzz" is created and "Local/3025@foo,1" will dial it. 4) A person at "SIP/3026-bzzz" answered the phone and now a tricky process happens: 4.1) "SIP/3026-bzzz" channel is renamed to "Local/3025@foo,2<ZOMBIE>" and is hung up. 4.2) "Local/3025@foo,2" channel is renamed to "SIP/3026-bzzz", what will remain linked to "SIP/3025-bleh". 4.3) "Local/3025@foo,1" is hung up. ===> THE EXPECTED RESULT: The expected result was to find the resultant "SIP/3025-bleh" and "SIP/3026-bzzz" channels stating clearly that they are linked together, the 'callerId' should be correct on both channels and they were supposed to indicate which channel is being charged for this call. This expected result can be obtained by instantiating a new DefaultAsteriskChannel object and calling the getChannels() method. The output would be something like this: AsteriskChannel[id='1160660968.768', name='SIP/3026-bzzz', callerId='<3026>', state='UP', account='3025', dateOfCreation=Thu Oct 12 10:51:07 BRT 2006, dialedChannel=null, dialingChannel=null, linkedChannel=AsteriskChannel[id='1160660968.769',name='SIP/3025-bleh']] AsteriskChannel[id='1160660968.769', name='SIP/3025-bleh', callerId='<3025>', state='UP', account='3025',dateOfCreation=Thu Oct 12 10:54:00 BRT 2006, dialedChannel=null, dialingChannel=null, linkedChannel=AsteriskChannel[id='1160660968.768',name='SIP/3026-bzzz']] 25358555 The above AsteriskChannel objects are consistent: the 'callerId' properties are correct in both channels, also the 'account' property shows that the extension 3025 would be charged. If i would report this scenario to someone else I could picture that extension 3025 dialed to 3026. Even if it didn't do it directly (asterisk dialed for it), the idea that 3025 dialed 3026 is reasonable for this situation. ===> THE ACTUAL RESULT: If instead of running a getChannels() to obtain the resultant active AsteriskChannels I chose to follow all the PropertyChangeEvents for those four channels since they were created I would end up with the following 2 channels: AsteriskChannel[id='1160660968.768', name='SIP/3026-bzzz', callerId='<3025>', state='UP', account='null', dateOfCreation=Thu Oct 12 10:51:07 BRT 2006, dialedChannel=AsteriskChannel[id='1160660968.769', name='SIP/3025-bleh'], dialingChannel=null, linkedChannel=AsteriskChannel[id='1160660968.769',name='SIP/3025-bleh']] AsteriskChannel[id='1160660968.769', name='SIP/3025-bleh', callerId='<3025>', state='UP', account='null', dateOfCreation=Thu Oct 12 10:51:07 BRT 2006, dialedChannel=null, dialingChannel=AsteriskChannel[id='1160660968.768', name='SIP/3026-bzzz'], linkedChannel=AsteriskChannel[id='1160660968.768',name='SIP/3026-bzzz']] These channels are not consistent. By reading them you're induced to believe that 'SIP/3026-bzzz' dialed to 'SIP/3025-bleh', not the opposite. Although techically 'SIP/3026-bzzz' (former Local/3025@foo,2) indeed dialed to 'SIP/3025-bleh', it was the person at 3025 that acctually initiated the call, and the person at 3026 received the call. So the channels are not bringing useful information for this purpose. Besides that, the 'callerId' property for the 'SIP/3026-bzzz' channel is set to '3025' instead of '3026' as would be expected. The attached file is a text file showing all the PropertyChangeEvents that happen with the aforementioned channels. ===> CONCLUSION My conclusion is if I rely on PropertyChangeEvents to get my info I won't have useful information for all the possible situations. To get useful information I would need to run getChannels() from time to time. Although this would work, this is not what I need for my current project - we need real-time information on what's going on in the asterisk server, so we need to react to the PropertyChangeEvents. Guys, now tell me: Is there something I'm getting wrong from all this? Do you agree this is a problem in the org.asterisk.live package? If it's not, how should I deal with the resulting info? Also, is there any alternative strategy I could take to get the real-time information from the asterisk server without having to handle all those all-confusing, error-prone, newbies-unfriendly Events the asterisk Manager interface sends to us? Thank you very much, Bruno Negrao |
From: Stefan R. <ste...@re...> - 2006-10-11 19:58:35
|
Jes...@ha... wrote: >=20 > Hello all, >=20 > Asterisk newbie developer here, please bear with me. I have inherited a= > project that requires an upgrade to 0.3-m1 as that version puportedly > fixes an OutOfMemoryException bug that we were seeing. However the > upgrade broke our build. The ManagerConnection class no longer supports= > the method addEventHandler(ManagerEventHandler meh) but if I recall > correctly (it's been a couple days since I've looked at it) now only ha= s > the ability to add a Listener or something of the sort. Regardless, the= > methods apparently weren't deprecated as I would have expected but > simply *dropped* from the API altogether. Once we reach 1.0 we will of course maintain proper backwards compatibility and deprecate methods as you might be used to. With the 0.x releases this is currently not possible. > I was hoping to find some > documentation of the API changes in the 0.3-m1 release as I have a > broken app which needs to be fixed using the new API. The changes are documentd in the changelog provided with 0.3-m1: http://svn.reucon.net/repos/asterisk-java/tags/asterisk-java-0.3-m1/CHANG= ES important for you is: * Renamed ManagerEventHandler and ManagerResponseHandler to ManagerEventListener and SendActionCallback. so just implement ManagerEventListener and use addEventListener() > I'm assuming the > reworking shouldn't be that difficult to accomadate the API changes. > Hope not anyway. Any pointers to the newest APIs would be appreciated. No its really easy. API reference for 0.3-m1 is here: http://asterisk-java.org/0.3-m1/apidocs/index.html Hope that helps, Stefan --=20 reuter network consulting Neusser Str. 110 50760 Koeln Germany Telefon: +49 221 1305699-0 Telefax: +49 221 1305699-90 E-Mail: ste...@re... Jabber: ste...@re... |
From: Stefan R. <ste...@re...> - 2006-10-11 19:53:48
|
Bruno Negrao wrote: > Hi guys, >=20 > I'd like to know what are the differences between versions 0.3 and 0.3-= m1? 0.3-m1 is the "official" milestone 1 release. 0.3-SNAPSHOT is the latest snapshot, i.e. a moving target. Use 0.3-m1 if you want some stability. =3DStefan --=20 reuter network consulting Neusser Str. 110 50760 Koeln Germany Telefon: +49 221 1305699-0 Telefax: +49 221 1305699-90 E-Mail: ste...@re... Jabber: ste...@re... |
From: <Jes...@ha...> - 2006-10-11 18:45:50
|
Hello all, Asterisk newbie developer here, please bear with me. I have inherited a project that requires an upgrade to 0.3-m1 as that version puportedly fixes an OutOfMemoryException bug that we were seeing. However the upgrade broke our build. The ManagerConnection class no longer supports the method addEventHandler(ManagerEventHandler meh) but if I recall correctly (it's been a couple days since I've looked at it) now only has the ability to add a Listener or something of the sort. Regardless, the methods apparently weren't deprecated as I would have expected but simply *dropped* from the API altogether. I was hoping to find some documentation of the API changes in the 0.3-m1 release as I have a broken app which needs to be fixed using the new API. I'm assuming the reworking shouldn't be that difficult to accomadate the API changes. Hope not anyway. Any pointers to the newest APIs would be appreciated. thanks all, Jess "Bruno Negrao" <bn...@gm...> Sent by: ast...@li... 10/11/2006 12:20 PM Please respond to ast...@li... To ast...@li... cc Subject [Asterisk-java-devel] What are the differences between versions 0.3 and 0.3-m1? Hi guys, I'd like to know what are the differences between versions 0.3 and 0.3-m1? Which of them should I use? I use asterisk 1.2 and I plan to use 1.4 soon. Thank you, Bruno ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Asterisk-java-devel mailing list Ast...@li... https://lists.sourceforge.net/lists/listinfo/asterisk-java-devel |
From: Bruno N. <bn...@gm...> - 2006-10-11 17:20:18
|
Hi guys, I'd like to know what are the differences between versions 0.3 and 0.3-m1? Which of them should I use? I use asterisk 1.2 and I plan to use 1.4 soon. Thank you, Bruno |
From: Stefan R. <sr...@re...> - 2006-09-16 11:44:49
|
It seems like this is a problem with your dialplan. Are you sure your remote extensions are available in the default context? If not you should use something like Local/12345@my-external-context. If the problem persists please add some information about your dialplan. P.S. this is a -users question. --=20 reuter network consulting Neusser Str. 110 50760 Koeln Germany Telefon: +49 221 1305699-0 Telefax: +49 221 1305699-90 E-Mail: sr...@re... Jabber: sr...@ja... |
From: Daniel M. <da...@ou...> - 2006-09-16 06:36:47
|
Hey, I am trying to get my application to call an external number and then once it has answered call an extension. I am using [Code] //varaible channel is the extension that gets call in this case its something like 0XXXXXXXX so my dail plan strips the 0 and calls the X's System.out.println(""); System.out.println("Creating Call To: "+channel); OriginateAction org = new OriginateAction(); org.setChannel("Local/"+channel); org.setContext("default"); org.setExten(Settings.ASTERISKEXTENSION); org.setPriority(1); org.setCallingPres(true); org.setVariables(variables); ManagerResponse res; try { res = dmc.sendAction(org); Thread.sleep(30000); System.out.println("The resposnse was: "+res.getResponse ()); System.out.println("The message was: "+res.getMessage()); } catch (IOException e) { e.printStackTrace(); } catch (TimeoutException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } [/Code] When setting channel to a local extension the extension is called and when I answer it calls the other extension which plays some sounds for me (all good) When i set it to an external number 0+external it hangs up. as far as i can tell it places the call then hangs up straight away before it can even ring. Any ideas would be great Thanks :) Daniel External Extension: [Debug Information] == Manager 'remote_admin' logged on from 192.168.0.10 -- Executing Dial("Local/033740377@default-e9db,2", "SIP/ 33740377@myfone-sip|30") in new stack -- Called 33740377@myfone-sip -- SIP/myfone-sip-4ce6 answered Local/033740377@default-e9db,2 -- Executing Macro("Local/033740377@default-e9db,2", "hangupcall") in new stack -- Executing ResetCDR("Local/033740377@default-e9db,2", "w") in new stack -- Executing NoCDR("Local/033740377@default-e9db,2", "") in new stack -- Executing Wait("Local/033740377@default-e9db,2", "5") in new stack -- Executing Hangup("Local/033740377@default-e9db,2", "") in new stack == Manager 'remote_admin' logged off from 192.168.0.10 [/Debug Information] For Internal extension: [Normal Debug] == Manager 'remote_admin' logged on from 192.168.0.10 -- Executing Dial("Local/300@default-805e,2", "IAX2/300|30") in new stack -- Called 300 -- Call accepted by 192.168.0.1 (format gsm) -- Format for call is gsm -- IAX2/300-4 is ringing == Connect attempt from '127.0.0.1' unable to authenticate -- IAX2/300-4 answered Local/300@default-805e,2 > Channel Local/300@default-805e,1 was answered. == Manager 'remote_admin' logged off from 192.168.0.10 -- Executing AGI("Local/300@default-805e,1", "agi://192.168.0.7/ hello.agi") in new stack -- Executing Macro("Local/300@default-805e,2", "hangupcall") in new stack -- Executing ResetCDR("Local/300@default-805e,2", "w") in new stack -- Executing NoCDR("Local/300@default-805e,2", "") in new stack -- Executing Wait("Local/300@default-805e,2", "5") in new stack -- Playing 'you-have-these-options' (escape_digits=123) (timeout 5000) -- Playing 'digits/2' (language 'en') -- Executing Macro("IAX2/300-4", "hangupcall") in new stack -- Executing ResetCDR("IAX2/300-4", "w") in new stack -- Executing NoCDR("IAX2/300-4", "") in new stack -- Executing Wait("IAX2/300-4", "5") in new stack -- Hungup 'IAX2/300-4' -- Executing Hangup("Local/300@default-805e,2", "") in new stack [/Normal Debug] |
From: Sharif K. <sm...@gm...> - 2006-08-21 13:13:07
|
hi, Is there any softphone for asterisk that will run on Windows??? Sharif On 21/08/06, Stefan Reuter <sr...@re...> wrote: > > Victor Alvarez wrote: > > Hi all, > > Any idea about when asterisk-java 0.3 is going to be released? > > It will be released when Asterisk 1.4 is available. > For now there is an "unofficial" 3.0-m1 available if you don't like > snapshots. If there is demand we can start to release additional > milestone releases. > > =Stefan > > -- > reuter network consulting > Neusser Str. 110 > 50760 Koeln > Germany > Telefon: +49 221 1305699-0 > Telefax: +49 221 1305699-90 > E-Mail: sr...@re... > > > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job > easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > > _______________________________________________ > Asterisk-java-devel mailing list > Ast...@li... > https://lists.sourceforge.net/lists/listinfo/asterisk-java-devel > > > > -- Sharif Kazi Junior Developer Synerzip Softech India pvt ltd., Pune. Mobile No: 9890858323. |
From: Stefan R. <sr...@re...> - 2006-08-21 12:40:34
|
Victor Alvarez wrote: > Hi all, > Any idea about when asterisk-java 0.3 is going to be released?=20 It will be released when Asterisk 1.4 is available. For now there is an "unofficial" 3.0-m1 available if you don't like snapshots. If there is demand we can start to release additional milestone releases. =3DStefan --=20 reuter network consulting Neusser Str. 110 50760 Koeln Germany Telefon: +49 221 1305699-0 Telefax: +49 221 1305699-90 E-Mail: sr...@re... |
From: Victor A. <vic...@gl...> - 2006-08-21 11:55:27
|
Hi all, Any idea about when asterisk-java 0.3 is going to be released? Cheers, Victor. |
From: Daniel M. <da...@ou...> - 2006-08-19 04:37:28
|
Hey, I am having a bit of trouble with the AGI manager and am a bit pressed for time. I would like to start a call to an outside number, have it ring the number and then connect to an application get some feedback. So i have created an extension that links to my applications using the baseagi java interface and that works well. What I am having trouble with is monitoring the calls so that I can use this to call multiple people one at a time. So using the manager interface, I log in use an orignate action to make the first call, but I'm not sure how I can use my manager application to monitor that call to determine when it is finished so to start the next call. Is there a way to do this or am I going to have too look into making my manager application and extension application talk to each other? Thanks for your help Daniel |
From: Chris H. <ch...@as...> - 2006-08-15 20:28:16
|
On Aug 15, 2006, at 3:10 AM, Stefan Reuter wrote: > Chris Howard wrote: >> Hello All, >> > > Imho even a desktop machine should be able to handle that load. > On my todo list is still some load testing. What I would like to do is > take some scripts that behave more or less like asterisk (regarding > AGI > of course) with some configurable delay between the commands replies. > A bit like JMeter (maybe even a JMeter plugin?) > > Anybody interested in helping? > This is close to how we were testing. We had one box originating calls to another system that would answer and send random DTMF to our fastagi that was doing get option calls. We were sending 80 TDM calls between the systems every 30 seconds or so . This is where the AGI timeout was happening. Chris |
From: Stefan R. <sr...@re...> - 2006-08-15 08:10:41
|
Chris Howard wrote: > Hello All, > We have built a fastagi that is designed to route a large amount =20 > of calls rather quickly and we are experiencing some timeouts on the =20 > Deadagi dialplan call. >=20 > timed out after MAX_AGI_CONNECT (2000) milliseconds >=20 > I know that I can up the timeout in the source and recompile but 2 =20 > seconds is eons in call time. I noticed about 10 of these in a 15 =20 > minute period with ~80 call coming into the system and my connection =20 > thread set to 100. There should not have been any thread contention =20 > issues so I'm thinking a resource level issue. Of course I'm running = > the AGI on my desktop running in debug mode inside of Eclipse so I =20 > guess this could be an issue. I'll be testing tomorrow form a dual =20 > x86_64 AMD Opteron 250 so the issue may go away but I'm curious if =20 > anyone else has a issue with timeouts? Imho even a desktop machine should be able to handle that load. On my todo list is still some load testing. What I would like to do is take some scripts that behave more or less like asterisk (regarding AGI of course) with some configurable delay between the commands replies. A bit like JMeter (maybe even a JMeter plugin?) Anybody interested in helping? =3DStefan --=20 reuter network consulting Neusser Str. 110 50760 Koeln Germany Telefon: +49 221 1305699-0 Telefax: +49 221 1305699-90 E-Mail: sr...@re... |
From: Chris H. <ch...@as...> - 2006-08-15 02:04:02
|
Hello All, We have built a fastagi that is designed to route a large amount of calls rather quickly and we are experiencing some timeouts on the Deadagi dialplan call. timed out after MAX_AGI_CONNECT (2000) milliseconds I know that I can up the timeout in the source and recompile but 2 seconds is eons in call time. I noticed about 10 of these in a 15 minute period with ~80 call coming into the system and my connection thread set to 100. There should not have been any thread contention issues so I'm thinking a resource level issue. Of course I'm running the AGI on my desktop running in debug mode inside of Eclipse so I guess this could be an issue. I'll be testing tomorrow form a dual x86_64 AMD Opteron 250 so the issue may go away but I'm curious if anyone else has a issue with timeouts? Cheers, Chris |
From: Stefan R. <sr...@re...> - 2006-08-11 18:43:06
|
Hi, Ricardo Gonzalez wrote: > I have and AGI script who send SMS messages via a RS232 GSM MODEM with > AT commands, now I want to create a new asterisk app just like Dial or > meetme for do this task I need information about the Asterisk API for > develop this kind of applications. Asterisk applications are written in C following the Asterisk API. This can't be done by using Asterisk-Java. To get you started you can have a look at Russell's response to a similar question on asterisk-dev: http://archives.free.net.ph/message/20060719.052552.d9655d55.en.html =3DStefan --=20 reuter network consulting Neusser Str. 110 50760 Koeln Germany Telefon: +49 221 1305699-0 Telefax: +49 221 1305699-90 E-Mail: sr...@re... Jabber: sr...@ja... |
From: Ricardo G. <rgo...@co...> - 2006-08-11 18:01:55
|
I have and AGI script who send SMS messages via a RS232 GSM MODEM with AT commands, now I want to create a new asterisk app just like Dial or meetme for do this task I need information about the Asterisk API for develop this kind of applications. Thanks Edgar Lazaro |
From: Stefan R. <sr...@re...> - 2006-08-11 17:48:33
|
Shivram u wrote: > I havent encountered any problems with that code. I browsing the code > came across this. Im not that experienced in java. I assumed that the > accept() call would be similar to a C lib accept() call, where an accep= t > can fail if the client aborted the connection(ECONNABORTED) > =20 > I tried searching the web for the reasons why an IOException could > be generated for a socket accept(), but havent found any. Yes, you are right. There is not much documentation but it seems indeed that most exceptions are recoverable. I changed the code to check for the die flag and break only if we explicitly closed the socket by shutdown(). You can see the changes at http://asterisk-java.org/fisheye/browse/repos/asterisk-java/trunk/src/mai= n/java/org/asteriskjava/fastagi/DefaultAgiServer.java?r1=3D492&r2=3D538#s= eg26 Thanks! Stefan --=20 reuter network consulting Neusser Str. 110 50760 Koeln Germany Telefon: +49 221 1305699-0 Telefax: +49 221 1305699-90 E-Mail: sr...@re... Jabber: sr...@ja... |