рд╕реБрдкрд░рд╕реНрдЯрд╛рд░ рдФрд░ рдЙрдирдХреЗ рд╕рдЪрд┐рд╡реЛрдВ рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдореБрдЭреЗ BLF (рд╡реНрдпрд╕реНрдд рд▓реИрдВрдк рдлреАрд▓реНрдб) рдХреБрдВрдЬрд┐рдпреЛрдВ рдкрд░ DND рдореЛрдб ("рдбреВ рдиреЙрдЯ рдбрд┐рд╕реНрдЯрд░реНрдм" - "рдбреВ рдиреЙрдЯ рдбрд┐рд╕реНрдЯрд░реНрдм") рдХреЗ рд╕рдВрдХреЗрдд рд╕реЗ рдЪрдХрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред Habr├й рдкрд░ рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд
рдкреЛрд╕реНрдЯ рдереА (рдФрд░ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реАрдХреЗ рд╕реЗ рдПрдХ рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ рднреА)ред
"рдбреАрдПрдирдбреАрдбреА рдПрдХ рдорд╛рдВрдЧ рдХреА рдЧрдИ рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдорддреМрд░ рдкрд░ рдореЛрдб рдХреЛ рдлреЛрди рдкрд░ рд╣реА рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрд╕реНрдЯрд░рд┐рд╕реНрдХ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдЪрд╛рд▓реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдлреЛрди рдХреЛ рдЪрд╛рд▓реВ рдХрд░ рджреЗрдЧрд╛, рдпрд╣ рд╕реЛрдЪрдХрд░ рдХрд┐ рдпрд╣ рдЬрдЧрд╣ рдореЗрдВ рд╣реИ рдФрд░ рдХреЙрд▓ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рд╣рдо рд╕реНрд╡рдпрдВ Asterisk рдкрд░ DnD рдореЛрдб рдХреЛ рдХреИрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рддрд╛рдХрд┐ DnD рд╕рдХреНрд░рд┐рдп рд╣реЛрдиреЗ рдкрд░ рдкрд╛рд╡рд░ рдмрдЯрди рд▓рд╛рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ? тАЭ┬й
xtekkomрд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдХреЗрд╡рд▓ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ рдФрд░ BLF рдкрд░ DND рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдерд╛ред
1. рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рдЬрдЯрд┐рд▓ рд▓рдЧрддреА рд╣реИред рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд┐рдирд╛ рд╕реНрдХреВрд▓ рдореЗрдВ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдбрд░рд╛рд╡рдирд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдЧреЗ рдЕрдиреБрд╕рдВрдзрд╛рди рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдХрдо рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
2. рд▓рд╛рд▓ рдмрддреНрддреА рдХреЛ рдирд╣реАрдВ рдЭрдкрдХрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдлреЛрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд╣ рдлреЛрди рдирд╣реАрдВ рдЙрдард╛рддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдХреЙрд▓ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?), рдФрд░ рд▓рдЧрд╛рддрд╛рд░ (рдЧреНрд░рд╛рд╣рдХ рд╡реНрдпрд╕реНрдд рд╣реИ)ред
3. рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдореЗрдВ, DND рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛
true
ред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рд╡рд┐рдзрд┐ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рдереАред
4. рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдкрд░ DND рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ред рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдЕрдЧрд░ рдлреЛрди рдореЗрдВ рдбреАрдПрдирдбреА рдХреЛ рд╣рдЯрд╛рдиреЗ / рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рдбрд╛рдпрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдореЗрд░реЗ рдХрд┐рддрд╛рдлреЛрди рдореЗрдВ рдРрд╕реА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдбреАрдПрдирдбреА рдмрдЯрди рд╕реНрд╡рдпрдВ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ - рдпрд╣ рдлреЛрди рдХреЗ рдкреАрдЫреЗ рдЯреЙрдЧрд▓ рд╕реНрд╡рд┐рдЪ рд╣реИред рдмреЗрд╢рдХ, рдорд▓реНрдЯреАрдлрд╝рдВрдХреНрд╢рди рдХреБрдВрдЬреА рдкрд░ DND (рдбрд╛рдпрд▓ рдХрд░рдирд╛, рдХрд╣рдирд╛ * 76) рд▓рдЯрдХрд╛ рд╣реБрдЖ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЖрд╕рдиреНрди рдПрдордПрдл рдХреБрдВрдЬреА рдкрд░ рдЖрдкрдХреЗ рдирдВрдмрд░ рдкрд░ рд╕рдВрдХреЗрдд рджреЗрдВред рд▓реЗрдХрд┐рди рдпрд╣ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдЕрдЧрд░ рд╕рднреА DND рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ (рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдФрд░ рд╕рдВрдХреЗрдд рджреЛрдиреЛрдВ) рдПрдХ рдХреБрдВрдЬреА рдкрд░ рд╣реИред рдореИрдВ рдЗрд╕ рдирддреАрдЬреЗ рдкрд░ рдкрд╣реБрдВрдЪрд╛ рдХрд┐ DND рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдЕрдкрдирд╛ рдирдВрдмрд░ рдбрд╛рдпрд▓ рдХрд░реЗрдЧрд╛, рдлрд┐рд░ рдордирд╛рдпрд╛ рдФрд░ рдбрд╛рдпрд▓ рдХрд┐рдП рдЧрдП рдирдВрдмрд░ рдореИрдЪ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдбреЛрдкрд┐рдВрдЧ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рддрдХрдиреАрдХ рдХрд╛рдлреА рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рд▓реИрд╕ рдХрд░реЗрдВред
рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Asterisk 1.8.18.0 рд╣реИ, рдЧреНрд░рд╛рд╣рдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИрдВ рдФрд░ BLF рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рдХрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рд░реВрдк рдореЗрдВ рд╣рдо рд╕реЗрдЯ * 76 рдХреЗ рд▓рд┐рдП DND рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрджрд░реНрдн рдХреЛ рд╣рдорд╛рд░реЗ рдбрд╛рдпрд▓рдкреИрди рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
[dnd-on-off] exten => *76,1,Answer ; DND? exten => *76,n,GotoIf($["${DB(DND/${CALLERID(number)})}" = ""]?activate:deactivate) ; DND тАФ exten => *76,n(activate),Set(STATE=BUSY) ; "" ( hint) exten => *76,n,Set(DEVICE_STATE(Custom:DND${CALLERID(number)})=${STATE}) ; DND exten => *76,n,Set(DB(DND/${CALLERID(number)})=1) exten => *76,n,Hangup ;;; DND тАФ exten => *76,n(deactivate),Set(STATE=NOT_INUSE) ; "" ( hint) exten => *76,n,Set(DEVICE_STATE(Custom:DND${CALLERID(number)})=${STATE}) ; DND exten => *76,n,Set(DB(DND/${CALLERID(number)})=) exten => *76,n,Hangup
рдЕрдм рдПрдХ рд╕рдВрджрд░реНрдн рдЬреЛрдбрд╝реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдбреАрдПрдирдбреА рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛, рдЗрд╕рдХреА рд╕рдВрдЦреНрдпрд╛ рдбрд╛рдпрд▓ рдХрд░рдХреЗред
[dnd-on-off-2] ; - ? exten => _7XXX,1,GotoIf($["${CALLERID(number)}" = "${EXTEN}"]?godnd:gonext) ; - DND exten => _7XXX,n(godnd),Goto(dnd-on-off,*76,1) ; - ( 10) exten => _7XXX,n(gonext),Goto(10)
рдЕрдм рд╣рдо рддрд╛рд░рд╛рдВрдХрди рдХреЛ рд╕рд┐рдЦрд╛рдПрдВрдЧреЗ рдХрд┐ рдмреБрд▓рд╛рдП рдЧрдП рдкрдХреНрд╖ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ, рдФрд░ рдЬрдм рдбреАрдПрдирдбреА рдореЛрдб рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд▓рдЯрдХрд╛рдПрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рддреБрд░рдВрдд рдкрд╣рд▓реЗ рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВред
; , DND exten => _7XXX,n,GotoIf($["${DB(DND/${EXTEN})}" = "1"]?gooff) exten => _7XXX,n,Dial(SIP/${EXTEN},20,Tt) exten => _7XXX,n(gooff),Hangup()
рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рдирдП рд╕рдВрджрд░реНрднреЛрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ:
; , SIP- [outcoming-sip] ;;; : / DND include => dnd-on-off-2 ;;; "exten => _X.,1,Goto(10)" include => goto10 ;;; : / DND *76 include => dnd-on-off ;;; SIP- ( 10) include => sip-phones
рд╕рд╣реЗрдЬреЗрдВ рдФрд░
asterisk -rx "dialplan reload"
ред
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдлреЛрди рдкрд░ рдмреАрдПрд▓рдПрдл рдореЛрдб рдореЗрдВ рдкрд╕рдВрджреАрджрд╛ рдорд▓реНрдЯреАрдлрд╝рдВрдХреНрд╢рди рдХреБрдВрдЬреА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд╕рдВрдХреЗрдд рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВред рдкрд┐рдХрдЕрдк рдХреЛрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рд╕рдм рдлреЛрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ (рдореЗрд░реЗ рдкрд╛рд╕ рдлреНрд▓рд╛рдЗрдВрдЧ рд╡реЙрдпрд╕ рдЖрдИрдкреА -622 рд╣реИ)ред
рдЕрдм, рдбреВ рдиреЙрдЯ рдбрд┐рд╕реНрдЯрд░реНрдм рдХреА рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХреЛ рдХреЙрд▓ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреБрдВрдЬреА рдЦреБрдж рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рд░реЛрд╢рдиреА рдХрд░рддреА рд╣реИ, рдФрд░ рд╕рдЪрд┐рд╡ рдХрд╛ рдореБрдЦреНрдп рдмрдЯрди рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рд░реЛрд╢рдиреА рдХрд░рддрд╛ рд╣реИ, рдорд┐рд╢рди рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред
PS рдореИрдВ рдлреНрд▓рд╛рдЗрдВрдЧ рд╡реЙрдпрд╕ IP622 рдлреЛрди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рдж рд╡реНрдпрдХреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдкреБрд░рд╛рдиреЗ рдлрд░реНрдорд╡реЗрдпрд░ рдкрд░ рдереЛрдбрд╝рд╛ рдЕрдкрд░реНрдпрд╛рдкреНрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдкрдбреЗрдЯ рдХреЗ рджреМрд░рд╛рди рдереЛрдбрд╝рд╛ рд╕рд╛ рдХрдареЛрд░ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЕрдм рдЦреБрдж рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕рдореГрджреНрдз рд╣реИ, рд╕рдорд░реНрдерди рдореЗрд╣рдирддреА рд╣реИ, рдФрд░ рдлрд░реНрдорд╡реЗрдпрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ v1.4 рдФрд░ v3 рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИрдВред рдЗрд╕рдХреА рдХреАрдордд рдХреЗ рд▓рд┐рдП рдмрд╕ рдмрд╣реБрдд рдЦреВрдмрд╕реВрд░рдд рд╣реИред