рдЧреВрдЧрд▓ + рд╕реНрдорд╛рд░реНрдЯ рдЖрдИрд╡реАрдЖрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддрд╛рд░рд╛рдВрдХрди рднрд╛рд╖рдг рдорд╛рдиреНрдпрддрд╛



рдЕрдЪреНрдЫреЗ рджрд┐рди, рдкреНрд░рд┐рдп Habra рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ред
рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рддрд╛рд░рд╛рдВрдХрди рдЖрдИрдкреА-рдкреАрдмреАрдПрдХреНрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдЖрдИрд╡реАрдЖрд░ рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред "рд╕реНрдорд╛рд░реНрдЯ" рд╢рдмреНрдж рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ: рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рд╕реНрдЯреЗрд╢рди рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХрд╛ рдирд╛рдо рдкреВрдЫрддрд╛ рд╣реИ, рддрд╛рд░ рдХреЗ рджреВрд╕рд░реЗ рдЫреЛрд░ рдкрд░ рд╡реНрдпрдХреНрддрд┐ рдирд╛рдо рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрдЯреЗрд╢рди рдЗрд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдЧреНрд░рд╛рд╣рдХ рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рдкреНрд░реАрдЗрдВрд╕реНрдЯреЙрд▓реНрдб рдХреА рдЧрдИ FreePBX рдХреЗ рд╕рд╛рде AsteriskNow рдХреА рддреИрдпрд╛рд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рднреВрдорд┐рдХрд╛ рдирд╣реАрдВ рдирд┐рднрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдВрддрд░ рдХреЗрд╡рд▓ рдбрд╛рдпрд▓ рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдВрдкрд╛рджрди рдореЗрдВ рд╣реЛрдЧрд╛ред


рдЪрд░рдг 1:


Google рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ

рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреЙрд▓рд░ рдХреЗ рднрд╛рд╖рдг рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛ рд╣реИред Google рдЕрдиреБрд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Habr рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд ( рдПрдХ , рджреЛ ) рд▓реЗрдЦ рдереЗред рдореИрдВрдиреЗ рд╡рд┐рд╢рд╛рд▓ рдЧрд┐рддреБрдм рдореЗрдВ рдкрд╛рдИ рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рддреИрдпрд╛рд░ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рд▓реЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛: googletts.agi - рддрд╛рдХрд┐ Asterisk рдХреЛ рдмреЛрд▓рдирд╛ рдФрд░ рднрд╛рд╖рдг рджреЗрдирд╛-recog.agi рдХрд░рдирд╛ рд╕рд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ - рддрд╛рдХрд┐ Asterisk рднрд╛рд╖рдг рдХреЛ рдкрд╣рдЪрд╛рди рд╕рдХреЗред

