рдореИрдВрдиреЗ рдлреЛрди рджреНрд╡рд╛рд░рд╛ рдореМрд╕рдо рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рд╕реЗрд╡рд╛ рдХреЗ рдЖрдпреЛрдЬрди рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдпрд╣рд╛рдВ,
рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдЕрдзрд┐рдХ рдмреБрджреНрдзрд┐ рдХреЛ рдПрд╕реНрдЯрд░рд┐рд╕реНрдХ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореМрд╕рдо рдХреЗ рд╕рд╛рде рдПрдХреНрд╕рдПрдордПрд▓
рд╡рд░реНрддрдорд╛рди рдореМрд╕рдо рдХреЗ рд╕рд╛рде
рдПрдХреНрд╕рдПрдордПрд▓ рдФрд░ рдЕрдЧрд▓реЗ рджреЛ рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдореИрдВ рдмреАрдмреАрд╕реА рдХреЗ рд╕рд╛рде рд▓реЗрддрд╛ рд╣реВрдВред
рдЪреВрдВрдХрд┐ рд╣рдо рдХреНрд░реЛрди рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдирд╣реАрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
0 2 * * * /home/alexandr/xml/weather/almaty/bbcweather.sh
0 14 * * * /home/alexandr/xml/weather/almaty/bbcweather.sh
30 16 * * * /home/alexandr/xml/weather/almaty/bbcweather.sh
рдпрд╣ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ XML рдХреЛ рджрд┐рди рдореЗрдВ рддреАрди рдмрд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдЕрд▓реНрдорд╛рдЯреА рд╢рд╣рд░ рдХреЗ рд▓рд┐рдП)ред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рди рдХреЗрд╡рд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХреНрд╕рдПрдордПрд▓-рдХреВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕рдЪ рд╣реИ, рдореЗрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╣реБрдд рд╣реА рдЖрджрд┐рдо рд╣реИ рдФрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕рдХреА рдЕрдХреНрд╖рдорддрд╛ рд╕реЗ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред
рдкрд╛рда рдлрд╝рд╛рдЗрд▓реЗрдВ
рдПрдХ рд╣реА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдирд╛рдо (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреНрдпреВрдирддрдо рддрд╛рдкрдорд╛рди) рдЕрд▓рдЧ-рдЕрд▓рдЧ рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрд╕рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рднрд┐рдиреНрди рд╣реЛрдЧрд╛: 1 - рдЖрдЬ, 2 рдФрд░ 3 - рдХрд▓ рдФрд░ рдкрд░рд╕реЛрдВ, рдХреНрд░рдорд╢рдГред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЬ (XML рдореЗрдВ рдкрд╣рд▓рд╛ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ) рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рддрд╛рдкрдорд╛рди "1Tmin", рдХрд▓ (рджреВрд╕рд░рд╛ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ) - "2Tmin" рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЕрдм, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЕрдиреБрд╕рд╛рд░ (рдЬреЛ рд╕рдВрдпреЛрдЧрд╡рд╢, рдкрдВрдХреНрддрд┐ рд╡рд░реНрдг рдХрд╛ рдЕрдВрдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП):
- рд╕рдкреНрддрд╛рд╣ рдХреЗ рджрд┐рди (рджрд┐рди) рдореЗрдВ рд░рд╡рд┐рд╡рд╛рд░ рдХреЗ рд▓рд┐рдП "рджрд┐рди -реж", рд╢рдирд┐рд╡рд╛рд░ рдХреЗ рд▓рд┐рдП "рджрд┐рди -6" рд╢рд╛рдорд┐рд▓ рд╣реИ;
- рд╣рд╡рд╛ рдХреА рджрд┐рд╢рд╛ (Wdir) рдореЗрдВ "рдЙрддреНрддрд░", "рдЙрддреНрддрд░-рдкрд╢реНрдЪрд┐рдо" рдХреЗ рд▓рд┐рдП "рдПрдирдбрдмреНрд▓реНрдпреВ" рд╢рд╛рдорд┐рд▓ рд╣реИ;
- рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди (рдЖрд░реНрджреНрд░рддрд╛, рддрд╛рдкрдорд╛рди, рд╣рд╡рд╛ рдХреА рдЧрддрд┐) рд╕рдВрдЦреНрдпрд╛рдУрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ;
- рдкрд╛рда - рдкрд╛рда рдХреЗ рд╕рд╛рде :-) (рдмрд╛рджрд▓, рджреГрд╢реНрдпрддрд╛)ред
рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП (рдФрд░ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рднреА) рдореИрдВрдиреЗ "рдЗрдХреЛ" рдХрдорд╛рдВрдб рдХреЗ "рдПрди-рдПрди" рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдкрд░ рд▓рд╛рдЗрди рдЪрд░рд┐рддреНрд░ рдХреЗ рдЕрдВрдд рдХреЛ рди рд▓рд┐рдЦреЗрдВ:
echo -n "day-5" > 1Wday
рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореМрд╕рдо рдбреЗрдЯрд╛ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред рдЕрдм Extension.conf рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░ рдЬрд╛рдПрдВред
extensions.conf
[weather] exten => 071,1,Set(wpath="/home/your-directory/") exten => 071,n,Goto(say-weather,s,1) [say-weather] exten => s,1,Answer() exten => s,n,Set(E=1) exten => s,n(play),Playback(digits/${SHELL(cat ${wpath}${E}Wday)}) exten => s,n,Playback(custom/temperatura) exten => s,n,SayNumber(${SHELL(cat ${wpath}${E}Tmin)}) exten => s,n,SayNumber(${SHELL(cat ${wpath}${E}Tmax)}) exten => s,n,Playback(custom/wind) exten => s,n,Playback(custom/wind/${SHELL(cat ${wpath}${E}Wdir)}) exten => s,n,SayNumber(${SHELL(cat ${wpath}${E}Wspd)}) exten => s,n,Playback(custom/metrov-v-sekundu) exten => s,n,Playback(custom/vlazhnost) exten => s,n,SayNumber(${SHELL(cat ${wpath}${E}Humd)}) exten => s,n,Playback(custom/procentov) exten => s,n,WaitExten() exten => s,n,Hangup() exten => _[1-3],1,Set(E=${EXTEN}) exten => _[1-3],n,Goto(say-weather,s,play)
рдбреАрдмреНрд░реАрдлрд┐рдВрдЧ
рд╣рдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рдо рдореМрд╕рдо рддрдХ рдбрд╛рдпрд▓ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрд╕реА рд╕рдордп, "wpath" рдЪрд░ рд╕реЗрдЯ рдХрд░реЗрдВ, рдЬрд╣рд╛рдВ рд╣рдо рдкрд╣рд▓реЗ рдмрдирд╛рдИ рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ:
exten => 071,1,Set(wpath="/home/your-directory/")
рдореМрд╕рдо рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЬрд╛рдПрдВ:
exten => 071,n,Goto(say-weather,s,1)
рдореВрд▓реНрдп "рдИ" (рдЖрдЬ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдЬ рд╕реЗрдЯ) рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдкреНрддрд╛рд╣ рдХреЗ рджрд┐рди рдХрд╛ рдирд╛рдо рдЦреЗрд▓реЗрдВ:
exten => s,n,Set(E=1) exten => s,n(play),Playback(digits/${SHELL(cat ${wpath}${E}Wday)})
рдЖрдк рдкреНрд▓реЗрдмреИрдХ рдЯреАрдо рдХреА рдХрд▓реНрдкрдирд╛ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЛ рдмрд╛рдж рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред рдпрджрд┐ рдПрдХ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ (рдореЗрд░реЗ рдбреЗрдмрд┐рдпрди рдкрд░ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ) "/ usr / share / рддрд╛рд░рд╛рдВрдХрди / рдзреНрд╡рдирд┐рдпрд╛рдБ / en /" (рдпрд╛ "ru /" рдпрджрд┐ рдкреИрд░рд╛рдореАрдЯрд░ "рднрд╛рд╖рд╛ = рдЖрд░рдпреВ" sip.conff рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред ред "Wpath" рдФрд░ "E" рдХрд╛ рдорд╛рди рд╣рдо рдкрд╣рд▓реЗ рд╣реА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд┐рд▓рддреЗ рд╣реИрдВ:
Playback(/usr/share/asterisk/sounds/ru/digits/${SHELL(cat /home/your-directory/1Wday)})
"рдмрд┐рд▓реНрд▓реА / рдШрд░ / рдЕрдкрдиреА-рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ / 1 рджрд┐рди" рдХреЛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреНрд░рд┐рдВрдЧ "рджрд┐рди -2017" (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪрд▓реЛ рдЖрдЬ рдХрд╛ рд░рд╡рд┐рд╡рд╛рд░ рд╣реИ), рдлрд┐рд░:
Playback(/usr/share/asterisk/sounds/ru/digits/day-0)
рдпрд╛рдиреА рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЙрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рджрд┐рди рдХреЗ рдирд╛рдо рд╕реЗ рдЦреЗрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдВрдХреЛрдВ / рджрд┐рди -реж рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдбреЗ рд╕рд╛рдЙрдВрдб рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╣реИред
рдпрд╣ рд░реЗрдЦрд╛ рднреА рдЗрд╕реА рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИ:
SayNumber(${SHELL(cat ${wpath}${E}Tmin)})
рдЖрдЬ рдХрд╛ рдиреНрдпреВрдирддрдо рддрд╛рдкрдорд╛рди рдмрд╛рд╣рд░ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп рдлрд╝рд╛рдЗрд▓ "/ home / your-directory / 1Tmin" рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХрд╛рд╢, рдореБрдЭреЗ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЦреБрдж рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рдкрдбрд╝рддрд╛, рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ "рдХрд╕реНрдЯрдо" рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦрд╛ред
exten => s,n,Playback(custom/temperatura)
рд╕рднреА рдкреНрд▓реЗрдмреИрдХ рдФрд░ SayNumber рдХреА рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рджрд░реНрдЬ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
exten => s,n,WaitExten()
рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрдЦреНрдпрд╛рдУрдВ рдореЗрдВ 1, 2 рдФрд░ 3 рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдкреИрдЯрд░реНрди _ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ [1-3]:
exten => _[1-3],1,Set(E=${EXTEN}) exten => _[1-3],n,Goto(say-weather,s,play)
рдЬрдм рдЖрдк рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рд╡реИрд░рд┐рдПрдмрд▓ "E" рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛ рд╣реБрдЖ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рд▓реЗрдмрд▓ "рдкреНрд▓реЗ" (рдЗрд╕ рд╕рдВрджрд░реНрдн рдХреА рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐) рдкрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рддрд╛рд░рд╛рдВрдХрди рдлрд┐рд░ рд╕реЗ рдореМрд╕рдо рдХреЗ рдХреЙрд▓рд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд▓ (рдпрджрд┐ рд╕рдВрдЦреНрдпрд╛ 2 рджрд░реНрдЬ рдХреА рдЧрдИ рдереА) рдпрд╛ рдХрд▓ (3) рдХреЗ рдмрд╛рдж рдХрд╛ рджрд┐рдиред
рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣рдореЗрдВ 071 рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдПрдХ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд▓рд┐рдЦрдиреЗ рдФрд░ рдПрдХ рд╣реА рд╢рд╣рд░ рдХреЗ рд▓рд┐рдП рдореМрд╕рдо рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрд╕рдо рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ:
[weather] exten => 071,1,Set(wpath="/home/user/weather/city1/files") exten => 071,n,Goto(say-weather,s,1) exten => 072,1,Set(wpath="/home/user/weather/city2/files") exten => 072,n,Goto(say-weather,s,1)
рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд░реВрд╕реА рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдХрд╣рд╛рдБ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ Google рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
Www.voip-info.org рдкрд░
рдПрд╕реНрдЯрд░рд┐рд╕реНрдХ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдгред
рдмреЛрдирд╕
рдПрдХ рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ extension.conf рднрд╛рдЧ рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдСрдбрд┐рдпреЛ рд╕рдВрджреЗрд╢ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдП:
[test-context] exten => 051,1,Goto(rec-file,s,1) [rec-file] exten => s,1,Verbose(1,Recording application) exten => s,n,Answer() exten => s,n,Playback(record-enter-num) exten => s,n(filename),Read(filename) exten => s,n(rec-mes),Record(/tmp/recs/${filename}:gsm) exten => s,n,Playback(beep) exten => s,n,Wait(1) exten => s,n(rec-play),Playback(/tmp/recs/${filename}) exten => s,n(rec-review),Background(vm-review) exten => s,n,WaitExten(10) exten => s,n(rec-del),System(rm /tmp/recs/${filename}.gsm) exten => s,n,Playback(vm-deleted) exten => s,n(read-hang),Read(rep,,1,,,2);Wait for 1 digit for 2 seconds to receive 1 which means that another file is to be recorded exten => s,n,Gotoif($["${rep}" = "1"]?filename) exten => s,n,Hangup() exten => 1,1,Playback(vm-msgsaved) exten => 1,n,SayDigits(${filename}) exten => 1,n,Goto(rec-file,s,read-hang) exten => 2,1,Goto(rec-file,s,rec-play) exten => 3,1,Wait(1) exten => 3,n,Goto(rec-file,s,rec-mes) exten => i,1,Goto(rec-file,s,rec-review) exten => t,1,Goto(rec-file,s,rec-del) exten => 0,1,Goto(rec-file,s,rec-del)
рд╣рдо рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА (рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ) рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд▓реЗрдЯ рддреИрдпрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЬрд┐рд╕ рдкрд╛рда рдХреЛ рдмреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд╣рдо рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рдЕрдЪреНрдЫреЗ рдлреЛрди / рд╣реЗрдбрд╕реЗрдЯ рд╕реЗ 051 рдкрд░ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдЕрдкрдиреА рдкреНрд▓реЗрдЯ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ "рд░рди" рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрдд рдореЗрдВ рд╣рдо / tmp / recs / рд╕реЗ рддреИрдпрд╛рд░ рдлрд╛рдЗрд▓ рд▓реЗрддреЗ рд╣реИрдВред (рдХреБрдЫ рдФрд░ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛)ред
рдФрд░ рдЗрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрдд:
UPD: bbcweather.sh рдХреЗ рд▓рд┐рдВрдХ:
pastebin.com/DJYy6XRM рдФрд░ sed.bbc:
pastebin.com/Xm4EeDst ред рдЕрдЧрд░ рдХреЛрдИ рд╕рд╛рдорд╛рдиреНрдп XML рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ - рддреЛ рдХреЛрдб рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ :-)ред
UPD2: рдореИрдВ рдлрд┐рд░
рд╕реЗ рд▓рд┐рдЦреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдЗрд╕ рд╕рдордп рдкрд░реНрд▓ рдореЗрдВ) рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди.
conf рд╕реЗ рдПрдХ рдЕрдВрд╢
рдкреЛрд╕реНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ :
weather.sh
extensions.conf
exten => 072,1,Set(wpath="/home/alexandr/xml/perl/bbc/moscow/files/")
exten => 072,n,System(echo "${STRFTIME(${EPOCH},,%Y.%m.%d %H:%M:%S)}\t${CALLERID(name)}\t${CALLERID(num)}" >> /var/log/calls_to_moscow_weather.log)
exten => 072,n,Goto(say-weather-perl,s,1)
[say-weather-perl]
exten => s,1,Answer()
exten => s,n,Set(E=1)
exten => s,n,Set(CHANNEL(language)=alex_01) ; By default use directory: /usr/share/asterisk/sounds/alex_01/
exten => s,n(play),Background(digits/${SHELL(cat ${wpath}${E}Wday)}) ; Weekday
exten => s,n,Background(weather/${SHELL(cat ${wpath}${E}Prec)}) ; Precipitation
exten => s,n,Background(weather/temperatura) ; Precipitation
exten => s,n,SayNumber(${SHELL(cat ${wpath}${E}Tmin)}) ; Minimum temperature
exten => s,n,SayNumber(${SHELL(cat ${wpath}${E}Tmax)}) ; Maximum temperature
exten => s,n,Background(weather/${SHELL(cat ${wpath}${E}DMax)}) ; Maximum degree(s)
exten => s,n,Background(weather/veter) ; Wind
exten => s,n,Background(weather/${SHELL(cat ${wpath}${E}Wdir)}) ; Wind Direction
exten => s,n,SayNumber(${SHELL(cat ${wpath}${E}Wspd)}) ; Wind speed
exten => s,n,Background(weather/${SHELL(cat ${wpath}${E}Wsms)}) ; Meter(s) per seconD
exten => s,n,Background(weather/vlazhnost) ; Humidity
exten => s,n,SayNumber(${SHELL(cat ${wpath}${E}Humd)}) ; Humidity percentage
exten => s,n,Background(weather/${SHELL(cat ${wpath}${E}Hper)}) ; Percent(s)
exten => s,n,WaitExten()
exten => s,n,Hangup()
exten => _[1-3],1,Set(E=${EXTEN})
exten => _[1-3],n,Goto(say-weather-perl,s,play)
UPD3: рдореИрдВ рдорд╛рд╕реНрдХреЛ рд╢рд╣рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрдлреНрдд рдЯреЗрд▓реАрдлреЛрди рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рддрдмрд╛рд╣реА рдХрд╛ рдзреНрдпрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛
рд╣реВрдВ ред рдореМрд╕рдо рдХрд╛ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдлреЛрди +7 (499) 753-00-09 рджреНрд╡рд╛рд░рд╛ рдЙрдкрд▓рдмреНрдз рд╣реИред рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рдХреГрдкрдпрд╛
Doc.Telecom рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА
рдЧрдИ рд╣реИ , рдЬреЛ рд╕рднреА рдХреЛ рдпрд╣ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрднрд╛рд░ рд╡реНрдпрдХреНрдд рдХрд░рддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж :-)!