Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Asteriskβ„’: Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΈΠΈ Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 100

Автор Π”ΠΆΠΈΠΌ МСггСлСн

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

ДинамичСски добавляСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡŽ.