简体   繁体   English

Asterisk :: AGI perl-检查SIP频道是否在线?

[英]Asterisk::AGI perl - check if SIP channel is online?

I'm writing asterisk agi script for 1.8 asterisk. 我正在为1.8星号编写星号agi脚本。 Before dial, I want to check if desired SIP channel is available. 拨号之前,我要检查所需的SIP通道是否可用。 But I cant find a way to check if SIP channel is online using Asterisk::AGI 但是我找不到使用Asterisk :: AGI检查SIP频道是否在线的方法

trying $AGI->channel_status('SIP/1001'); 尝试$AGI->channel_status('SIP/1001');

but it always returns -1 但它总是返回-1

I was thinking to use AMI, but it doesn't work from AGI script (only in debug asterisk -vvvvc ) 我当时正在考虑使用AMI,但它不能通过AGI脚本运行(仅在debug asterisk -vvvvc

You can get result of function SIP_PEER or function CHANNEL 您可以获得函数SIP_PEER或函数CHANNEL的结果

pro-sip*CLI> core show function SIPPEER 

  -= Info about function 'SIPPEER' =- 

[Synopsis]
Gets SIP peer information. 

[Description]
Not available

[Syntax]
SIPPEER(peername[,item])

[Arguments]
item
    ip - (default) The ip address.
    port - The port number.
    mailbox - The configured mailbox.
    context - The configured context.
    expire - The epoch time of the next expire.
    dynamic - Is it dynamic? (yes/no).
    callerid_name - The configured Caller ID name.
    callerid_num - The configured Caller ID number.
    callgroup - The configured Callgroup.
    pickupgroup - The configured Pickupgroup.
    codecs - The configured codecs.
    status - Status (if qualify=yes).
    regexten - Registration extension.
    limit - Call limit (call-limit).
    busylevel - Configured call level for signalling busy.
    curcalls - Current amount of calls. Only available if call-limit
    is set.
    language - Default language for peer.
    accountcode - Account code for this peer.
    useragent - Current user agent id for peer.
    maxforwards - The value used for SIP loop prevention in outbound
    requests
    chanvar[name] - A channel variable configured with setvar for this
    peer.
    codec[x] - Preferred codec index number <x> (beginning with
    zero).

[See Also]
Not available
pro-sip*CLI> 


pro-sip*CLI> core show function CHANNEL

  -= Info about function 'CHANNEL' =- 

[Synopsis]
Gets/sets various pieces of information about the channel. 

[Description]
Gets/sets various pieces of information about the channel, additional <item>
may be available from the channel driver; see its documentation for details.
Any <item> requested that is not available on the current channel will return
an empty string.

[Syntax]
CHANNEL(item)

