我正在为1.8个星号编写星号agi脚本。在拨号之前,我想检查一下所需的SIP通道是否可用。但是我找不到一种方法来检查SIP通道是否在线使用Asterisk::AGI
尝试$AGI->channel_status('SIP/1001');
但是它总是返回-1
我想使用AMI,但它不能从AGI脚本工作(仅在调试asterisk -vvvvc
)
您可以获得函数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
根据arheops的回答,这是测试SIP通道状态的工作AGI:
$AGI->exec("EXEC Set(TESTVAR=${SIPPEER(8880101,status)})");
my $testvar = $AGI->get_variable('TESTVAR');
$AGI->verbose("testvar $testvar");
Cli日志:
AGI.agi: testvar OK (170 ms)
当然qualify=yes
应该设置为peer或全局