ChanIsAvail()

Ermittelt, ob ein bestimmter Channel momentan verfügbar ist.

ChanIsAvail(Technology1/Resource1[&Technology2/Resource2...][,Optionen])

Prüft, ob irgendeiner der angeforderten Kanäle verfügbar ist (in der angegebenen Reihenfolge). Liefert 0 zurück bei Erfolg oder -1, falls kein Kanal verfügbar ist.

Ist die Option s (für state) angegeben, wird Asterisk den Channel als nicht verfügbar betrachten, wenn er in Gebrauch ist, sogar falls er einen weiteren anderen Anruf aufnehmen kann. Mit der Option j wird, falls der Channel nicht verfügbar ist, zur Priorität n+101 gesprungen.

[Anmerkung]

Dass ein Kanal verfügbar ist, bedeutet aber nicht automatisch, dass er auch frei ist oder dass das Endgerät einen Anruf akzeptieren würde. Das erfährt man durch ein Dial() zum Kanal.

ChanIsAvail() setzt die folgenden Channelvariablen:

${AVAILCHAN}
Der Name des verfügbaren Channels, inklusive der Session-Nummer des Anrufs.
${AVAILORIGCHAN}
Der kanonische Channelname, der benutzt wurde um den Channel zu erstellen, d.h. der Channelname ohne eine Session-Nummer.
${AVAILSTATUS}

Der Status-Code des Channels:

AST_DEVICE_UNKNOWN (0)
Unbekannt. Der Channel ist gültig, aber in unbekanntem Zustand.
AST_DEVICE_NOT_INUSE (1)
Channel wird nicht verwendet.
AST_DEVICE_IN_USE (2)
Der Channel ist in Gebrauch.
AST_DEVICE_BUSY (3)
Besetzt.
AST_DEVICE_INVALID (4)
Ungültig. Unbekannter Channel.
AST_DEVICE_UNAVAILABLE (5)
Nicht verfügbar. Channel ist nicht registriert.
AST_DEVICE_RINGING (6)
Channel klingelt.
[Anmerkung]

Diese Anwendung arbeitet auf MGCP-Kanälen nicht ordnungsgemäß.

; Zap/1 und Zap/2 auf Verfügbarkeit prüfen:
exten => 123,1,ChanIsAvail(Zap/1&Zap/2,j)
; hier ausnahmsweise mit Priority jumping, da wir, falls kein Kanal
; frei ist, noch eine Ansage machen wollen

; mindestens einer der Kanäle verfügbar, auf diesem wählen:
exten => 123,2,NoOp(${AVAILORIGCHAN} ist verfuegbar)
exten => 123,3,Dial(${AVAILORIGCHAN}/123456)

; wenn wir bei Prio. 102 landen, ist weder Zap/1 noch Zap/2 verfügbar
exten => 123,102,Playback(alle-kanaele-belegt)
[Anmerkung]

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ChanIsAvail' =- 

[Synopsis]
Check channel availability

[Description]
  ChanIsAvail(Technology/resource[&Technology2/resource2...][|options]):
 
This application will check to see if any of the specified channels are
available. The following variables will be set by this application:
  ${AVAILCHAN}     - the name of the available channel, if one exists
  ${AVAILORIGCHAN} - the canonical channel name that was used to create 
the channel
  ${AVAILSTATUS}   - the status code for the available channel
  Options:
    s - Consider the channel unavailable if the channel is in use at all
    j - Support jumping to priority n+101 if no channel is available

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine -