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: adriano s. <sle...@bs...> - 2018-11-24 21:54:51
|
Hello Brandon!
Thank you for your suggestions. I will try to use the agi in the context to
and start the call through the management interface.
If I succeed, I'll leave the shared solution here.
Regards,
Adriano Santos
Em sáb, 24 de nov de 2018 às 15:21, Brandon Haugen <bh...@ta...>
escreveu:
> 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
>>
> _______________________________________________
> 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
|