рдлрд╝рд╛рдЗрд▓реЗрдВ googletts.agi рдФрд░ рднрд╛рд╖рдг-recog.agi рдХреЛ рдлрд╝реЛрд▓реНрдбрд░ / var / lib / рддрд╛рд░рд╛рдВрдХрди / agi-bin рдореЗрдВ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдлрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрдХреЗрдЬ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП: рдкрд░реНрд▓, рдкрд░реНрд▓-рд▓рд┐рдмреАрдбрдмреНрд▓реНрдпреВ, рдЖрдИрдУ-рд╕реЙрдХреЗрдЯ-рдПрд╕рдПрд╕рдПрд▓, рдлреНрд▓реИрдХ, рд╕реЛрдХреНрд╕, рдПрдордкреАрдЬреА123ред рд╕рднреА рдкреИрдХреЗрдЬ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА (yum рдЗрдВрд╕реНрдЯреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛, mpg123 рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

Googletts.agi рдореЗрдВ рд╣рдо $ lang рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдорд╛рди en рд╕реЗ ru рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ Asterisk рд░реВрд╕реА рдмреЛрд▓реЗрдВред
рднрд╛рд╖рдг-рд░рд┐рдХреЛрдЧ.рдЖрдЧ рдореЗрдВ, рд╣рдо рдПрди-рдпреВрдПрд╕ рд╕реЗ рдЖрд░рдпреВ-рдЖрд░рдпреВ рддрдХ $ рднрд╛рд╖рд╛ рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ Google рд░реВрд╕реА рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рдПред
рд╕рдм рдХреБрдЫ, рдореИрдВрдиреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдореЗрдВ рдХреБрдЫ рдФрд░ рдирд╣реАрдВ рдЫреБрдЖред

рдЪрд░рдг 2:


рдПрдХ рдбрд╛рдпрд▓ рдпреЛрдЬрдирд╛ рд▓рд┐рдЦрдирд╛

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдХрд╣рд╛, рдореЗрд░реЗ рдкрд╛рд╕ FreePBX рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди_custom.conf рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реВрдВрдЧрд╛ред
рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдирдорд╕реНрдХрд╛рд░ рдХрд░рдирд╛ рдФрд░ рдЙрд╕реЗ рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рджреЗрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред

exten => 100,1,Answer()
exten => 100,n,agi(googletts.agi,тАЭ! .тАЭ,ru)


рдлрд┐рд░, рднрд╛рд╖рдг-recog.agi рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рд╕реБрдирддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрдпрд╛ рдХрд╣рддрд╛ рд╣реИ, рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдВ, рдХрдирд╡рд░реНрдЯ рдХрд░реЗрдВ, Google рдХреЛ рднреЗрдЬреЗрдВ рдФрд░ рдЙрд╕рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

exten => 100,n(record),agi(speech-recog.agi,ru-RU)

рдЕрдЧрд▓рд╛, рдЧреЛрдЯреЛрдЖрдИрдПрдл рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ , рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рдореНрди рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ:

рд╕реНрдерд┐рддрд┐: рдирд┐рд╖реНрдкрд╛рджрди рд╕реНрдерд┐рддрд┐ рд▓реМрдЯрд╛рддрд╛ рд╣реИред 0 рдХрд╛ рдорддрд▓рдм рд╣реИ рд╕рдлрд▓рддрд╛
рдЙрдЪреНрдЪрд╛рд░рдг: рд╕реНрдЯреНрд░рд┐рдВрдЧ Google рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдИ рдЧрдИ
рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕: 0 рд╕реЗ 1 рддрдХ рдХрд╛ рдорд╛рди рд╕рд╣реА рдкрд╣рдЪрд╛рди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ

exten => 100,n,GotoIf($[$["${status}" = "0"] & $["${confidence}" > "0.8"]]?if1:retry)

рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ if1 рдШрдЯрдирд╛ рдкрд░ рдЬрд╛рдПрдВ, рдпрджрд┐ рдпрд╣ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рддреЛ рдкреБрди: рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛ рдкрд░ рдЬрд╛рдПрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВред

exten => 100,n(retry),agi(googletts.agi,тАЭ, тАЭ,ru)

рдЕрдЧрд▓рд╛, рд╣рдо рд╕реАрдзреЗ рдЙрд╕ рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ Google рд╕реЗ рдорд┐рд▓реА рдереАред рдкреНрд░рд╛рдкреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ $ {рдЙрдЪреНрдЪрд╛рд░рдг} рдХреА рддреБрд▓рдирд╛ рдХреБрдЫ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рдФрд░ рдпрд╣ рддрдп рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред GotoIf рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

exten => 100,n(if1),GotoIf($[тАЬ${utterance}тАЭ = тАЬтАЭ]?vasya:retry)

рдпрджрд┐ Google рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд▓рд╛рдЗрди "рд╡рд╛рд╕реНрдпрд╛" рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рддреЛ рд╡реИрд╢реНрдп рдШрдЯрдирд╛ рдкрд░ рдЬрд╛рдПрдВ, рдпрджрд┐ рдпрд╣ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВред

рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рд╡рд╛рд╕реНрдпрд╛ рдХреЛ рдмреБрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ

exten => 100,n(vasya),Dial(SIP/101)

рдкреВрд░реНрдг рдореЗрдВ рдбрд╛рдпрд▓ рдпреЛрдЬрдирд╛:
exten => 100.1, рдЙрддреНрддрд░ ()
exten => 100, n, agi (googletts.agi, "рдирдорд╕реНрдХрд╛рд░! рдмреАрдк рдХреЗ рдмрд╛рдж, рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХрд╛ рдирд╛рдо рдХрд╣реЗрдВред", ru)
exten => 100, n (рд░рд┐рдХреЙрд░реНрдб), рдПрдЬреА (рднрд╛рд╖рдг-рд░рд┐рдХреЛрдЧ.рдЧреА, рдЖрд░рдпреВ-рдЖрд░рдпреВ)
exten => 100, n, GotoIf ($ [$ ["$ {рд╕реНрдерд┐рддрд┐}" = "0"] рдФрд░ $ ["$ {рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕}"> "0.8"]] if1: рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ)
exten => 100, n (if1), GotoIf ($ ["$ {рд╡рд╛рдХреНрдкрдЯреБ}" = "рд╡рд╛рд╕реНрдп"]? рд╡рд╛рд╕реНрдп: рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕)
exten => 100, n (рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕), agi (googletts.agi, "рдХреГрдкрдпрд╛ рджреЛрд╣рд░рд╛рдПрдВ", рдмрд░реНрдмрд╛рдж рдХрд░реЗрдВ)
exten => 100, n (vasya), рдбрд╛рдпрд▓ (SIP / 101)


рдПрдХ рдереАрдо рдкрд░ рдмрджрд▓рд╛рд╡



рдмреНрдпреЛрд░рд╛

Google рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рдо рдХреЗ рд╕рд╛рде, рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ, рдФрд░ рдЗрд╕реЗ рдЙрди рдЦрд╛рдХреЛрдВ рдХреЛ рдмрдирд╛рддреЗ рд╕рдордп рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рдирдХреЗ рд╕рд╛рде рд╣рдо Google рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдо рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВрдЧреЗред

рдпрд╣рд╛рдБ рд░реЗрдХ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдореЗрд░рд╛ рдирд╛рдо рд╕рд┐рд░рд┐рд▓ рд╣реИ (рдЕрдВрдд рдореЗрдВ рджреЛ "рдПрд▓")ред рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП Google рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ "рд╕рд╛рдЗрд░рд┐рд▓" рдпрд╛ "рд╕рд┐рд░рд┐рд▓" рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдВрддрднрд╛рд╖рдг

рдПрдХ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рддреБрд▓рдирд╛ рдХреЛ рдХреБрдЫ рдФрд░ рддрдХрдиреАрдХреА рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЖрдкрдХреА рд░рд╛рдп рдФрд░ рд╕реБрдЭрд╛рд╡ рд╕реБрдирдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдФрд░ рдПрдХ рдкреИрдорд╛рдиреЗ рдкрд░ рдПрдХ рдЦреБрд▓рд╛ рдкреНрд░рд╢реНрди рдмрдирд╛ рд╣реБрдЖ рд╣реИ: рдпрджрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛, рд╕рднреА рддреБрд▓рдирд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧреЗрдЧрд╛, рдпрджрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╡реЗ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд▓рдЧрднрдЧ 20 рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреЗ рдкреАрдмреАрдПрдХреНрд╕ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╡рд┐рдзрд┐ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдпреБрдкреАрдбреА

рдЙрджрд╛рд╣рд░рдг

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдереЛрдбрд╝реА рдЕрд▓рдЧ рдбрд╛рдпрд▓ рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред

рдбрд╛рдпрд▓ рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрджрд╛рд╣рд░рдг:
exten => 8251.1, рдЙрддреНрддрд░ ()
exten => 8251, n, MixMonitor (/ var / spool / asterisk / Monitor / 8251 / $ {CDR (start)} - тАЛтАЛ$ {DST-NUM} - $ {ID_CALL} -full.wav)
exten => 8251, n, agi (googletts.agi, "рдХреГрдкрдпрд╛ рдЙрд╕ рдЧреНрд░рд╛рд╣рдХ рдХрд╛ рдирд╛рдо рдмрддрд╛рдПрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред", ru)
exten => 8251, n (рд░рд┐рдХреЙрд░реНрдб), рдПрдЧреА (рднрд╛рд╖рдг-рд░рд┐рдХреЛрдЧ.рдЧреА, рдЖрд░рдпреВ-рдЖрд░рдпреВ)
exten => 8251, n, GotoIf ($ [$ ["$ {рд╕реНрдерд┐рддрд┐}" = "0"] рдФрд░ $ ["$ {рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕}"> "0.5"]] if1: рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ)
exten => 8251, n (if1), GotoIf ($ ["$ {utterance}" = = "рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░"]? al: retry)
exten => 8251, n (al), рдбрд╛рдпрд▓ (SIP / 8201)
exten => 8251, n (рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕), agi (googletts.agi, "рдХреГрдкрдпрд╛ рджреЛрд╣рд░рд╛рдПрдВ?", рдмрд░реНрдмрд╛рдж)
exten => 8251, n, goto (рд░рд┐рдХреЙрд░реНрдб)

рд╕рдлрд▓ рдорд╛рдиреНрдпрддрд╛ рдХреЗ рд╕рд╛рде рд░рд┐рдХреЙрд░реНрдб рд▓рд┐рдВрдХ ред
рдПрд╕реНрдЯрд░рд╕реНрдЯрд░ рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖:
- рдирд┐рд╖реНрдкрд╛рджрди [8251 @ рдЖрдВрддрд░рд┐рдХ рд╕реЗ: 1] рдЙрддреНрддрд░ ("рдПрд╕рдЖрдИрдкреА / 8211-00000000", "") рдирдП рд╕реНрдЯреИрдХ рдореЗрдВ
- рдирд┐рд╖реНрдкрд╛рджрди [8251 @ рд╕реЗ-рдЖрдВрддрд░рд┐рдХ: 2] рдорд┐рдХреНрд╕рдордиреАрдЯрд░ ("рдПрд╕рдЖрдИрдкреА / 8211-00000000", "/ var / рд╕реНрдкреВрд▓ / рддрд╛рд░рд╛рдВрдХрди / рдореЙрдирд┐рдЯрд░ / 8251 / 2013-04-24 10:28:03 --- рдкреВрд░реНрдгред Wav" ) рдирдП рд╕реНрдЯреИрдХ рдореЗрдВ
- [8251 @ рд╕реЗ-рдЖрдВрддрд░рд┐рдХ: 3] AGI ("SIP / 8211-00000000", "googletts.agi," рдХреГрдкрдпрд╛ рдЙрд╕ рдЧреНрд░рд╛рд╣рдХ рдХрд╛ рдирд╛рдо рдмрддрд╛рдПрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред ", Ru") рдирдП рд╕реНрдЯреИрдХ рдореЗрдВред
- AGI рд╕реНрдХреНрд░рд┐рдкреНрдЯ /var/lib/asterisk/agi-bin/googletts.agi рд▓реЙрдиреНрдЪ рдХреА рдЧрдИ
== рдорд┐рдХреНрд╕рдореЙрдирд┐рдЯрд░ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ SIP / 8211-00000000 рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ
- '/ tmp / 16ae8d012843179807cfdabd9a34608f' рдЦреЗрд▓рдирд╛ (рдмрдЪрдирд╛_digits =) (sample_offset 0)
- '/ tmp / ef3ccb070117857a8045932052f3fd7b' рдЦреЗрд▓рдирд╛ (рдПрд╕реНрдХреЗрдк_рдбрд┐рдЬрд╛рдЗрдЯ =) (рдирдореВрдирд╛_рдСрдлрд╕реЗрдЯ 0)
- <SIP / 8211-00000000> AGI Script googletts.agi рдкреВрд░реА рд╣реБрдИ, рд╡рд╛рдкрд╕реА 0
- рдирдП рд╕реНрдЯреИрдХ рдореЗрдВ [8251 @ рд╕реЗ-рдЖрдВрддрд░рд┐рдХ: 4] рдПрдЬреАрдЖрдИ ("рдПрд╕рдЖрдИрдкреА / 8211-00000000", "рднрд╛рд╖рдг-рд░рд┐рдХреЛрдЧ.рдЧреА, рдЖрд░рдпреВ-рдЖрд░рдпреВ")ред
- AGI рд╕реНрдХреНрд░рд┐рдкреНрдЯ /var/lib/asterisk/agi-bin/speech-recog.agi рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛
- <SIP / 8211-00000000> 'beep.ulaw' рдЦреЗрд▓рдирд╛ (рднрд╛рд╖рд╛ 'en')
- <SIP / 8211-00000000> AGI рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рдг-recog.agi рдкреВрд░рд╛, рд╡рд╛рдкрд╕реА 0
- рдирдП рд╕реНрдЯреИрдХ рдореЗрдВ [8251 @ рд╕реЗ-рдЖрдВрддрд░рд┐рдХ: 5] рдЧреЛрдЯреЛрдЖрдИрдПрдл ("рдПрд╕рдЖрдИрдкреА / 8211-00000000", "1? If1: рд░рд┐рдЯреНрд░реА")?
- рдЧреЛрдЯреЛ (рдЖрдВрддрд░рд┐рдХ, 8251.6 рд╕реЗ)
- рдирдП рд╕реНрдЯреИрдХ рдореЗрдВ [8251 @ рд╕реЗ-рдЖрдВрддрд░рд┐рдХ: 6] рдЧреЛрдЯреЛрдЖрдИрдПрдл ("рдПрд╕рдЖрдИрдкреА / 8211-00000000", "1? рдЕрд▓: рд░рд┐рдЯреНрд░реА")ред
- рдЧреЛрдЯреЛ (рдЖрдВрддрд░рд┐рдХ, 8251.7 рд╕реЗ)
- рдирдП рд╕реНрдЯреИрдХ рдореЗрдВ [8251 @ рд╕реЗ-рдЖрдВрддрд░рд┐рдХ: 7] рдбрд╛рдпрд▓ ("рдПрд╕рдЖрдИрдкреА / 8211-00000000", "рдПрд╕рдЖрдИрдкреА / 8201")
== рдПрд╕рдЖрдИрдкреА рдЖрд░рдЯреАрдкреА рдЯреАрдУрдПрд╕ рдмрд┐рдЯреНрд╕ 184 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
== SIP RTP CoS рдорд╛рд░реНрдХ 5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
- SIP / 8201 рдкрд░ рдХреЙрд▓ рдХрд░реЗрдВ
- SIP / 8201-00000001 рдмрдЬ рд░рд╣рд╛ рд╣реИ
- SIP / 8201-00000001 рдиреЗ SIP / 8211-00000000 рдХрд╛ рдЬрд╡рд╛рдм рджрд┐рдпрд╛
- рдирд┐рд╖реНрдкрд╛рджрди [h @ from-internal: 1] рд╣реИрдВрдЧрдЕрдк ("SIP / 8211-00000000", "") рдирдП рд╕реНрдЯреИрдХ рдореЗрдВ
== рд╕реНрдкреЙрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди (рдЖрдВрддрд░рд┐рдХ, рдПрдЪ, 1) 'рдПрд╕рдЖрдИрдкреА / 8211-00000000' рдкрд░ рдЧреИрд░-рд╢реВрдиреНрдп рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЧрдпрд╛
== рд╕реНрдкреЙрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди (рдЖрдВрддрд░рд┐рдХ, 8251, 7) 'рдПрд╕рдЖрдИрдкреА / 8211-000000' рдкрд░ рдЧреИрд░-рд╢реВрдиреНрдп рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЧрдпрд╛ред
== рдорд┐рдХреНрд╕рдореЙрдирд┐рдЯрд░ рдирдЬрд╝рджреАрдХреА рдлрд╝рд┐рд▓реНрдорд╕реНрдЯреНрд░реАрдо
== рдПрдВрдб рдорд┐рдХреНрд╕рдордиреАрдЯрд░ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдПрд╕рдЖрдИрдкреА / 8211-00000000

рд╕рдлрд▓ рдорд╛рдиреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдирд╣реАрдВред
рдПрд╕реНрдЯрд░рд╕реНрдЯрд░ рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖:
- рдирд┐рд╖реНрдкрд╛рджрди [8251 @ рдЖрдВрддрд░рд┐рдХ рд╕реЗ: 1] рдЙрддреНрддрд░ ("рдПрд╕рдЖрдИрдкреА / 8211-00000002", "") рдирдП рд╕реНрдЯреИрдХ рдореЗрдВ
- рдирд┐рд╖реНрдкрд╛рджрди [8251 @ рд╕реЗ-рдЖрдВрддрд░рд┐рдХ: 2] рдорд┐рдХреНрд╕рдордиреАрдЯрд░ ("рдПрд╕рдЖрдИрдкреА / 8211-00000002", "/ var / рд╕реНрдкреВрд▓ / рддрд╛рд░рд╛рдВрдХрди / рдореЙрдирд┐рдЯрд░ / 8251 / 2013-04-24 10:36:29" full.wav " ) рдирдП рд╕реНрдЯреИрдХ рдореЗрдВ
- [8251 @ рд╕реЗ-рдЖрдВрддрд░рд┐рдХ: 3] AGI ("SIP / 8211-00000002", "googletts.agi," рдХреГрдкрдпрд╛ рдЙрд╕ рдЧреНрд░рд╛рд╣рдХ рдХрд╛ рдирд╛рдо рдмрддрд╛рдПрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред ", Ru") рдирдП рд╕реНрдЯреИрдХ рдореЗрдВред
- AGI рд╕реНрдХреНрд░рд┐рдкреНрдЯ /var/lib/asterisk/agi-bin/googletts.agi рд▓реЙрдиреНрдЪ рдХреА рдЧрдИ
== рдорд┐рдХреНрд╕рдореЙрдирд┐рдЯрд░ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ SIP / 8211-00000002 рд╢реБрд░реВ рдХрд░реЗрдВ
- '/ tmp / 16ae8d012843179807cfdabd9a34608f' рдЦреЗрд▓рдирд╛ (рдмрдЪрдирд╛_digits =) (sample_offset 0)
- '/ tmp / ef3ccb070117857a8045932052f3fd7b' рдЦреЗрд▓рдирд╛ (рдПрд╕реНрдХреЗрдк_рдбрд┐рдЬрд╛рдЗрдЯ =) (рдирдореВрдирд╛_рдСрдлрд╕реЗрдЯ 0)
- <SIP / 8211-00000002> AGI Script googletts.agi рдкреВрд░реА рд╣реБрдИ, рд╡рд╛рдкрд╕реА 0
- рдирдП рд╕реНрдЯреИрдХ рдореЗрдВ [8251 @ рд╕реЗ-рдЖрдВрддрд░рд┐рдХ: 4] рдПрдЬреАрдЖрдИ ("рдПрд╕рдЖрдИрдкреА / 8211-00000002", "рднрд╛рд╖рдг-рд░рд┐рдХреЛрдЧ.рдЧреА, рдЖрд░рдпреВ-рдЖрд░рдпреВ")ред
- AGI рд╕реНрдХреНрд░рд┐рдкреНрдЯ /var/lib/asterisk/agi-bin/speech-recog.agi рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛
- <SIP / 8211-00000002> 'beep.ulaw' рдЦреЗрд▓рдирд╛ (рднрд╛рд╖рд╛ 'en')
- <SIP / 8211-00000002> AGI рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рдг-recog.agi рдкреВрд░рд╛, 0 рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛
- рдирдП рд╕реНрдЯреИрдХ рдореЗрдВ [8251 @ рд╕реЗ-рдЖрдВрддрд░рд┐рдХ: 5] рдЧреЛрдЯреЛрдЖрдИрдлрд╝ ("рдПрд╕рдЖрдИрдкреА / 8211-00000002", "1? рдЗрдлрд╝ 1: рд░рд┐рдЯреНрд░реА")ред
- рдЧреЛрдЯреЛ (рдЖрдВрддрд░рд┐рдХ, 8251.6 рд╕реЗ)
- рдирдП рд╕реНрдЯреИрдХ рдореЗрдВ [8251 @ рд╕реЗ-рдЖрдВрддрд░рд┐рдХ: 6] рдЧреЛрдЯреЛрдЖрдИрдПрдл ("рдПрд╕рдЖрдИрдкреА / 8211-00000002", "0? рдЕрд▓: рд░рд┐рдЯреНрд░реА")ред
- рдЧреЛрдЯреЛ (рдЖрдВрддрд░рд┐рдХ, 8251.8 рд╕реЗ)
- рдирд┐рд╖реНрдкрд╛рджрди [8251 @ рдЖрдВрддрд░рд┐рдХ рд╕реЗ: 8] AGI ("SIP / 8211-00000002", "googletts.agi," рдХреГрдкрдпрд╛ рджреЛрд╣рд░рд╛рдПрдВ? ", Ru") рдирдП рд╕реНрдЯреИрдХ рдореЗрдВ?
- AGI рд╕реНрдХреНрд░рд┐рдкреНрдЯ /var/lib/asterisk/agi-bin/googletts.agi рд▓реЙрдиреНрдЪ рдХреА рдЧрдИ
- 'tmp / 0c5de11c17dda57dabeaebe335110036' рдЦреЗрд▓рдирд╛ (рдмрдЪрдирд╛_digits =) (sample_offset 0)
- <SIP / 8211-00000002> AGI Script googletts.agi рдкреВрд░реА рд╣реБрдИ, рд╡рд╛рдкрд╕реА 0

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


All Articles