[Arguments]
item
    Standard items (provided by all channel technologies) are:
    amaflags - R/W the Automatic Message Accounting (AMA) flags on the
    channel. When read from a channel, the integer value will always be
    returned. When written to a channel, both the string format or integer
    value is accepted.
        1 - 'OMIT'
        2 - 'BILLING'
        3 - 'DOCUMENTATION'
    accountcode - R/W the channel's account code.
    audioreadformat - R/O format currently being read.
    audionativeformat - R/O format used natively for audio.
    audiowriteformat - R/O format currently being written.
    callgroup - R/W call groups for call pickup.
    channeltype - R/O technology used for channel.
    checkhangup - R/O Whether the channel is hanging up (1/0)
    language - R/W language for sounds played.
    musicclass - R/W class (from musiconhold.conf) for hold music.
    name - The name of the channel
    parkinglot - R/W parkinglot for parking.
    rxgain - R/W set rxgain level on channel drivers that support it.
    secure_bridge_signaling - Whether or not channels bridged to this
    channel require secure signaling
    secure_bridge_media - Whether or not channels bridged to this channel
    require secure media
    state - R/O state for channel
    tonezone - R/W zone for indications played
    transfercapability - R/W ISDN Transfer Capability, one of:
        SPEECH
        DIGITAL
        RESTRICTED_DIGITAL
        3K1AUDIO
        DIGITAL_W_TONES
        VIDEO
    txgain - R/W set txgain level on channel drivers that support it.
    videonativeformat - R/O format used natively for video
    trace - R/W whether or not context tracing is enabled, only available
    *if CHANNEL_TRACE is defined*.
    *chan_sip* provides the following additional options:
    peerip - R/O Get the IP address of the peer.
    recvip - R/O Get the source IP address of the peer.
    from - R/O Get the URI from the From: header.
    uri - R/O Get the URI from the Contact: header.
    useragent - R/O Get the useragent.
    peername - R/O Get the name of the peer.
    t38passthrough - R/O '1' if T38 is offered or enabled in this channel,
    otherwise '0'
    rtpqos - R/O Get QOS information about the RTP stream
        This option takes two additional arguments:
        Argument 1:
         'audio'             Get data about the audio stream
         'video'             Get data about the video stream
         'text'              Get data about the text stream
        Argument 2:
         'local_ssrc'        Local SSRC (stream ID)
         'local_lostpackets' Local lost packets
         'local_jitter'      Local calculated jitter
         'local_maxjitter'   Local calculated jitter (maximum)
         'local_minjitter'   Local calculated jitter (minimum)
         'local_normdevjitter'Local calculated jitter (normal
         deviation)
         'local_stdevjitter' Local calculated jitter (standard
         deviation)
         'local_count'       Number of received packets
         'remote_ssrc'       Remote SSRC (stream ID)
         'remote_lostpackets'Remote lost packets
         'remote_jitter'     Remote reported jitter
         'remote_maxjitter'  Remote calculated jitter (maximum)
         'remote_minjitter'  Remote calculated jitter (minimum)
         'remote_normdevjitter'Remote calculated jitter (normal
         deviation)
         'remote_stdevjitter'Remote calculated jitter (standard
         deviation)
         'remote_count'      Number of transmitted packets
         'rtt'               Round trip time
         'maxrtt'            Round trip time (maximum)
         'minrtt'            Round trip time (minimum)
         'normdevrtt'        Round trip time (normal deviation)
         'stdevrtt'          Round trip time (standard deviation)
         'all'               All statistics (in a form suited to
         logging, but not for parsing)
    rtpdest - R/O Get remote RTP destination information.
       This option takes one additional argument:
        Argument 1:
         'audio'             Get audio destination
         'video'             Get video destination
         'text'              Get text destination
       Defaults to 'audio' if unspecified.
    rtpsource - R/O Get source RTP destination information.
       This option takes one additional argument:
        Argument 1:
         'audio'             Get audio destination
         'video'             Get video destination
         'text'              Get text destination
       Defaults to 'audio' if unspecified.
    *chan_iax2* provides the following additional options:
    osptoken - R/O Get the peer's osptoken.
    peerip - R/O Get the peer's ip address.
    peername - R/O Get the peer's username.
    secure_signaling - R/O Get the if the IAX channel is secured.
    secure_media - R/O Get the if the IAX channel is secured.
    *chan_dahdi* provides the following additional options:
    dahdi_channel - R/O DAHDI channel related to this channel.
    dahdi_span - R/O DAHDI span related to this channel.
    dahdi_type - R/O DAHDI channel type, one of:
        analog
        mfc/r2
        pri
        pseudo
        ss7
    keypad_digits - R/O PRI Keypad digits that came in with the SETUP
    message.
    reversecharge - R/O PRI Reverse Charging Indication, one of:
        -1 - None
         1 - Reverse Charging Requested
    no_media_path - R/O PRI Nonzero if the channel has no B channel.
    The channel is either on hold or a call waiting call.
    buffers - W/O Change the channel's buffer policy (for the current
    call only)
    This option takes two arguments:
        Number of buffers,
        Buffer policy being one of:
            'full'
            'immediate'
            'half'
    echocan_mode - W/O Change the configuration of the active echo
    canceller on the channel (if any), for the current call only.
    Possible values are:
        'on'    Normal mode (the echo canceller is actually reinitalized)
        'off'   Disabled
        'fax'   FAX/data mode (NLP disabled if possible, otherwise co
        mpletely disabled)
        'voice' Voice mode (returns from FAX mode, reverting the changes
        that were made)

[See Also]
Not available

Based on answer of arheops this is the working AGI to test a SIP channel status: 根据arheops的答案,这是测试SIP通道状态的有效AGI:

$AGI->exec("EXEC Set(TESTVAR=\${SIPPEER(8880101,status)})");
my $testvar = $AGI->get_variable('TESTVAR'); 
$AGI->verbose("testvar $testvar");

Cli log: CLI日志:

AGI.agi: testvar OK (170 ms)

of course qualify=yes should be set for the peer or globally 当然必须为同行或全局设置qualify=yes

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM