рддрд╛рд░рд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдЕрдЧреНрд░реЗрд╖рдг

рдХреЙрд▓ рдлрд╝реЙрд░рд╡рд░реНрдбрд┐рдВрдЧ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рд╣реИ рдФрд░ рдХреЙрд▓ рдлрд╝реЙрд░рд╡рд░реНрдбрд┐рдВрдЧ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреА рдПрдХ рдмрд╣реБрдд рдХреБрдЫ рд╣реИред
рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЙрд▓ рдЕрдЧреНрд░реЗрд╖рдг рдмрд┐рдирд╛ рд╢рд░реНрдд рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рд╢рд░реНрдд рдХреЙрд▓ рдЕрдЧреНрд░реЗрд╖рдг рдореЗрдВ рдмрджрд▓рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдЕрдЧрд░ рдореИрдВ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛), рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рд╕рд░реНрд╡рд░ рдкрд░ рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди рд╢рд╣рд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рд╣реИ, рд╡рд╣ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛ SIP рд╕рдВрджреЗрд╢ 302-рдЪрд╛рд▓рд┐рдд рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ (SIP рдЪреИрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдбрд╛рдпрд▓рдкреНрд▓рд╛рди рдХреЛ рдЕрдиреНрдп рддрдХрдиреАрдХреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдЬрд┐рд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдореИрдВ рдпрд╣рд╛рдВ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдЙрд╕рдХрд╛ рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ 2 рдЯреНрд░рдВрдХ рдпрд╛ 1 рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдорд▓реНрдЯреА-рдЪреИрдирд▓ (<2 рдЪреИрдирд▓)ред рд╡рд┐рдзрд┐ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди astDB рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ , рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛ ред

рдФрд░ рдЗрд╕рд▓рд┐рдП рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ: рдпрд╣рд╛рдБ рдбрд╛рдпрд▓рдкреИрди рдХрд╛ рдкреВрд░рд╛ рдЯреБрдХрдбрд╝рд╛ рд╣реИ рдЬреЛ рдХреЙрд▓ рдлрд╝реЙрд░рд╡рд░реНрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ:

exten => #21,1,Set(DB(REDIRECT/${CALLERID(num)})=${EXTEN})

exten => #21#,1,Set(NOREDIRNUM=${DB_DELETE(REDIRECT/${CALLERID(num)})})

exten => s,1,Set(REDIRECTNUM=${DB(REDIRECT/${EXTEN})})
exten => s,n,GotoIf($[${ISNULL(${REDIRECTNUM})}]?internal:redirect)
exten => s,n(internal),Dial(SIP/${EXTEN})
exten => s,n(redirect),Dial(SIP/TRUNK/${REDIRECTNUM})


рдЕрдм рдЪрд▓реЛ рдПрдХ рдмреНрд░реЗрдХрдбрд╛рдЙрди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░ рдХреЙрд▓ рдЕрдЧреНрд░реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН, рдХреЙрд▓ рдлрд╝реЙрд░рд╡рд░реНрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

exten => #21,1,Set(DB(REDIRECT/${CALLERID(num)})=${EXTEN})

рдпрд╣ рдХрдорд╛рдВрдб рдбрд╛рдпрд▓ рдХрд┐рдП рдЧрдП рдирдВрдмрд░ рдФрд░ рдЙрд╕ рдирдВрдмрд░ рдХреЛ рдпрд╛рдж рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЗрд╕реЗ рдбрд╛рдпрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕реЗ Asterisk рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред

рдпрд╣рд╛рдВ # 21 # рд╕рдВрдпреЛрдЬрди рдХреЛ рдбрд╛рдпрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЕрдЧреНрд░реЗрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд░реАрдбрд╛рдпрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ REDIRECT рдкрд░рд┐рд╡рд╛рд░ рдореЗрдВ рдбрд╛рдпрд▓ рдХрд┐рдП рдЧрдП рдирдВрдмрд░ $ {EXTEN} рдХреЛ рдбрд╛рд▓рд╛, рдЬреЛ рдХрд┐ рдХреБрдВрдЬреА $ {CALLERID (рд╕рдВрдЦреНрдпрд╛)} рджреНрд╡рд╛рд░рд╛ рд╕реБрд▓рдн рд╣реЛрдЧрд╛ред рдпрд╛рдиреА, рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ рддреЛ рджрд░реНрдЬ рдХреА рдЧрдИ рд╕рдВрдЦреНрдпрд╛ REDIRECT рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрдВрдХреНрддрд┐ $ {CALLERID (рд╕рдВрдЦреНрдпрд╛)} рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рдПрдЧреА рдпрд╛ Asterisk рдбреЗрдЯрд╛рдмреЗрд╕ (DB рдХрдорд╛рдВрдб) рдХреЗ REDIRECT / $ {CALLERID (рд╕рдВрдЦреНрдпрд╛)} рдкрддреЗ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреАред рдЪрд░ $ {CALLERID (рд╕рдВрдЦреНрдпрд╛)} рдЙрд╕ рдирдВрдмрд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдХреЙрд▓ рдЖрддреА рд╣реИред

рдЕрдЧреНрд░реЗрд╖рдг рдПрдХ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

exten => #21#,1,Set(NOREDIRNUM=${DB_DELETE(REDIRECT/${CALLERID(num)})})

DB_DELETE рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдпреЛрдЬрди # 21 # рдбрд╛рдпрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЧреНрд░рд╛рд╣рдХ REDIRECT / $ {CALLERID (рд╕рдВрдЦреНрдпрд╛)} рд╕реЗрд▓ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рддрд╛ рд╣реИ

рдпрд╣рд╛рдВ рдореИрдВрдиреЗ рд╕реЗрдЯ () рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреБрдЫ рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NOREDIRNUM рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ "=" рдЪрд┐рд╣реНрди рдХреА рдХрдореА рдкрд░ рд╢рд╛рдкрд┐рдд рдерд╛ред рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдк рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

exten => #21#,1,Set(DB_DELETE(REDIRECT/${CALLERID(num)}))

рдЕрдЧрд▓реА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╕рд┐рд░реНрдл рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА - рдХреЙрд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдирд┐рдкрдЯрддреА рд╣реИрдВред рдЖрдЗрдП рдЙрди рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

exten => s,1,Set(REDIRECTNUM=${DB(REDIRECT/${EXTEN})})

рдпрд╣ рд▓рд╛рдЗрди REDIRECT / $ {EXTEN} рд╕реЗрд▓ (рдХреЙрд▓ рдлрд╝реЙрд░рд╡рд░реНрдбрд┐рдВрдЧ рдирдВрдмрд░) рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдорд╛рди рдХреЛ REDIRECTNUM рд╡реИрд░рд┐рдПрдмрд▓ рдкрд░ рдЕрд╕рд╛рдЗрди рдХрд░рддреА рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдЬрд╛рдВрдЪрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдЗрд╕ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдлрд╝реЙрд░рд╡рд░реНрдбрд┐рдВрдЧ рдирдВрдмрд░ рдмрд┐рд▓реНрдХреБрд▓ рд╕реЗрдЯ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрд╣реА рд╣реИ, рдЕрдЧрд░, рдХрд╣рддреЗ рд╣реИрдВ, рд╣рдо рдЧреНрд░рд╛рд╣рдХ рдХреЛ 100 рдирдВрдмрд░ рд╕реЗ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрдорд╛рдВрдб REDIRECTNUM рдЪрд░ рдХреЗ рд▓рд┐рдП REDIRECT / 100 рд╕реЗрд▓ рдХрд╛ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

exten => s,n,GotoIf($[${ISNULL(${REDIRECTNUM})}]?internal:redirect)

рдЕрдЧрд▓рд╛, рд╣рдо рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ: рдпрджрд┐ REDIRECTNUM ISNULL рдЪрд░ (рдЦрд╛рд▓реА / рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд) рд╣реИ, рддреЛ рд╣рдо рдЖрдВрддрд░рд┐рдХ рд▓реЗрдмрд▓ рд╡рд╛рд▓реА рд░реЗрдЦрд╛ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдЙрд╕рдХреЗ рдореБрдЦреНрдп рдирдВрдмрд░ рд╕реЗ рдмреБрд▓рд╛рддреЗ рд╣реИрдВ:

exten => s,n(internal),Dial(SIP/${EXTEN})

рдЕрдЧрд░ REDIRECTNUM рд╡реИрд░рд┐рдПрдмрд▓ рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдЙрд╕рдореЗрдВ рдмрддрд╛рдП рдЧрдП рдирдВрдмрд░ рдкрд░ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред

exten => s,n(redirect),Dial(SIP/TRUNK/${REDIRECTNUM})

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреЛ рдПрд╕реНрдЯреЗрд░рд┐рд╕реНрдХ рдХреА рд╡рд┐рд╢рд╛рд▓рддрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In139178/


All Articles