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

Version 1.2, November 2002

Neue Version verfügbar

Sie betrachten gerade die alte Version des Buches (Version 1.0). Wir empfehlen Ihnen für Asterisk 1.4 und 1.6 die neue Version des Buches.

Asterisk-Tag 2008

Lernen Sie Mark Spencer (den Erfinder von Asterisk) kennen! Viele Vorträge, Case-Studies und Workshops rund um das Thema VoIP. Asterisk-Tag.org

Das gedruckte Buch