[asterisk-users] How to check a number online or offline

Phuong Hoang ducphuongbk200586 at gmail.com
Tue Jan 11 02:35:55 CST 2011


Hi Dhaval,
Can you say how to fire action on AMI in this case and recieve response on
AMI. I also tried to do with HangupAction and RedirectAction action (using
asterisk-java library) in application java (AMI) to hang up or redirect a
channel that is online at the extension on asterisk but not successfully.
This is my code:



package Test;

import java.io.IOException;

import org.asteriskjava.manager.AuthenticationFailedException;
import org.asteriskjava.manager.ManagerConnection;
import org.asteriskjava.manager.ManagerConnectionFactory;
import org.asteriskjava.manager.TimeoutException;
import org.asteriskjava.manager.action.HangupAction;
import org.asteriskjava.manager.action.OriginateAction;
import org.asteriskjava.manager.action.RedirectAction;
import org.asteriskjava.manager.response.ManagerResponse;

public class TestOriginate {

    /**
     * @param args
     */
    private ManagerConnection managerConnection;

    public TestOriginate() throws IOException {
        ManagerConnectionFactory factory = new ManagerConnectionFactory(
                "192.168.0.178", "manager", "pa55w0rd");

        this.managerConnection = factory.createManagerConnection();

    }
    public void run() {
        RedirectAction redirectAction;
        ManagerResponse originateResponse;
        String state = "";
        String receiver = "0976468586";
        redirectAction = new RedirectAction();
        redirectAction.setContext("from-smg");
        redirectAction.setExten("9220");
        redirectAction.setPriority(new Integer(1));
        redirectAction.setChannel("SIP/"+ receiver);

        try {
            System.out.println("Starting login 192.168.0.178");
            managerConnection.login();

            System.out.println("After login 192.168.0.178");

        } catch (IllegalStateException e) {

        } catch (TimeoutException e) {

        } catch (IOException e) {

        } catch (AuthenticationFailedException e) {

        }
        try {
            originateResponse = managerConnection.sendAction(redirectAction,
                    30000);
            state = originateResponse.getResponse();
            System.out.println("State value is :" + state);
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (TimeoutException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        managerConnection.logoff();
    }

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub

        TestOriginate test = new TestOriginate();
        test.run();
    }

}

*While i run above code, the result printed on console likes following:*


Starting login 192.168.0.178
Jan 11, 2011 3:26:01 PM
org.asteriskjava.manager.internal.ManagerConnectionImpl connect
INFO: Connecting to 192.168.0.178:5038
Jan 11, 2011 3:26:02 PM
org.asteriskjava.manager.internal.ManagerConnectionImpl
setProtocolIdentifier
INFO: Connected via Asterisk Call Manager/1.1
Jan 11, 2011 3:26:02 PM
org.asteriskjava.manager.internal.ManagerConnectionImpl
setProtocolIdentifier
WARNING: Unsupported protocol version 'Asterisk Call Manager/1.1'. Use at
your own risk.
Jan 11, 2011 3:26:02 PM
org.asteriskjava.manager.internal.ManagerConnectionImpl doLogin
INFO: Successfully logged in
Jan 11, 2011 3:26:04 PM
org.asteriskjava.manager.internal.ManagerConnectionImpl doLogin
INFO: Determined Asterisk version: Asterisk 1.0
After login 192.168.0.178
State value is :Error
Jan 11, 2011 3:26:04 PM
org.asteriskjava.manager.internal.ManagerConnectionImpl disconnect
INFO: Closing socket.
Jan 11, 2011 3:26:04 PM org.asteriskjava.manager.internal.ManagerReaderImpl
run
INFO: Terminating reader thread: socket closed

I hope you can spend your time to read what i have written above and help me
solve this problem.

Can you contact with me by my yahoo nick : ducphuongbk200586 at yahoo.com
Thanks and best regards.
Phuong

On Mon, Jan 10, 2011 at 10:48 PM, DHAVAL INDRODIYA <dhaval.it01034 at gmail.com
> wrote:

> HI Phuong,
>
> JIM is right way but if you want to use extension state then there is a
> simple way of achiving through
> AMI, you need to fire this action on AMI and response have your answer ,
>
> Please read about Action ExtensionState.
>
>
> http://www.voip-info.org/wiki/view/Asterisk+Manager+API+Action+ExtensionState
>
> If you are looking for extension state just pass extension and you will
> receive perfect response of that extension then you cans code as you want.
>
> regards
> Dhaval
>
>
> On Tue, Jan 11, 2011 at 9:56 AM, Phuong Hoang <ducphuongbk200586 at gmail.com
> > wrote:
>
>> Hi Jim,
>> Really, I have`nt understood what you said yet. I am building a system on
>> asterisk, and want to check a number online, offline or unreachable. If
>> number is online on the extension then i want to redirect other extension.
>> Redirecting is done by application java using AMI. can you help me do it?
>> Thanks and best regards!
>> Phuong
>>
>>
>> On Mon, Jan 10, 2011 at 7:09 PM, Jim Dickenson <dickenson at cfmc.com>wrote:
>>
>>> If you do an AMI packet like this:
>>>
>>> Action: Originate
>>> Channel: Local/get_info at some_context
>>> Exten: do_noop
>>> Context: some_context
>>> Priority: 1
>>> ActionID: GetInfo
>>> Async: true
>>>
>>> and then have a couple extensions that do what you want. Here is what I
>>> do in my case:
>>>
>>> exten => get_info,1,Answer()
>>> exten => get_info,n,UserEvent(GetInfo,Version:ABE &
>>> DateTime:${STRFTIME(${EPOCH},,%Y%m%d%H%M%S)} & CfMC:83351)
>>> exten => get_info,n,Hangup()
>>>
>>> exten => do_noop,1,Answer()
>>> exten => do_noop,n,Wait(1)
>>> exten => do_noop,n,Hangup()
>>>
>>> You would then do what you need to do in your extensions.
>>>
>>>
>>>
>>> --
>>> Jim Dickenson
>>> mailto:dickenson at cfmc.com <dickenson at cfmc.com>
>>>
>>> CfMC
>>> http://www.cfmc.com/
>>>
>>>
>>>
>>> On Jan 10, 2011, at 6:16 PM, Phuong Hoang wrote:
>>>
>>> Thanks Jim,
>>> Can you say about your idea clearlier? I want to use AMI in an
>>> application java to check a number online, offline or unreachable and result
>>> is returned to the appliction java. If the number is online now, i will use
>>> AMI to hangup it, else i do nothing.
>>> Best regards,
>>> Phuong.
>>>
>>> On Mon, Jan 10, 2011 at 8:50 AM, Jim Dickenson <dickenson at cfmc.com>wrote:
>>>
>>>> You can always place a "call" to an extension that sends a user event
>>>> from AMI. If there are no native AMI commands that can return what you want
>>>> originate a call to a local extension that returns a user event.
>>>>  --
>>>> Jim Dickenson
>>>> mailto:dickenson at cfmc.com <dickenson at cfmc.com>
>>>>
>>>> CfMC
>>>> http://www.cfmc.com/
>>>>
>>>>
>>>>
>>>> On Jan 10, 2011, at 7:48 AM, Phuong Hoang wrote:
>>>>
>>>> Thanks Dhaval,
>>>> My purpose is that i want to use java application (using Asterisk
>>>> Manager Interface) to check a number online, offline or unreachable. Your
>>>> suggest uses function DEVICE_STATE but this is written in dialplan not
>>>> application java. Do you know other way to do this for me?thanks and looks
>>>> forward to listening your reply.
>>>> Regards!
>>>> Phuong
>>>>
>>>> On Mon, Jan 10, 2011 at 3:13 AM, DHAVAL INDRODIYA <
>>>> dhaval.it01034 at gmail.com> wrote:
>>>>
>>>>>
>>>>> Hello ,
>>>>>
>>>>> You can use Dialplan function DEVICE_STATE, which will gives you
>>>>> perfect status of DEVICE.
>>>>>
>>>>> regards
>>>>> Dhaval
>>>>>
>>>>>
>>>>> On Mon, Jan 10, 2011 at 4:11 PM, Steve Howes <
>>>>> steve-lists at geekinter.net> wrote:
>>>>>
>>>>>>
>>>>>> On 10 Jan 2011, at 10:37, Phuong Hoang wrote:
>>>>>> I found the link you have just sent to me but it do`nt help me to
>>>>>> resolve this. Can you say clearlier for me?
>>>>>>
>>>>>> Not really. It's a list of manager commands. There is 'SIPshowpeer'
>>>>>> which will work for sip stuff. Try the command 'Command' action and you can
>>>>>> send any CLI command, like sip/iax2 show peers etc. 'ExtensionState' might
>>>>>> work in some cases..
>>>>>>
>>>>>> S
>>>>>> --
>>>>>> _____________________________________________________________________
>>>>>> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>>>>>> New to Asterisk? Join us for a live introductory webinar every Thurs:
>>>>>>               http://www.asterisk.org/hello
>>>>>>
>>>>>> asterisk-users mailing list
>>>>>> To UNSUBSCRIBE or update options visit:
>>>>>>   http://lists.digium.com/mailman/listinfo/asterisk-users
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> _____________________________________________________________________
>>>>> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>>>>> New to Asterisk? Join us for a live introductory webinar every Thurs:
>>>>>               http://www.asterisk.org/hello
>>>>>
>>>>> asterisk-users mailing list
>>>>> To UNSUBSCRIBE or update options visit:
>>>>>   http://lists.digium.com/mailman/listinfo/asterisk-users
>>>>>
>>>>
>>>> --
>>>> _____________________________________________________________________
>>>> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>>>> New to Asterisk? Join us for a live introductory webinar every Thurs:
>>>>               http://www.asterisk.org/hello
>>>>
>>>> asterisk-users mailing list
>>>> To UNSUBSCRIBE or update options visit:
>>>>   http://lists.digium.com/mailman/listinfo/asterisk-users
>>>>
>>>>
>>>>
>>>> --
>>>> _____________________________________________________________________
>>>> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>>>> New to Asterisk? Join us for a live introductory webinar every Thurs:
>>>>               http://www.asterisk.org/hello
>>>>
>>>> asterisk-users mailing list
>>>> To UNSUBSCRIBE or update options visit:
>>>>   http://lists.digium.com/mailman/listinfo/asterisk-users
>>>>
>>>
>>> --
>>> _____________________________________________________________________
>>> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>>> New to Asterisk? Join us for a live introductory webinar every Thurs:
>>>               http://www.asterisk.org/hello
>>>
>>> asterisk-users mailing list
>>> To UNSUBSCRIBE or update options visit:
>>>   http://lists.digium.com/mailman/listinfo/asterisk-users
>>>
>>>
>>>
>>> --
>>> _____________________________________________________________________
>>> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>>> New to Asterisk? Join us for a live introductory webinar every Thurs:
>>>               http://www.asterisk.org/hello
>>>
>>> asterisk-users mailing list
>>> To UNSUBSCRIBE or update options visit:
>>>   http://lists.digium.com/mailman/listinfo/asterisk-users
>>>
>>
>>
>> --
>> _____________________________________________________________________
>> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>> New to Asterisk? Join us for a live introductory webinar every Thurs:
>>               http://www.asterisk.org/hello
>>
>> asterisk-users mailing list
>> To UNSUBSCRIBE or update options visit:
>>   http://lists.digium.com/mailman/listinfo/asterisk-users
>>
>
>
> --
> _____________________________________________________________________
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
> New to Asterisk? Join us for a live introductory webinar every Thurs:
>               http://www.asterisk.org/hello
>
> asterisk-users mailing list
> To UNSUBSCRIBE or update options visit:
>   http://lists.digium.com/mailman/listinfo/asterisk-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20110111/b909939f/attachment.htm>


More information about the asterisk-users mailing list