User Tools

Site Tools


wiki:voip:asterisk:extensions_conf

extensions.conf

  • Tvoří dialplán Asterisku

Kontexty

  • Dialplán lze dělit na kontexty - oddělené “routovací pravidla” hovorů
  • tel.čísla v kontextu nemohou využít funkcí (směrování) jiného kontextu není-li to vysloveně nakonfigurováno.
  • Pomocí kontextů lze tedy definovat oprávnění volání (např.interní,externí,mezinárodní) či definovat rozdílné IVR pro různé skupiny telefonů apod.
  • kontexty jsou definovány názvem (max.79 znaků) v hranatých závorkách - nesmí se jmenovat global,general či default
  • speciální kontexty: [general] a [global]
  • [general] - zde bývají speciální nastavení týkajcí se dialplánu, která však v drtivé většině případů necháváme defaultní
  • [globals] -

Extensions

  • exten ⇒ name, priority, application()
  • např. exten ⇒ 123,1,Answer()

Priority

Číslované priority:

exten => 123,1,Answer()
exten => 123,2,do something
exten => 123,3,do something else
exten => 123,4,do one last thing
exten => 123,5,Hangup()

Nečíslované priority:

exten => 123,1,Answer()
exten => 123,n,do something
exten => 123,n,do something else
exten => 123,n,do one last thing
exten => 123,n,Hangup()

'same =>' operator

exten => 123,1,Answer()
   same => n,do something
   same => n,do something else
   same => n,do one last thing
   same => n,Hangup()

Priority labels

  • pomocí labels je řádek v dialplánu adresovatelný, tzn. odjinud z dialplánu mohu přeskočit GoSub() na konkrétní řádek buď na základě č.priority (kterou v případě použití nečíslovaných priorit neznám) nebo na základě labels.
exten => 123,n(label),application()

Applications

  • každá aplikace provádí nějakou činnost - přehrání hudby, přijetí volby, select do DB, vytočení kanálu, zavěšení hovoru apod.

Progress()

  • Zasílá protistraně progress informace ještě před vyzvednutím hovoru, může vyřešit sig.problémy s některými operátory

Answer()

  • Přijme hovor
  • Nemá žádné argumenty

Hangup()

  • Zavěsí hovor, je vhodné jej použít vždy na konci kontextu, aby se účastníkovi zamezilo v nějaké další nepředvídatelné činnosti.
  • Bez argumentů, lze ale použít ISDN cause code např. Hangup(16)

Playback()

  • Přehraje zadaný zvukový soubor
  • Ignoruje event.zadané volby uživatelem
  • Zdroj souborů /etc/asterisk/sounds/
  • Synatxe Playback(filename), kde filename se píše bez přípony a odkazuje na soubor filename.wav
  • Použití relativní cesty (k adr./etc/asterisk/sounds): Playback(subdir/filename)
  • Lze také použít absolutní cestu: Playback(/home/lukas/filename)
  • Je-li v adresáři více souborů se stejným názvem a rozdílnou příponou, asterisk si vybere ten nejvhodnější dle náročnosti na CPU (náročnost formátů na CPU lze zjistit *CLI> show translation)
  • Playback(digits/1) - řekne zadanou číslovku (jedna)
  • Playback(silence/1&auth-thankyou) - další příklad 1s ticho pak thankyou

Background(), WaitExten()

  • Přijímají stisknutá čísla od volajícího
  • Background navíc při čekání na volbu přehrává zadaný zvukový soubor, přijme-li nějaké číslo či čísla, přeruší přehrávání zvuku a přeskočí na příslušnou extenzi
  • Takto se dají dělat hlasová menu
  • Vhodné je kombinovat obě aplikace, čímž zajistíme, že uživatel může zadat volbu i po přehrání celého zvukového souboru
[TestMenu]
exten => start,1,Answer()
   same => n,Background(main-menu)   ;přehraje soubor main-menu, přičemž očekává volbu
   same => n,WaitExten(5)            ;čeká na volbu dalších 5s  

SayDigits()

  • přeříká zadané číslo

Goto()

  • same ⇒ Goto(context,extension,priority)
  • má tři argumenty, ale všechny nejsou povinné
  • Počet zadaných argumentů:
    • 1 - (priority) - asterisk jej vyhodnotí jako prioritu v této extenzi
    • 2 - (extension,priority)
    • 3 - (context,extension,priority)
[TestMenu]
exten => start,1,Answer()
   same => n,Background(main-menu)
   same => n,WaitExten(5)

exten => 1,1,Playback(digits/1)
   same => n,Goto(TestMenu,start,1)

exten => 2,1,Playback(digits/2)
   same => n,Goto(TestMenu,start,1)

