рддрд╛рд░рд╛рдВрдХрди рдореЗрдВ рдП.рдИ.рдПрд▓.

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╣рдм рдкрд░ рдХрд╛рдлреА рдХреБрдЫ рд▓реЗрдЦ рд╣рдм рдкрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдП рд╣реИрдВ рдФрд░ рд╕рднреА рд▓реЗрдЦреЛрдВ рдореЗрдВ рд▓реЗрдЦрдХ рдбрд╛рдпрд▓ рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди.conf рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдпрд╣рд╛рдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди.conf рдореЗрдВ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдПрдИрдПрд▓ рдкреНрд░рд╛рд░реВрдк (рдПрдХреНрд╕рдЯреЗрдВрд╢рди.рдСрд▓) рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕рдХреЗ рдЕрдВрддрд░реЛрдВ рдХрд╛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдлреА рдХрдо рд╣реИрдВ, рд▓реЗрдХрд┐рди ael рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдбрд╛рдпрд▓ рдпреЛрдЬрдирд╛ рдХреЛ рдХреЙрд▓ рдХрд░реВрдВрдЧрд╛ред "рд╕рд╛рдорд╛рдиреНрдп" рдкреНрд░рд╛рд░реВрдк, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдФрд░ рдПрдПрд▓ - рдХреНрд░рдорд╢рдГ, рдПрдПрд▓ред рдЖрдЗрдП рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдбрд╛рдпрд▓ рдпреЛрдЬрдирд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:
;
  [рдЖрдВрддрд░рд┐рдХ]
 exten => s, 1, рдЙрддреНрддрд░                                                             
 exten => s, n, рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб (someivr)
 exten => s, n, рдкрдврд╝реЗрдВ (рдЗрдВрдЯрдЧреНрд░реБрдк ,, 3)
 exten => s, n, Goto ($ {intgroup}, 1)
 exten => XXX, 1, рдбрд╛рдпрд▓ (SIP / $ {EXTEN})
 exten => XXX, n, HangUp 


рдФрд░ рдпрд╣ рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ ael рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рджрд┐рдЦреЗрдЧрд╛:

  рд╕рдВрджрд░реНрдн рдЖрдВрддрд░рд┐рдХ {
	 s => {
		 рдЙрддреНрддрд░;
		 рдкреГрд╖реНрдарднреВрдорд┐ (someivr);
		 рдкрдврд╝реЗрдВ (рдЗрдВрдЯрдЧреНрд░реБрдк ,, 3);
		 рдЧреЛрдЯреЛ ($ {рдЗрдВрдЯрдЧреНрд░реБрдк}, 1);
	 }
	 XXX => {
		 рдбрд╛рдпрд▓ (SIP / $ {EXTEN});
		 hangup;
	 }
 } 


рдЗрд╕рд▓рд┐рдП рдорддрднреЗрдж рд╕реНрдкрд╖реНрдЯ рд╣реИрдВред рдореЗрд░реЗ рд▓рд┐рдП, ael рдХреЗ рдореБрдЦреНрдп рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдХреЙрдиреНрдлрд┐рдЧ рд░реАрдбрд┐рдВрдЧ рдХреА рд╕реБрд╡рд┐рдзрд╛: рдЗрд╕ рдЫреЛрдЯреЗ рд╕реЗ рдЕрдореВрд░реНрдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рднреА рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЙрдиреНрдлрд┐рдЧ рдХреЛ рдкрдврд╝рдирд╛ рдФрд░ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд╣реИред рджреВрд╕рд░реА рдмрд╛рдд рдЬреЛ рдЖрдкрдХреА рдЖрдВрдЦ рдХреЛ рддреБрд░рдВрдд рдкрдХрдбрд╝ рд▓реЗрддреА рд╣реИ рд╡рд╣ рд╣реИ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреА рдХрдореА (s, n рдКрдкрд░ рдХреЗ рдХреЛрдб рдореЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдбрд╛рдпрд▓рди рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)ред
рд╡реЗ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИрдВ? рдпрд╛ рдмрд▓реНрдХрд┐, рд╡реЗ рдПрдХ рдирд┐рдпрдорд┐рдд рдбрд╛рдпрд▓рдкреНрд▓рд╛рди рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдХреНрдпреЛрдВ рд╣реИрдВ?
рдпрджрд┐ рдЖрдкрдиреЗ рдЗрд╕ рддрд╛рд░рд╛рдВрдХрди рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдбрд╛рдпрд▓рдкреНрд▓рд╛рди рдХреЗ рд╕рд╛рде рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдХрд░ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕рдореЗрдВ рдЪрдХреНрд░ рдпрд╛ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВред рдХреЗрд╡рд▓ рдПрдХ рд╕рд╢рд░реНрдд рд╕рдВрдХреНрд░рдордг (рдЧреЛрдЯреЛрдЗрдлрд╝) рд╣реИ, рдЬрд┐рд╕рдХреА рдорджрдж рд╕реЗ, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЪрдХреНрд░ рднреА рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рд╕реБрд╡рд┐рдзрд╛ рдмрд╣реБрдд рд╣реА рд╕рдВрджрд┐рдЧреНрдз рд╣реИред рдЖрдЗрдП рд╕рд░рд▓рддрдо рдРрд▓ рдХреЛрдб рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬреЛ рддрд╛рд░рд╛рдВрдХрди рдХрдВрд╕реЛрд▓ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдпрд╛ рдЧрд▓рдд рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдЧрд╛:
 рдЕрдЧрд░ ($ {var} = foo) {
	 NoOp (рд╕рдЪ);
 }
 рдФрд░ {
	 NoOp (рдЭреВрдард╛);
 }


рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдореЗрдВ, рдпрд╣ рд╕реНрдерд┐рддрд┐ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
 exten => 1,1, GotoIf ($ [$ {var} = foo]? label1: label2) 
 exten => 1, n (рд▓реЗрдмрд▓ 1), NoOp (рд╕рдЪ)
 exten => 1, n, рдЧреЛрдЯреЛ (end_of_if)
 exten => 1, n (label2), NoOp (рдЧрд▓рдд)
 exten => 1, n (end_of_if), ...


рди рдХреЗрд╡рд▓ рд╣рдордиреЗ "рдкрдардиреАрдпрддрд╛" рдЦреЛ рджреА рд╣реИ, рд╣рдореЗрдВ рдпрд╛ рддреЛ рд╣рд░ рдЬрдЧрд╣ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рджреЗрдиреА рд╣реЛрдВрдЧреА (рдФрд░ рдмрд┐рд▓реНрдХреБрд▓ рдЧреИрд░-рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ), рдпрд╛ рд╣рд░ рдЫреАрдВрдХ рдХреЗ рд▓рд┐рдП рд▓реЗрдмрд▓ рдХреЗ рд╕рд╛рде рдЖрдПрдВред рд╣рд╛рдВ, ael рдХреЗ рдкрд╛рд╕ рднреА рд▓реЗрдмрд▓ рд╣реИрдВ, рдХреЗрд╡рд▓ рдЙрдирдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЧрд╛рдпрдм рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЖрдкрдХреЛ рдЧреЛрдЯреЛ рд╕реЗ рджреВрд░ рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
 s => {
	 рдЙрддреНрддрд░;
	 somelabel:
		 hangup;
 }


Anel рдореЗрдВ рдкреНрд░рддреНрдпрдХреНрд╖ рд╕реНрдерд┐рддрд┐рдпреЛрдВ (рдпрджрд┐ / рдФрд░) рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
  _777X => { 
          рд╕реНрд╡рд┐рдЪ ($ {EXTEN}) { 
               рдкреИрдЯрд░реНрди N11: 
                    NoOp (рдЖрдкрдиреЗ рдПрдХ N11 рдирдВрдмрд░-- $ {EXTEN} рдХрд╣рд╛); 
                    рддреЛрдбрд╝; 
               рдорд╛рдорд▓рд╛ 7771: 
                    NoOp (рдЖрдкрдиреЗ 7771 рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ!); 
                    рддреЛрдбрд╝; 
               рдорд╛рдорд▓рд╛ 7772: 
                    NoOp (рдЖрдкрдиреЗ 7772 рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ!); 
                    рддреЛрдбрд╝; 
               рдорд╛рдорд▓рд╛ 7773: 
                    NoOp (рдЖрдкрдиреЗ 7773 рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ!); 
                    // рдЧрд┐рд░реЛ- 
               рдбрд┐рдлрд╝реЙрд▓реНрдЯ: 
                    NoOp (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрд▓реЙрдЬ рдореЗрдВ!); 
          }; 

рдЕрдм рдЙрд╕реА рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╛рд░реВрдк рдореЗрдВ? рд╡рд╣реА рдмрд╛рддред

рдЕрдм рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рдЬрдЯрд┐рд▓ рдбрд╛рдпрд▓рдкреНрд▓рд╛рди рд╣реИ, рдЬреЛ рд╕рдордп рдХреЗ рд╕рд╛рде рдмрдврд╝реЗрдЧрд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛрдЧрд╛, рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рдХрдИ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ, рдХрддрд╛рд░реЗрдВ рд╣реЛрдВрдЧреА, рдФрд░ рдЗрд╕реА рддрд░рд╣ - рдпрд╣рд╛рдВ рдмрд┐рдирд╛ рдРрд▓ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЙрджрд╛рд╕ рд╣реЛрдЧрд╛ред рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдПрдХ рддрд╛рд░рд╛рдВрдХрди рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдЕрдиреБрд░реЛрдз рдХрд╛рдлреА рд╡рд┐рджреЗрд╢реА рд╣реИрдВред Ael рдХреЗ рдмрд┐рдирд╛ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛрдЧрд╛ред

рдирд┐рд╖реНрдкрдХреНрд╖рддрд╛ рдореЗрдВ, рдпрд╣ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рддрд╛рд░рд╛рдВрдХрди рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ "рд╕рд╛рдорд╛рдиреНрдп" рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдЖрдк рддрд╛рд░рд╛рдВрдХрди -rx "рдбрд╛рдпрд▓рдкреНрд▓рд╛рди рд╢реЛ" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд▓реЗрдХрд┐рди ael рдЬреАрд╡рди рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдкрдХреЛ рдирд┐рдпрдорд┐рдд рдбрд╛рдпрд▓ рдпреЛрдЬрдирд╛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рд╣реИ, рддреЛ ael рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред

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


All Articles