Funktionen im Dialplan

Funktionen werden in Asterisk mit $\{FUNCTIONNAME(argumente)} aufgerufen — sowohl zum Lesen (im Ausdruck) als auch zum Schreiben (als Ziel einer Set()-Zuweisung). Beispiel:

; Lesen:
exten => 123,1,NoOp(${CALLERID(num)})

; Schreiben:
exten => 123,1,Set(CALLERID(name)=Max Meier)

Die Liste aller verfügbaren Funktionen im CLI:

debian*CLI> core show functions
debian*CLI> core show function CALLERID

Frühere Auflagen dieses Buches hatten hier einen Anhang mit über 100 Einzelseiten, je eine pro Funktion. Für die Evergreen-Ausgabe wurde auch dieser Anhang gekürzt: Die vollständige, jeweils aktuelle Referenz steht in der offiziellen Doku unter https://docs.asterisk.org. Wir listen hier die am häufigsten genutzten Funktionen als Orientierungshilfe.

Anrufer-/Channel-Informationen

CALLERID() (inklusive CALLERID(pres) für die Presentation), CONNECTEDLINE(), CHANNEL(), CHANNELS(), CDR(), CDR_PROP(), HINT(), DEVICE_STATE(), EXTENSION_STATE(), DIALPLAN_EXISTS(), MASTER_CHANNEL().

Strings / Formatierung

LEN(), REGEX(), REPLACE(), STRREPLACE(), TOLOWER(), TOUPPER(), CUT(), FIELDQTY(), FILTER(), QUOTE(), SPRINTF(), MD5(), SHA1(), BASE64_ENCODE(), BASE64_DECODE(), URIDECODE(), URIENCODE(), KEYPADHASH(), PASSTHRU().

Rechnen, Zeit, Zufall

MATH(), INC(), DEC(), IF(), IFTIME(), ISNULL(), EXISTS(), RAND(), STRFTIME(), STRPTIME(), TIMEOUT(), LOCK(), TRYLOCK(), UNLOCK().

Variablen-Management

GLOBAL(), LOCAL(), LOCAL_PEEK(), HASH(), HASHKEYS(), ARRAY(), SHARED(), IMPORT(), SET().

AstDB und Realtime

DB(), DB_EXISTS(), DB_DELETE(), DB_KEYS(), REALTIME(), REALTIME_FIELD(), REALTIME_HASH(), REALTIME_STORE(), REALTIME_DESTROY(), SQL_ESC().

Dateien und Shell

FILE(), FILE_COUNT_LINE(), STAT(), SHELL(), ENV(), SYSINFO().

PJSIP-spezifisch

PJSIP_HEADER(), PJSIP_HEADERS(), PJSIP_RESPONSE_HEADERS(), PJSIP_DIAL_CONTACTS(), PJSIP_PARSE_URI(), PJSIP_SEND_SESSION_REFRESH(), PJSIP_MEDIA_OFFER(), PJSIP_DTMF_MODE().

Queue- und ConfBridge-Informationen

QUEUE_MEMBER(), QUEUE_MEMBER_COUNT(), QUEUE_MEMBER_LIST(), QUEUE_MEMBER_PENALTY(), QUEUE_VARIABLES(), QUEUE_WAITING_COUNT(), QUEUE_GET_CHANNEL(), CONFBRIDGE(), CONFBRIDGE_INFO(), CONFBRIDGE_CHANNELS().

Voicemail

VM_INFO(), VMCOUNT().

MAILBOX_EXISTS() ist ab Asterisk 22 entfernt. Benutzen Sie stattdessen $\{VM_INFO(<mailbox>,exists)} — das liefert 1, wenn die Mailbox in voicemail.conf existiert, sonst 0.

Entfernt / deprecated

CALLERPRES() ist entfernt; die gleiche Information erreichen Sie über CALLERID(pres). JABBER_STATUS(), MEETME_INFO() (→ CONFBRIDGE_INFO()), SIP_HEADER() / SIPPEER() / SIPCHANINFO() (chan_sip — für PJSIP die PJSIP_*-Funktionen), ODBC_ANTIGF(), AGC(), DENOISE() und viele der alten IAXPEER-Formen sind entweder ganz entfernt oder nur noch in Nischen-Installationen relevant.

Wenn Sie eine Funktion in einem Dialplan sehen, die Sie nicht kennen: core show function <name> gibt direkt auf dem Server die aktuelle Beschreibung aus. Schneller und zuverlässiger als jedes gedruckte Nachschlagewerk.