Re: [Asterisk-java-users] Reading a variable after call ends
Brought to you by:
srt
From: Daniele R. <dan...@gm...> - 2013-08-05 16:28:45
|
Sure, every time I remove the listener before adding new one. In effect my system should manage many calls, about 1500/2500 at day. On the other hand, using an Agiscript I have the problem that in my method I should update the db but doing so I update the db either in agiscript and then in the code of originateAsync and may be not simple manage locking of record because can happen that modification can be concurrent. Thanks 2013/8/5 Yves A. <yv...@gm...> > hi, > > this looks ok for me... as long as you dont forget to remove the listener. > I also would check the impact to the whole system / performance / memory > usage depending on the amount of calls > your code has to handle... i could imagine that this is not healthy for > high traffic... if you have a high call volume you > maybe should go another way.... but try it out and give feedback, > > yves > > > Am 05.08.2013 16:33, schrieb Daniele Renda: > > Ah ok, > the problem is that I need to know the value of the variable inside > "private class MyOriginateCallback implements OriginateCallback" because I > need the reference of my "Call" object that is inside this class. > So every time I should add and remove listener from managerconnection is > this way: > > channel.getServer().getManagerConnection().addEventListener(new > ManagerEventListener() { > > @Override > public void onManagerEvent(ManagerEvent event) { > if (event instanceof VarSetEvent) { > VarSetEvent varEvent = (VarSetEvent) event; > String variabile = varEvent.getVariable(); > log.debug("Impostata variabile: " + variabile + " > su telefonata " + telefonata.getId()); > String valore = varEvent.getValue(); > log.debug("Valore : " + valore + " su telefonata " > + telefonata.getId()); > } > > } > }); > > What do you think? > > Thanks > > > > > 2013/8/5 Yves A. <yv...@gm...> > >> no... >> >> i don´t think that the propertychangeeventlistener will receive >> varsetevents.... >> you´ll have to open a managerconnection and add an eventlistener to it.. >> >> y. >> >> >> Am 05.08.2013 16:03, schrieb Daniele Renda: >> >> Hi Yves, >> thanks for your suggestion. >> >> You mean that in ; >> >> channel.addPropertyChangeListener(new PropertyChangeListener() { >> >> @Override >> public void propertyChange(PropertyChangeEvent evt) { >> >> I need to test: >> >> if (evt.getSource() instanceof VarSetEvent) >> >> Right? >> >> Thanks >> >> >> >> 2013/8/5 Yves A. <yv...@gm...> >> >>> Have you tried to "listen" to the VarSetEvent ? >>> >>> yves >>> >>> Am 05.08.2013 14:29, schrieb Daniele Renda: >>> >>> Hi yves, >>> sorry for the lack of details. >>> >>> I do this: >>> >>> OriginateAction action = createAction(telefonata); >>> try { >>> telefonata.onCreate(); >>> asteriskServer.originateAsync(action, new >>> MyOriginateCallback(telefonata)); >>> } catch (ManagerCommunicationException e) { >>> log.error(telefonata.getId() + " ha generato un >>> errore", e); >>> telefonata.onFailure(); >>> } >>> >>> private class MyOriginateCallback implements OriginateCallback { >>> >>> private final TelefonataInterface telefonata; >>> >>> private MyOriginateCallback(TelefonataInterface telefonata) { >>> this.telefonata = telefonata; >>> } >>> >>> @Override >>> public void onDialing(final AsteriskChannel channel) { >>> log.debug("On dialing comunicazione " + telefonata.getId()); >>> telefonata.onDialing(); >>> channel.addPropertyChangeListener(new >>> PropertyChangeListener() { >>> >>> @Override >>> public void propertyChange(PropertyChangeEvent evt) { >>> if (evt.getSource() instanceof AsteriskChannel) { >>> >>> // EVENTO DI HANGUP >>> if (channel.getState() == ChannelState.HUNGUP) >>> { >>> String hangupCauseText = ""; >>> if (channel.getHangupCauseText() != null) >>> hangupCauseText = >>> channel.getHangupCauseText(); >>> telefonata.onHangupEvent(channel); >>> } >>> >>> } >>> }); >>> } >>> >>> @Override >>> public void onSuccess(AsteriskChannel channel) { >>> log.debug("Success " + telefonata.getId() + " " + channel); >>> log.debug("La comunicazione è iniziata alle " + >>> channel.getDateOfCreation()); >>> telefonata.onSuccess(); >>> } >>> >>> @Override >>> public void onNoAnswer(AsteriskChannel channel) { >>> log.debug("NoAnswer " + telefonata.getId() + " " + channel); >>> telefonata.onNoAnswer(); >>> } >>> >>> @Override >>> public void onBusy(AsteriskChannel channel) { >>> log.debug("Busy " + telefonata.getId() + " " + channel); >>> telefonata.onBusy(); >>> } >>> >>> @Override >>> public void onFailure(LiveException cause) { >>> log.debug("OnFailure(...)' - " + telefonata.getId()); >>> telefonata.onFailure(); >>> } >>> >>> } >>> >>> My dialplan: >>> >>> [test] >>> exten => s,1,Answer() >>> exten => s,1,Playback(smt) >>> exten => 3,n,Set(variable=This is the value of the variable) >>> exten => s,n,Hangup() >>> >>> I've a PropertyChangeListener so I can know when the call hangup. I'd >>> like to get the value of the variable into Javacode in my method >>> onHangupEvent(), so when the call end I need to read that variable. >>> I know that I can create a class that extends BaseAgiScript to get the >>> variable, but there is another way to do this? Would be more convenient >>> to have the variable in the method onHangupEvent() for my case. >>> >>> Thanks >>> >>> >>> 2013/8/5 Yves A. <yv...@gm...> >>> >>>> why do most people always think, one could "guess" their code, >>>> settings and environment that causes trouble? >>>> >>>> every access to a channel lead to an exception, if the channel is >>>> already hung up. >>>> if you need access to your channelvariables after hangup, you have to >>>> go another way... >>>> varsetevent and a local static map may be your friends here. >>>> >>>> of course there exists the h extensions which you could use to call >>>> another agi after hangup, but as i wrote before... i have no >>>> idea what your objective is, nor do i have any code to comment on... >>>> >>>> yves >>>> >>>> >>>> Am 05.08.2013 13:00, schrieb Daniele Renda: >>>> >>>> Hi, >>>> I need to read a variable that I set from dialplan after i receive the >>>> onHangupEvent() on OriginateAsync. >>>> But I've an exception because Asterisk Java don't find anymore the >>>> channels because is hanged up I guess. >>>> >>>> So, there is another way to get the variable in Java before the call >>>> ends? >>>> >>>> Thanks very much! >>>> >>>> -- >>>> Daniele Renda >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> Get your SQL database under version control now! >>>> Version control is standard for application code, but databases havent >>>> caught up. So what steps can you take to put your SQL databases under >>>> version control? Why should you start doing it? Read more to find out.http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk >>>> >>>> >>>> >>>> _______________________________________________ >>>> Asterisk-java-users mailing lis...@li...https://lists.sourceforge.net/lists/listinfo/asterisk-java-users >>>> >>>> >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> Get your SQL database under version control now! >>>> Version control is standard for application code, but databases havent >>>> caught up. So what steps can you take to put your SQL databases under >>>> version control? Why should you start doing it? Read more to find out. >>>> >>>> http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk >>>> _______________________________________________ >>>> Asterisk-java-users mailing list >>>> Ast...@li... >>>> https://lists.sourceforge.net/lists/listinfo/asterisk-java-users >>>> >>>> >>> >>> >>> -- >>> Daniele Renda >>> >>> >>> ------------------------------------------------------------------------------ >>> Get your SQL database under version control now! >>> Version control is standard for application code, but databases havent >>> caught up. So what steps can you take to put your SQL databases under >>> version control? Why should you start doing it? Read more to find out.http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk >>> >>> >>> >>> _______________________________________________ >>> Asterisk-java-users mailing lis...@li...https://lists.sourceforge.net/lists/listinfo/asterisk-java-users >>> >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> Get your SQL database under version control now! >>> Version control is standard for application code, but databases havent >>> caught up. So what steps can you take to put your SQL databases under >>> version control? Why should you start doing it? Read more to find out. >>> >>> http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk >>> _______________________________________________ >>> Asterisk-java-users mailing list >>> Ast...@li... >>> https://lists.sourceforge.net/lists/listinfo/asterisk-java-users >>> >>> >> >> >> -- >> Daniele Renda >> >> >> ------------------------------------------------------------------------------ >> Get your SQL database under version control now! >> Version control is standard for application code, but databases havent >> caught up. So what steps can you take to put your SQL databases under >> version control? Why should you start doing it? Read more to find out.http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk >> >> >> >> _______________________________________________ >> Asterisk-java-users mailing lis...@li...https://lists.sourceforge.net/lists/listinfo/asterisk-java-users >> >> >> >> >> ------------------------------------------------------------------------------ >> Get your SQL database under version control now! >> Version control is standard for application code, but databases havent >> caught up. So what steps can you take to put your SQL databases under >> version control? Why should you start doing it? Read more to find out. >> >> http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk >> _______________________________________________ >> Asterisk-java-users mailing list >> Ast...@li... >> https://lists.sourceforge.net/lists/listinfo/asterisk-java-users >> >> > > > -- > Daniele Renda > > > ------------------------------------------------------------------------------ > Get your SQL database under version control now! > Version control is standard for application code, but databases havent > caught up. So what steps can you take to put your SQL databases under > version control? Why should you start doing it? Read more to find out.http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk > > > > _______________________________________________ > Asterisk-java-users mailing lis...@li...https://lists.sourceforge.net/lists/listinfo/asterisk-java-users > > > > > ------------------------------------------------------------------------------ > Get your SQL database under version control now! > Version control is standard for application code, but databases havent > caught up. So what steps can you take to put your SQL databases under > version control? Why should you start doing it? Read more to find out. > http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk > _______________________________________________ > Asterisk-java-users mailing list > Ast...@li... > https://lists.sourceforge.net/lists/listinfo/asterisk-java-users > > -- Daniele Renda |