Re: [Asterisk-java-users] How can i use this library to make a call and run an audio file on it
Brought to you by:
srt
From: Brandon H. <bh...@ta...> - 2018-11-24 17:20:59
|
Hey Adriano, I was looking for a way to send audio through the Manager Interface and I found this in the FAQ for Asterisk Java. Currently, there is no support for sending media or files across the > Manager interface or the Gateway interface. Having access to the media > stream without participating in the call would require saving it to a file > or modifications to Asterisk itself, and you can expose any files (media or > otherwise) through some other means (HTTP, SSH, etc). So you will need to play the audio through either regular dialplan code in *extensions.conf* or by using Agi and Asterisk Java together. Since you are specifying the context as "from-internal" you can call out to Agi from within that context and use the code I shared earlier in this thread. Thanks, Brandon On Fri, Nov 23, 2018 at 6:31 PM adriano santos <sle...@bs...> wrote: > Hi! > > I'm trying to use the management interface to originate a call, but in the > moment I can not do play an audio file. The code is something like this: > > @Slf4j > public class OriginateCall { > private static final int PORT = 5038; > private static final String HOSTNAME = "*.*.*.*"; > private static final String USERNAME = "*"; > private static final String PASSWORD = "*"; > private static final String CONTEXT = "context"; > // Number to call, prefaced by 1+areacode (just like your home phone). > public String call = "some_number"; > private ManagerConnection managerConnection; > > public OriginateCall() { > ManagerConnectionFactory factory = new ManagerConnectionFactory(HOSTNAME, > PORT, USERNAME, PASSWORD); > > this.managerConnection = factory.createManagerConnection(); > } > > public void call() throws IllegalStateException, IOException, > AuthenticationFailedException, TimeoutException { > OriginateAction originateAction; > ManagerResponse originateResponse; > > originateAction = new OriginateAction(); > /* > * Format the call for dialing Channel example: > Local/12065551234@outgoing-42 > */ > Integer timeoutCall = 50000; > originateAction.setChannel("SIP/" + call + "@" + CONTEXT); > originateAction.setContext("from-internal"); > originateAction.setCallerId("55011100"); // what will be showed on > the phone screen (in most cases your phone) > originateAction.setExten(""/*[targetExten]*/); //where to call.. > the target extension... internal extension or the outgoing number.. the > 0[nomberToCall] > originateAction.setPriority(1);// priority of the call > > originateAction.setTimeout(timeoutCall ); // the time that a pickup event > will be waited for > originateAction.setVariable("UUID", UUID.randomUUID().toString()); > // asigning a unique ID in order to be able to hangup the call. > > managerConnection.login(); > > /* > * send the originate action > */ > originateResponse = managerConnection.sendAction(originateAction, 50000); > > // print out whether the originate succeeded or not > log.info("Call Response -> {}", originateResponse.getResponse()); > > // and finally log off and disconnect > managerConnection.logoff(); > } > public static void main(String... args) throws IllegalStateException, > IOException, AuthenticationFailedException, TimeoutException { > OriginateCall originate = new OriginateCall(); > originate.call(); > } > > } > > I'll view the information you sent me. Again thank you for your time and > knowledge. > > Regards, > Adriano Santos > > Em sex, 23 de nov de 2018 às 19:45, Brandon Haugen <bh...@ta...> > escreveu: > >> Hey Adriano, >> >> Yes, the code I shared is showing how to receive a call and respond with >> audio. >> >> I have a scenario where we allow users to initiate a call to themselves >> (by pressing a button in a Web App) and when they pick up the call, we >> stream a couple of audio files (one after the other) to give them >> instructions for the system they are using. In our scenario though, we are >> just initiating the call through the use of Call Files ( >> https://wiki.asterisk.org/wiki/display/AST/Asterisk+Call+Files). When >> the user picks up, they just drop into the context specified in the Call >> File which directs them to our Asterisk Java AgiScript. In this case, I >> still use `getData` on the `AgiChannel` to stream the files when I need >> DTMF, otherwise I just use the `exec` method on the AgiChannel to use the >> Playback application within Asterisk. >> >> If you are going to originate the Call in some other way, I won't be of >> much help at the moment as I have not worked with the Asterisk Manager >> Interface, ( >> https://wiki.asterisk.org/wiki/display/AST/The+Asterisk+Manager+TCP+IP+API) >> yet. Asterisk Java does also support the Manager Interface so you might >> find something that more closely resembles what you are looking to do at >> http://asterisk-java.org . >> >> On Fri, Nov 23, 2018 at 3:21 PM adriano santos <sle...@bs...> >> wrote: >> >>> Hi Brandon! Thank you for your response. >>> >>> Is the example you sent to receive a call and respond with correct >>> audio? >>> What I need to do is originate a call to cell phone and play audio. For >>> now no need for DTMF. >>> >>> Regards, >>> Adriano Santos >>> >>> Em sex, 23 de nov de 2018 às 18:34, Brandon Haugen < >>> bh...@ta...> escreveu: >>> >>>> Hey Adriano, >>>> >>>> I have within the last few months started using Asterisk-Java for a >>>> project and you can certainly playback an audio file. There are a couple of >>>> things that you will have to think about to determine the best approach for >>>> your situation, here is what I can tell you though >>>> >>>> - If you do *not* need to listen for DTMF input (keypresses) while >>>> playing the audio file then you can play an audio file on an AgiChannel in >>>> Java by using something like `agiChannel.exec("playback", "<path to audio >>>> file>");` >>>> - This example in the Asterisk Java GitHub repository shows >>>> answering a call, playing a file back, and then hanging up (note that in >>>> the example they rely on methods defined in the AgiOperations class so they >>>> aren't operating directly on the AgiChannel like the line of code I am >>>> sharing is doing) >>>> https://github.com/asterisk-java/asterisk-java/blob/master/src/main/java/org/asteriskjava/examples/fastagi/ExampleCallIn.java >>>> - If you *do* need to listen for DTMF input while playing the audio >>>> file then you will want to use the `getData` or `getOption` methods defined >>>> on AgiChannel. You will need to pick which method is appropriate depending >>>> on the length of DTMF you need to listen for (`getOption` returns a single >>>> char while `getData` will return a String) >>>> >>>> Thanks, >>>> Brandon >>>> >>>> On Thu, Nov 22, 2018 at 12:09 PM adriano santos <sle...@bs...> >>>> wrote: >>>> >>>>> Hello, guys! >>>>> >>>>> I would like to play an audio file on a initialized call via java. I >>>>> haven't found an example for this. >>>>> Is this possible? >>>>> >>>>> -- >>>>> Adriano P. Santos >>>>> >>>>> "O homem erudito é um descobridor de fatos que já existem - mas o >>>>> homem sábio é um criador de valores que não existem e que ele faz existir." >>>>> Albert Einstein >>>>> _______________________________________________ >>>>> Asterisk-java-users mailing list >>>>> Ast...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/asterisk-java-users >>>>> >>>> _______________________________________________ >>>> Asterisk-java-users mailing list >>>> Ast...@li... >>>> https://lists.sourceforge.net/lists/listinfo/asterisk-java-users >>>> >>> >>> >>> -- >>> Adriano P. Santos >>> >>> "O homem erudito é um descobridor de fatos que já existem - mas o homem >>> sábio é um criador de valores que não existem e que ele faz existir." >>> Albert Einstein >>> _______________________________________________ >>> Asterisk-java-users mailing list >>> Ast...@li... >>> https://lists.sourceforge.net/lists/listinfo/asterisk-java-users >>> >> _______________________________________________ >> Asterisk-java-users mailing list >> Ast...@li... >> https://lists.sourceforge.net/lists/listinfo/asterisk-java-users >> > > > -- > Adriano P. Santos > > "O homem erudito é um descobridor de fatos que já existem - mas o homem > sábio é um criador de valores que não existem e que ele faz existir." > Albert Einstein > _______________________________________________ > Asterisk-java-users mailing list > Ast...@li... > https://lists.sourceforge.net/lists/listinfo/asterisk-java-users > |