Dial()

  • Dial(destination,timeout,option,uri)
  • Hodnoty lze vynechávat - např. Dial(destination,,option,uri) nebo Dial(destination)
  • Synatxe destination při volání extenze na vzdáleném systému: Dial(technology/user[:password]@remote_host[:port][/remote_extension])
Destination
;vyzvoneni jednoho kanalu
exten => 104,1,Dial(SIP/0004F2001122)

; vyzvoneni nekolika kanalu soucasne (spojka &)
exten => 105,1,Dial(DAHDI/1&SIP/0004F2001122&IAX2/Softphone)

; vyzvoneni extenze na vzdalenem systemu
exten => 500,1,Dial(IAX2/guest@misery.digium.com/s)
Timeout
exten => 201,1,Dial(DAHDI/1,10)          ;zkousi zvonit 10s
   same => n,Playback(vm-nobodyavail)
   same => n,Hangup()
Option
  • písmený symbol něajké spec.akce
  • např. m = musiconhold místo ringback tónu volajícímu do sluchátka
exten => 201,1,Dial(DAHDI/1,10,m)
   same => n,Playback(vm-nobodyavail)
   same => n,Hangup()
URI
  • sloužík zaslání URI pokud cílová stanice podporuje jeho zobrazení, příliš se nepoužívá.

Invalid Entries and Timeouts

  • Invalid extension i - extenze, která není platná v daném kontextu.
  • Timeout t - slouží pro definování akce po vypršení timeoutu, např. není li zadána volba během WaitExten()
[TestMenu]
exten => start,1,Answer()
   same => n,Background(main-menu)
   same => n,WaitExten(5)

exten => 1,1,Playback(digits/1)
   same => n,Goto(TestMenu,start,1)

exten => 2,1,Playback(digits/2)
   same => n,Goto(TestMenu,start,1)

exten => i,1,Playback(pbx-invalid)
   same => n,Goto(TestMenu,start,1)

exten => t,1,Playback(vm-goodbye)
   same => n,Hangup(

Proměnné

Global variables

  • Platí v celém dialplánu
[globals]
LEIF=SIP/0000FFFF0001
JIM=SIP/0000FFFF0002
RUSSELL=SIP/0000FFFF0003

[LocalSets]
exten => 100,1,Dial(${LEIF})
exten => leif,1,Dial(${LEIF})

exten => 101,1,Dial(${JIM})
exten => jim,1,Dial(${JIM})

exten => 102,1,Dial(${RUSSELL})
exten => russell,1,Dial(${RUSSELL

Channel variables

  • platí vždy jen pro jeden konkrétní hovor
exten => 202,1,Set(MagicNumber=42)
   same => n,SayNumber(${MagicNumber})

Environment variables

  • Umožňují přístup k proměnným operačního systému
  • ${ENV(var)} - kde var je název UNIXové proměnné

Pattern Matching

  • pattern/vzorec začíná vždy podtržítkem _
  • X - jedno číslo 0-9
  • Z - jedno číslo 1-9
  • N - jedno číslo 2-9
  • [125-7] - vyjmenovaná čísla a rozsahy, zde např čísla 1,2,5,6,7
  • . (tečka) - jedno a více čísel (znaků)
  • ! (vykřičník) - žádné a více čísel či znaků
  • _X. - vhodný způsob pro použití pokud chci všechna čísla

Proměnná ${EXTEN}

  • obsahuje právě vytočené číslo
exten => _XXX,1,Answer()
   same => n,SayDigits(${EXTEN})

Úpravy proměnné:

  • ${EXTEN:x:y} - kde x=startovací pozice, y=počet čísel která se mají vrátit
  • Příklady pro číslo 0326706166
    • ${EXTEN:1:3} - vrátí 326
    • ${EXTEN:1:9} - vrátí 326706166
    • ${EXTEN:-9:9} - začne 9 čísel od konce a vrátí 9 čísel - tedy 326706166
    • ${EXTEN:2:-4} - začne 2 č.od začátku, vrátí zbytek bez posledních 4č. - tedy 2670
    • ${EXTEN:-6:-4} - začne 6č. od konce a vrátí zbytek bez 4 posledních čísel - tedy 70
    • ${EXTEN:1} - začne od 1č. a vrátí zbytek bez ohledu na délku - tedy 326706166

Includes

  • umožňuje includovat kontexty do sebe
  • include ⇒ context
[interni]
...

[externi]
...

[mezinarodni]
...

[tisnova_volani]
...

[zamestnanci]
include => interni
include => externi
include => tisnova_volani

[manageri]
include => interni
include => externi
include => mezinarodni
include => tisnova_volani

Aplikace změn

*CLI> dialplan reload

nebo:

$ sudo /usr/sbin/asterisk -rx “dialplan reload”
wiki/voip/asterisk/extensions_conf.txt · Last modified: 2014/12/26 18:31 (external edit)