Log(ΡΡΠΎΠ²Π΅Π½Ρ| ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅)
ΠΠΎΡΡΠ»Π°Π΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π΄ΠΈΠ°Π»ΠΏΠ»Π°Π½Π° Π² ΡΠ°ΠΉΠ»Ρ ΠΆΡΡΠ½Π°Π»Π°. ΠΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ Π΄Π»Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»Π°Ρ ΠΆΡΡΠ½Π°Π»Π° ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ² Ρ ΡΠ΅Π»ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΈΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠΎΠ²Π΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ:
DEBUG (ΠΎΡΠ»Π°Π΄ΠΊΠ°)
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ. ΠΠ±ΡΡΠ½ΠΎ Π½Π΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅ΠΉΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ.
NOTICE (ΠΈΠ·Π²Π΅ΡΠ΅Π½ΠΈΠ΅)
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. WARNING (ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅)
ΠΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅ΡΡΠ΅Π·Π½ΡΠΌ, Π½ΠΎ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ.
ERROR (ΠΎΡΠΈΠ±ΠΊΠ°)
Π§ΡΠΎ-ΡΠΎ ΠΏΠΎΡΠ»ΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΡΠ°ΠΊ.
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅
NoOp(), Verbose()
LookupBlacklist()
ΠΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΠΏΠΎΠΈΡΠΊ ΠΈΠΌΠ΅Π½ΠΈ/Π½ΠΎΠΌΠ΅ΡΠ° Caller ID Π² ΡΠ΅ΡΠ½ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅
LookupBlacklist([ΠΎΠΏΡΠΈΠΈ])
ΠΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ·Π½Π°Π½ΠΎ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌ ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ GotoIf(${BLACKLIST()}?ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ| Π΄ΠΎΠ±Π°Π²ΠΎΡΠ½ΡΠΉΠ½ΠΎΠΌΠ΅Ρ|ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ)
ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠΎΠΈΡΠΊ Π½ΠΎΠΌΠ΅ΡΠ° Caller ID Π΄Π»Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ Asterisk (Π² ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π΅ blacklist). ΠΡΠ»ΠΈ Π½ΠΎΠΌΠ΅Ρ Caller ID ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ Π² ΡΠ΅ΡΠ½ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅, Asterisk Π·Π°Π΄Π°Π΅Ρ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠ°Π½Π°Π»Π° LOOKUPBL STATUS Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ FOUND (Π½Π°ΠΉΠ΄Π΅Π½). Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ NOTFOUND (Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½).
ΠΡΠ»ΠΈ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ ΠΎΠΏΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠΏΡΠΈΡ j ΠΈ Π½ΠΎΠΌΠ΅Ρ Π½Π°ΠΉΠ΄Π΅Π½ ΠΈ Π΅ΡΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ n + 101 (Π³Π΄Π΅ n - ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ), ΠΊΠ°Π½Π°Π» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ°.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ΅ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· CLI Asterisk, Π²Π²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ database put blacklist ΠΈΠΌΡ / Π½ΠΎΠΌΠ΅Ρ.
; Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ Π½ΠΎΠΌΠ΅ΡΠ° ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° Π² Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠΈΠΊΠ», ; Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π°Π±ΠΈΡΠ°Π΅ΠΌ Π½ΠΎΠΌΠ΅Ρ, Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ; ${JOHN} exten => 123,1,Answer() exten => s,2,LookupBlacklist()
; Π΅ΡΠ»ΠΈ Π½ΠΎΠΌΠ΅Ρ Caller ID ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ Π² ΡΠ΅ΡΠ½ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΌΠ΅ΡΠΊΠ΅ goaway exten => 123,n,GotoIf($["${LOOKUPBLSTATUS}" = "FOUND"]?goaway) ; Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΠΈ Π·Π²ΠΎΠ½ΠΈΠΌ ΠΠΆΠΎΠ½Ρ exten => 123,n,Dial(${JOHN}) exten => 123,n(goaway),Busy(5) exten => 123,n,Hangup()
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅
BLACKLIST
LookupCIDName()
ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠΎΠΈΡΠΊ ΠΈΠΌΠ΅Π½ΠΈ Caller ID Π² AstDB
LookupCIDName()
ΠΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΠΏΡΠΈΠ·Π½Π°Π½ΠΎ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌ ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Set(CALLERID(ΠΈΠΌΡ)=${DB(cidname/${CALLERID(Π½ΠΎΠΌΠ΅Ρ)})}).
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π½ΠΎΠΌΠ΅Ρ Caller ID Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ Caller ID ΠΈΠ· AstDB (ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ cidname). ΠΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ, Π΅ΡΠ»ΠΈ ΠΏΠΎ ΠΊΠ°Π½Π°Π»Ρ Π½Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ Caller ID. ΠΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Ρ Π½Π° Π΄ΠΎΡΡΠ°Π²ΠΊΡ ΠΈΠΌΠ΅Π½ΠΈ Caller ID ΠΈΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΠΌΠ΅Π½ΡΡΡ ΠΈΠΌΠ΅Π½Π° Caller ID Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ².
; ΠΈΡΠ΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Caller ID Π² AstDB ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π΅Π΅ ; Π½Π° ΡΠ΅Π»Π΅ΡΠΎΠ½ ΠΠΆΠ΅ΠΉΠ½ exten => 123,1,Answer()
exten => 123,2,LookupCIDName() exten => 123,3,Dial(SIP/Jane)
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅
DB
Macro()
ΠΡΠ·ΡΠ²Π°Π΅Ρ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΠΊΡΠΎΡ Π΄ΠΈΠ°Π»ΠΏΠ»Π°Π½Π°
Macro( ΠΈΠΌΡΠΌΠ°ΠΊΡΠΎΡΠ°, arg1, arg2...)
ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΌΠ°ΠΊΡΠΎΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ macro- ΠΈΠΌΡΠΌΠ°ΠΊΡΠΎΡΠ°, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ Π² Π΄ΠΎΠ±Π°Π²ΠΎΡΠ½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ s ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π³. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΡΠ΅ ΡΠ°Π³ΠΈ Π±ΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ. ΠΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ Π΄ΠΎΠ±Π°Π²ΠΎΡΠ½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ, ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Ρ ΡΠ°Π½ΡΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ${MACRO_EXTEN}, ${MACRO_CONTEXT} ΠΈ ${MACRO_PRIORITY} ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ arg1, arg2 ΠΈ Ρ. Π΄. ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ${ARG1}, ${ARG2} ΠΈ Ρ. Π΄.
Macro() Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ Π°Π²Π°ΡΠΈΠΉΠ½ΠΎ, Π΅ΡΠ»ΠΈ Π½Π° Π»ΡΠ±ΠΎΠΌ ΠΈΠ· ΡΠ°Π³ΠΎΠ² ΠΌΠ°ΠΊΡΠΎΡΠ° Π²ΠΎΠ·Π½ΠΈΠΊ ΡΠ±ΠΎΠΉ ΠΈΠ»ΠΈ Π²ΡΡΠ²Π»Π΅Π½ ΡΠ°Π·ΡΡΠ² ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΏΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΡΠ°Π±ΠΎΡΡ ΠΌΠ°ΠΊΡΠΎΡΠ° Π·Π°Π΄Π°Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ${MACRO_OFFSET}, ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ° MACRO_OFFSET + n + 1, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ²ΠΎΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΠΈΠ»ΠΈ Ρ n + 1 Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. (Π ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ n ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ.)
ΠΡΠ»ΠΈ Π²Π½ΡΡΡΠΈ ΠΌΠ°ΠΊΡΠΎΡΠ° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Goto() Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅Π³ΠΎΡΡ Π² Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΌΠ°ΠΊΡΠΎΡΠ°, ΠΌΠ°ΠΊΡΠΎΡ Π±ΡΠ΄Π΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½, Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ Π² ΡΠΎΡΠΊΡ, ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ Goto().
; ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΌΠ°ΠΊΡΠΎΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ΅ΡΠ°
; ΠΎΡ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
[macro-countdown]
exten => s,1,Set(COUNT=${ARG1})
exten => s,2,While($[ ${COUNT} > 0])
exten => s,3,SayNumber(${COUNT})
exten => s,4,Set(COUNT=$[ ${COUNT} - 1 ])
exten => s,5,EndWhile()
; Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π½Π°Ρ ΠΌΠ°ΠΊΡΠΎΡ Ρ Π΄Π²ΡΠΌΡ ΡΠ°Π·Π½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ [example]
exten => 123,1,Macro(countdown,10) exten => 124,1,Macro(countdown,5)
ΠΠ° Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ΅ΠΊΡΡΠΈΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠΌ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ°Π·ΡΡΠ²Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠΈΡΠΊ Π΄ΠΎΠ±Π°Π²ΠΎΡΠ½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅ΡΠ° h Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΌΠ°ΠΊΡΠΎΡΠ΅, Π° Π½Π΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ Π±ΡΠ» Π²ΡΠ·Π²Π°Π½. ΠΠΎΡΡΠΎΠΌΡ Π² ΠΌΠ°ΠΊΡΠΎΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Π½Ρ Π²ΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π΄ΠΎΠ±Π°Π²ΠΎΡΠ½ΡΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° (Π² AEL ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ catch).
ΠΠ·-Π·Π° ΡΠΏΠΎΡΠΎΠ±Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Macro() (ΠΎΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ΡΡ Π² Π½Π΅ΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΡ ΡΠ΅ΡΠ΅Π· Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ) ΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΅ΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΌΠ°ΠΊΡΠΎΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΡΠ΅ΠΌΡΡ ΡΡΠΎΠ²Π½ΡΠΌΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΠΈ (ΠΌΠ°ΠΊΡΠΎΡ, Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΠΌΠ°ΠΊΡΠΎΡ, Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΠΌΠ°ΠΊΡΠΎΡ ΠΈ Ρ. Π΄.). ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ ΡΡΠ΅ΠΊ, Π² Π³Π»ΡΠ±ΠΎΠΊΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ ΠΌΠ°ΠΊΡΠΎΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠ±ΠΎΡ Π² ΡΠ°Π±ΠΎΡΠ΅ Asterisk ΡΠ°Π½ΡΡΠ΅ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΠΈ.
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅
MacroExit(), Goto(), Gosub(), Π³Π»Π°Π²Ρ 6
MacroExclusive()
ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΌΠ°ΠΊΡΠΎΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π°
MacroExclusive(ΠΈΠΌΡΠΌΠ°ΠΊΡΠΎΡΠ°[,Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ])
ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΌΠ°ΠΊΡΠΎΡ, Π³Π°ΡΠ°Π½ΡΠΈΡΡΡ, ΡΡΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΊΠ°Π½Π°Π»ΠΎΠΌ. ΠΡΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ°Π½Π°Π» ΡΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ, MacroExclusive() ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΡΠΎΡ ΠΊΠ°Π½Π°Π» Π½Π΅ Π²ΡΠΉΠ΄Π΅Ρ ΠΈΠ· ΠΌΠ°ΠΊΡΠΎΡΠ°.
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅
Macro()
MacroExit()
Π―Π²Π½ΡΠΉ Π²ΡΡ ΠΎΠ΄ ΠΈΠ· ΠΌΠ°ΠΊΡΠΎΡΠ°
MacroExit()
ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ²Π½ΡΠΉ Π²ΡΡ ΠΎΠ΄ ΠΈΠ· ΠΌΠ°ΠΊΡΠΎΡΠ°. ΠΠ±ΡΡΠ½ΠΎ Macro() Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² Π²ΡΠ΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΡ. MacroExit() ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°Π²Π΅ΡΡΠΈΡΡ ΠΌΠ°ΠΊΡΠΎΡ ΡΠ°Π½ΡΡΠ΅.
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅
Macro()
MacroIf()
ΠΡΠ·ΡΠ²Π°Π΅Ρ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΠΊΡΠΎΡ ΠΏΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ
MacroIf(ΡΡΠ»ΠΎΠ²ΠΈΠ΅?ΠΌΠ°ΠΊΡΠΎΡΠ΅ΡΠ»ΠΈΠΈΡΡΠΈΠ½Π½ΠΎ, Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ:ΠΌΠ°ΠΊΡΠΎΡΠ΅ΡΠ»ΠΈΠ»ΠΎΠΆΠ½ΠΎ, Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ)
ΠΡΡΠΈΡΠ»ΡΠ΅Ρ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΌΠ°ΠΊΡΠΎΡΠ΅ΡΠ»ΠΈΠΈΡΡΠΈΠ½Π½ΠΎ ΠΈΠ»ΠΈ ΠΌΠ°ΠΊΡΠΎΡΠ΅ΡΠ»ΠΈΠ»ΠΎΠΆΠ½ΠΎ. ΠΠΎ Π²ΡΠ΅ΠΌ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΌ, ΠΊΡΠΎΠΌΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΡ, MacroIf() Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎ Macro().
; ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΌΠ°ΠΊΡΠΎΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ΅ΡΠ° ; ΠΎΡ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ [macro-countdown]
exten => s,1,Set(COUNT=${ARG1})
exten => s,2,While($[ ${COUNT} > 0])
exten => s,3,SayNumber(${COUNT})
exten => s,4,Set(COUNT=$[ ${COUNT} - 1])
exten => s,5,EndWhile()
; ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΌΠ°ΠΊΡΠΎΡ Π΄Π»Ρ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΡΡΠ΅ΡΠ°
; ΠΎΡ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
[macro-countup]
exten => s,1,Set(COUNT=1)
exten => s,2,While($[ ${COUNT} < ${ARG1}])
exten => s,3,SayNumber(${COUNT})
exten => s,4,Set(COUNT=$[ ${COUNT} + 1])
exten => s,5,EndWhile()
; Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π½Π°Ρ ΠΌΠ°ΠΊΡΠΎΡ Ρ Π΄Π²ΡΠΌΡ ΡΠ°Π·Π½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ [example]
exten => 123,1,MacroIf($[ ${foo} < 5 ]?countup,${foo}:countdown,${foo})
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅
GotoIf(), GosubIf(), IF, Π³Π»Π°Π²Π° 6
MailboxExists()
ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ ΠΏΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ,
Π΅ΡΠ»ΠΈ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΡΡΠΈΠΊ Π³ΠΎΠ»ΠΎΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ
MailboxExists(ΠΏΠΎΡΡΠΎΠ²ΡΠΉΡΡΠΈΠΊ[@ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ[, ΠΎΠΏΡΠΈΠΈ]])
ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π»ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Π³ΠΎΠ»ΠΎΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΡΡ Asterisk ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΡΡΠΈΠΊ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΏΠΎΡΡΠΎΠ²ΡΠΉΡΡΠΈΠΊ. ΠΡΠ»ΠΈ ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΡΡΠΈΠΊ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π³ΠΎΠ»ΠΎΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΡΡ default, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π΄Π»Ρ Π³ΠΎΠ»ΠΎΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΡΡ.
ΠΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΊΠ°Π½Π°Π»Π° VMBOXEXISTSSTATUS. ΠΡΠ»ΠΈ ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΡΡΠΈΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Π΅ΠΉ Π±ΡΠ΄Π΅Ρ Π·Π°Π΄Π°Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ SUCCESS (ΡΡΠΏΠ΅Ρ ). Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½Π° ΠΏΠΎΠ»ΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ FAILED (Π½Π΅ΡΠ΄Π°ΡΠ°). ΠΡΠ»ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΎΠΏΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΎΠΏΡΠΈΡ j, Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠΈΠΊΠ°, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΏΠΎΡΡΠΎΠ²ΡΠΉΡΡΠΈΠΊ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅Ρ ΠΊ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΡ n + 101 (Π³Π΄Π΅ n - ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ).
exten => 123,1,Answer()
exten => 123,n,Set( [email protected])
exten => 123,n,MailboxExists(${MYMAILBOX})
exten => 123,n,GotoIf($["${VMBOXEXISTSSTATUS}" = "SUCCESS"]?exists)
exten => 123,n,Playback(im-sorry)
exten => 123,n,Hangup()
exten => 123,n(exists),Voicemail(u123)
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅
HasVoicemail(), HasNewVoicemail()MeetMe()
ΠΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π·Π²ΠΎΠ½ΡΡΠ΅Π³ΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡ MeetMe
MeetMe([Π½ΠΎΠΌΠ΅ΡΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ[, ΠΎΠΏΡΠΈΠΈ[, ΠΠΠ]]])
ΠΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π·Π²ΠΎΠ½ΡΡΠ΅Π³ΠΎ Π² ΡΠ΅Π°Π½Ρ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½Ρ-ΡΠ²ΡΠ·ΠΈ, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ Π½ΠΎΠΌΠ΅ΡΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ. ΠΡΠ»ΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ ΠΎΠΏΡΡΠ΅Π½, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π΅Π³ΠΎ Π²Π²Π΅ΡΡΠΈ.
ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΠΠ, Π·Π²ΠΎΠ½ΡΡΠΈΠΉ Π΄Π»Ρ Π²Ρ ΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π²Π΅ΡΡΠΈ ΠΠΠ-ΠΊΠΎΠ΄.
Π‘ΡΡΠΎΠΊΠ° ΠΎΠΏΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½ΡΠ»Ρ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠΏΠΈΡΠΊΠ°:
a
ΠΠ°Π΄Π°Π΅ΡΡΡ ΡΠ΅ΠΆΠΈΠΌ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
A
ΠΠ°Π΄Π°Π΅ΡΡΡ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ.
b
ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ AGI-ΡΡΠ΅Π½Π°ΡΠΈΠΉ, Π·Π°Π΄Π°Π½Π½ΡΠΉ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ${MEETME_AGI_ BACKGROUND}; ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΎ conf-background.agi. (ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΡΡΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ ^-Zap-ΠΊΠ°Π½Π°Π»ΠΎΠ² Π² ΡΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ.)
c
ΠΡΠΈ Π²Ρ ΠΎΠ΄Π΅ Π² ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π°Π½ΠΎΠ½ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
d
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡ.