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
>
|