рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ INTERCOM'18 рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдФрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдорд╛рдорд▓реЛрдВ рдХреЗ рд╕рд╛рде рдореГрддреНрдпреБ рд╣реЛ рдЧрдИред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╕рдореНрдореЗрд▓рди рдХреЗ рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рдХрд╛ рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рдЬреЛ рд▓реЛрдЧ рдкреВрд░реА рдХреАрдордд рдкрд░ рдЯрд╛рдЗрдордкреИрдб рдХреЗ рд▓рд┐рдП рдЯрд┐рдХрдЯ рдЦрд░реАрдж рд╕рдХрддреЗ рдереЗ, рдпрд╛ ...
рд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рд╕рд░реАрд╕реГрдк рд╕рд▓рд╛рд╣рдХрд╛рд░ рд╕реЗ рдЫреВрдЯ рдкреНрд░рд╛рдкреНрдд
рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓, рдЗрд╕рдиреЗ рдПрдХ рдкрд░рд┐рдЪрд┐рдд рдХреЙрд▓рдмреИрдХ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд┐рдпрд╛: рдЖрдк рдлреЛрди рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рдкрд╛рд╡реЗрд▓ рдЖрдкрдХреЛ рдПрдХ рдорд┐рдирдЯ рдореЗрдВ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рд╢реНрди рдкреВрдЫрддрд╛ рд╣реИ; рдЕрдзрд┐рдХ рд╕рд╣реА рдЙрддреНрддрд░, рдЙрдЪреНрдЪ рдЫреВрдЯред рдЗрд╕ рдмрд╛рд░ рд╣рдордиреЗ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдФрд░ рдореБрджреНрджреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рдЧрдпрд╛ред рдХрдЯреМрддреА рдХреЗ рддрд╣рдд - рд╡рд░реНрддрдорд╛рди рдиреЛрдб рдФрд░ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХреЗ рд╕рд╛рде рдкрд╛рд╡рд▓рд┐рдХ 2.0 рд╣рд┐рдореНрдордд, рдЦреЛрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЪреМрдЧрд╝рд╛ рдкрд╣рдирдирд╛ рди рднреВрд▓реЗрдВред

рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдпрд╛рдВрддреНрд░рд┐рдХреА
рдЖрдк рдПрдХ рдбреЗрд╕реНрдХрдЯреЙрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ
intercomconf.com рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдирд┐рдЪрд▓реЗ рджрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ рдкрд╛рд╡рд▓рд┐рдХ рдЪреИрдЯ рдХреЗ рд░реВрдк рдореЗрдВ "рдЙрдарддрд╛ рд╣реИ" рдФрд░ рдЧреЗрдо рдЦреЗрд▓рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддрд╛ рд╣реИред рдирдВрдмрд░ рджрд░реНрдЬ рдХрд░реЗрдВ, "рдпрд╣рд╛рдВ рдореЗрд░рд╛ рдирдВрдмрд░ рд╣реИ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ - рдЗрд╕рдХреЗ рдмрд╛рдж, рдкрд╛рд╡реЗрд▓ рдЖрдкрдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рд╣рдорд╛рд░реЗ рдмреИрдХрдПрдВрдб рдХреЗ рдмреАрдЪ рдПрдХ рд╕рддреНрд░ рдХреЛ рд▓рд┐рдлреНрдЯ рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмрдврд╝ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдирдВрдмрд░ рдиреЗ рдЕрднреА рддрдХ рдбреНрд░реЙ рдореЗрдВ рднрд╛рдЧ рдирд╣реАрдВ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рдкреЙрд▓ 8-800 рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░реЗрдЧрд╛ред рдпрд╣рд╛рдБ Voximplant рдмрд╛рджрд▓ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рд╢реНрдиреЛрддреНрддрд░реА рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ:
рдЙрддреНрддрд░: рд╕рдордп рд╕реАрдорд╛ / рд╕рдордп рд╕реАрдорд╛ред рдореЗрдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдпрд╣ рдареАрдХ рд╣реИ редрд╣рд╛рдВ, рдкрд╣реЗрд▓рд┐рдпрд╛рдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдереАрдВред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╢реНрди рдХреЗ рд▓рд┐рдП рддреАрди рдкреНрд░рдпрд╛рд╕ рдХрд┐рдП рдЧрдП рдереЗ: рдкрд╣рд▓реЗ рдПрдХ "рдЬрдЯрд┐рд▓" рдЪрд┐рддреНрд░ рдерд╛, рдлрд┐рд░ рдпрд╣ рд╕рд░рд▓ рдерд╛ рдФрд░ рдЕрдВрдд рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдерд╛ред рдкрд╣рд▓реЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдиреЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЕрдВрдХ рджрд┐рдП; 5 рдкрд╣реЗрд▓рд┐рдпреЛрдВ рдХреЗ рдмрд╛рдж, рдкрд╛рд╡реЗрд▓ рдиреЗ рдЕрдВрдХ рдЧрд┐рдирд╛ рдФрд░ рдпрд╛ рддреЛ рдореБрдлреНрдд рдЯрд┐рдХрдЯ рдпрд╛ 10% -30% рдХреА рдЫреВрдЯ рджреАред
рдЙрд╕реА рд╕рдордп, рд╣рдорд╛рд░рд╛ рд░реЗрдкреНрдЯрд┐рд▓реЙрдЗрдб рдХрд╛рдлреА рд╕реНрдорд╛рд░реНрдЯ рд╣реИ: рдЗрд╕рдиреЗ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЬрд╛рд░реА рдХрд┐рдП (рдпрджрд┐ рдЖрдкрдиреЗ рдлреЛрди рдирдВрдмрд░ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рджрд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП), рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рд╕рдВрдЦреНрдпрд╛ рдкрд╣рд▓реЗ рд╣реА рдбреНрд░рд╛рдЗрдВрдЧ рдореЗрдВ рднрд╛рдЧ рд▓реЗ рдЪреБрдХреА рдереА ("рдореБрдЭреЗ рдЕрдкрдиреЗ рдЧреИрд░-рдореМрдЬреВрдж рдореЛрдмрд╛рдЗрд▓ рдХреА рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рдкрд░рд┐рдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдПрдХ рд╣рд╛рде рдореЗрдВ рдПрдХ рдкреНрд░рдпрд╛рд╕ - рдпреЗ рдирд┐рдпрдо рд╣реИрдВред ") рдФрд░, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рдХреНрд▓рд╛рдЙрдб рдХреЛ рд╕рд╣рд╕рдВрдмрджреНрдз рдХрд┐рдпрд╛ред рдпрд╣ рд╕рд╛рд╣рд╕реА рдЖрдИрд╡реАрдЖрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рдЬрдмрдбрд╝реЗ рдореЗрдВ рдкрд╛рдЧрд▓рдкрди Reptilians
рдЙрддреНрддрд░: рдХреЙрд▓ рд╕реЗрдВрдЯрд░ рдирдл рдиреЗ рдХрд╣рд╛редрдЗрд╕реЗ рд╕реВрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдкреЙрд▓ 2.0 рд╣рдорд╛рд░реЗ рдмрд╛рджрд▓ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рдПрдХ рдЖрдИрд╡реАрдЖрд░ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕рднреА рд░реЗрдкреНрдЯрд┐рд▓реЙрдЗрдб рддрд░реНрдХ рдХреЛ рдПрдХ рдЬреЗрдПрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд░реНрддрдиреА рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рд╣реИ рдирд╛? рд╣рд╛рдВ, рд▓реЗрдХрд┐рди рдирд╣реАрдВред
рдкрд╛рд╡реЗрд▓ рдХрд╛ рджреВрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рд╕рд╛рдЗрдЯ рдкрд░, рдкрд╛рд╡реЗрд▓ рдкреБрди: рдкреНрд░рджрд░реНрд╢рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлреЛрди рдкрд░ рд╡рд╣ рдЖрдкрдХреЗ рдЙрддреНрддрд░ рд╕реБрдирддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЪрд┐рддреНрд░ рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдпрд╣ рдЗрдВрдЯрд░реИрдХреНрд╢рди рд╣рдорд╛рд░реЗ
HTTP рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ :
- рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ StartScenarios рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдЧрд╛ ред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╡рд┐рдзрд┐ рдХреНрд░рдорд╢рдГ рдореАрдбрд┐рдпрд╛_session_access_url рдФрд░ media_session_access_secure_url рд░рд┐рдЯрд░реНрди рджреЗрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреНрд░рдорд╢рдГ HTTP рдФрд░ HTTPS рдХреЗ рд▓рд┐рдП URL рд╣реЛрддреЗ рд╣реИрдВ;
- рдХреЛрдИ рдкреНрд░рд╛рдкреНрдд URL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ;
- рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ httpRequestAsync рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реА рдЫрд╡рд┐рдпрд╛рдВ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдХреИрд╕реЗ рдПрдХ рдХрд╕реНрдЯрдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ "рдкрдХрдбрд╝рдиреЗ" рдХреЗ рд▓рд┐рдП? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ,
httpRequestAsync рдореЗрдВ рдЖрдкрдХреЛ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп URL рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рд╣рд╛рдБ, рдЪрд┐рддреНрд░ - рдЙрдиреНрд╣реЗрдВ рднреА рдХрд╣реАрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдХреНрд▓рд╛рдЙрдб рдЬреЗрдПрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдордиреЗ
рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдкрд░ рдЕрдкрдиреЗ рдмреИрдХреЗрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
рд╕реЙрдХреЗрдЯ рдХреЗ рд╕рд╛рде рдпреБрдЧреНрдорд┐рддред
jio : рдЬрдм рд╡рд┐рдЬрд╝рд┐рдЯрд░ рдиреЗ рдирдВрдмрд░ рджрд░реНрдЬ рдХрд┐рдпрд╛, рддреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдиреЗ http рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреИрдХрдПрдВрдб рдХреЛ рдпрд╣ рдирдВрдмрд░ рджрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж http рд╕рддреНрд░ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдореЗрдВ рдПрдХ рд╕рддреНрд░ рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ред рдирддреАрдЬрддрди, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рд▓рдЧрд╛рддрд╛рд░ HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреИрдХрдПрдВрдб рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд┐рдпрд╛, рдФрд░ рдмреИрдХрдПрдВрдб рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡реЗрдм рд╕реЙрдХреЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рдЬрд▓реНрджреА рд╕реЗ рдЪрд┐рддреНрд░ рдФрд░ рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рдЕрдВрдХреЛрдВ рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдлреЗрдВрдХ рд╕рдХреЗрдВред
рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХреА рддрд░рдл, рдмреИрдХрдПрдВрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рдерд╛: | 'use strict'; |
| const express = require('express'); |
| const request = require('request'); |
| const low = require('lowdb'); |
| const FileSync = require('lowdb/adapters/FileSync'); |
| |
| var app = express(); |
| var http = require('http'); |
| var server = http.createServer(app); |
| var io = require('socket.io')(http).listen(server); |
| var session = require('express-session')({ |
| secret: 'secret', |
| resave: true, |
| saveUninitialized: true |
| }); |
| var sharedsession = require('express-socket.io-session'); |
| |
| var sockets = {}; |
| var PORT = process.env.PORT || 3001; |
| |
| app.use(session); |
| |
| io.use(sharedsession(session)); |
| |
| io.on('connection', function (socket) { |
| if (socket[socket.handshake.session.caller_id] === undefined && |
| socket.handshake.session.caller_id !== undefined) { |
| sockets[socket.handshake.session.caller_id] = socket |
| } |
| }); |
| |
| app.use((req, res, next) => { |
| let allowedOrigins = [ |
| // allowed hosts |
| ]; |
| let origin = req.headers.origin; |
| if (allowedOrigins.indexOf(origin) > -1) { |
| res.setHeader('Access-Control-Allow-Origin', origin); |
| } |
| res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept'); |
| res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,PATCH,OPTIONS'); |
| res.header('Access-Control-Allow-Credentials', true); |
| if (req.method === 'OPTIONS') { |
| res.sendStatus(200); |
| } else { |
| next(); |
| } |
| }) |
рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдЕрдзрд┐рдХрд╛рдВрд╢ рддрд░реНрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдереЗред рдЗрд╕ рдУрд░ рдПрдХ рд░реЗрдкреНрдЯрд┐рд▓реЙрдЗрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ ...
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ
рдЙрддреНрддрд░: рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧред рдЦреБрдж рдЗрдВрд╕реНрдЯрд╛рдЧреНрд░рд╛рдо рдЕрд░рдиреА рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛редрд╕реНрдкрд╖реНрдЯ рд╕реЗ: рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ
рдПрдПрд╕рдЖрд░ рдорд╛рдиреНрдпрддрд╛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
require(Modules.ASR);
рджрд┐рд▓рдЪрд╕реНрдк рд╕реЗ:
- рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рднреА рдЙрддреНрддрд░реЛрдВ рдФрд░ .jpg рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рд╢реНрди рдСрдмреНрдЬреЗрдХреНрдЯ рдерд╛;
рд╣рд░ рдмрд╛рд░ рдЬрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рддреА рдереА, рддреЛ рдлреЗрд░рдмрджрд▓ рд╕рд╣рд╛рдпрдХ рд╕рдорд╛рд░реЛрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
рд╢реЛ рдХреЛрдб | function shuffle(a) { |
| var j, x, i; |
| for (i = a.length - 1; i > 0; i--) { |
| j = Math.floor(Math.random() * (i + 1)); |
| x = a[i]; |
| a[i] = a[j]; |
| a[j] = x; |
| } |
| return a; |
| } |
- рдЗрдирдХрдорд┐рдВрдЧ рдХреЙрд▓ ( CallAlerting ) рдХреЗ рд▓рд┐рдП "рдЯреЙрдк-рд▓реЗрд╡рд▓" рд╣реИрдВрдбрд▓рд░ рдЕрджреНрд╡рд┐рддреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдлреЛрди рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХреЙрд▓ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рднреА рд╣реЛрддрд╛ рд╣реИред рдмрд╕ рдСрдирдХреЙрд▓рдХрдиреЗрдХреНрдЯреЗрдб рдХреЗ рдЕрдВрджрд░ рдмреИрдХрдПрдВрдб рдкрд░ рдХреЙрд▓ рд╣реИ (рдкрдврд╝реЗрдВ, рд╕реЙрдХреЗрдЯрд┐рдпреЛ рдХреЗ рд▓рд┐рдП):
рд╢реЛ рдХреЛрдб | VoxEngine.addEventListener(AppEvents.CallAlerting, async (e) => { |
| call.addEventListener(CallEvents.Connected, onCallConnected); |
| call.addEventListener(CallEvents.Disconnected, onCallDisconnected); |
| // ... |
| }) |
| |
| function onCallConnected(e) { |
| call.say(" , ! : , , <say-as stress='2'></say-as>." + |
| " , . . ??? !", |
| Language.RU_RUSSIAN_MALE); |
| call.addEventListener(CallEvents.PlaybackFinished, startGame); |
| call.record({ |
| stereo: true |
| }); |
| call.addEventListener(CallEvents.RecordStarted, async (rec) => { |
| let res = await Net.httpRequestAsync(ws + '/urlResult?caller_id=' + encodeURIComponent(caller_id) + '&url=' + |
| encodeURIComponent(rec.url)) |
| }); |
| } |
- рдмрд╕ рдКрдкрд░ рдХрд╛ рдирд╛рдо рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИ , рдЗрд╕рдореЗрдВ рд╕рд┐рд░реНрдл рд╕рд╡рд╛рд▓ рдорд┐рд╢реНрд░рд┐рдд рд╣реИрдВ, рдХрд╛рдЯреЗ рдЧрдП рд╣реИрдВ рдФрд░ рдЪрд┐рддреНрд░ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд╕рд╛рде рдмреИрдХрдПрдВрдб рдкрд░ рднреЗрдЬреЗ рдЧрдП рд╣реИрдВ:
рд╢реЛ рдХреЛрдб | async function startGame() { |
| call.removeEventListener(CallEvents.PlaybackFinished); |
| shuffle(questions); |
| questions = questions.slice(0, 5); |
| let res = await Net.httpRequestAsync(ws + '/voxResult?caller_id=' + encodeURIComponent(caller_id) + '&data=' + |
| encodeURIComponent(JSON.stringify({ |
| action: "start", |
| // qIndex attempts = 0 |
| data: questions[qIndex].pics[attempts], |
| points: points |
| }))); |
| try { |
| res = JSON.parse(res.text); |
| } catch (err) { |
| Logger.write(err); |
| } |
| if (res.result === true) { |
| Logger.write("===--- The Game has started! ---==="); |
| startASR(); // |
| wireCall(); // ASR |
| } |
| } |
- startASR рдПрдХ ASR рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдкрд╕рдВрджреАрджрд╛ рдорд╛рдиреНрдпрддрд╛ рд╢рдмреНрджрдХреЛрд╢ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЬрдм рдЦрд┐рд▓рд╛рдбрд╝реА рдЬрд╡рд╛рдм рдмреЛрд▓рддрд╛ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди ASR рдХреЛ рд░реЛрдХ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╕реБрдирд╛рдИ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ - onRecognitionResult ;
- onRecognitionResult рдЙрддреНрддрд░ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ:
let rr = e[0].replace(" ", "").replace(" ", "").replace(" ", "").replace(" ", ""); rr = rr.replace(/ /g, '');
рдФрд░ рдлрд┐рд░ рдпрд╣ рдкреНрд░рдпрд╛рд╕, рдЕрдВрдХ рдЧрд┐рдирдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдФрд░ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╛рдЬрд╝ рднреА рджреЗрддрд╛ рд╣реИ:
рд╢реЛ рдХреЛрдб | let found = questions[qIndex].answers.some(r => rr.indexOf(r) >= 0); |
| Logger.write("FOUND: " + found); |
| if (found) { |
| if (attempts == 0) { |
| points += 5; |
| call.say("<say-as stress='3'></say-as>! !", Language.RU_RUSSIAN_MALE); |
| } else if (attempts == 1) { |
| points += 3; |
| call.say("! .", Language.RU_RUSSIAN_MALE); |
| } else if (attempts == 2) { |
| points += 1; |
| call.say(" тАж . .", Language.RU_RUSSIAN_MALE); |
| } |
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЕрдЧрд▓реЗ рдкреНрд░рд╢реНрди рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдпрд╛ рдЧреЗрдо рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдФрд░ рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдЪрд░ рднреА рдмрдврд╝рд╛рддрд╛ рд╣реИ; - рдЕрдВрддрд┐рдо рдЧреЗрдордлрд┐рдирд┐рд╢реНрдб рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдкреНрд░рдЪрд╛рд░ рдХреЛрдб рдЬреАрддрдиреЗ рдкрд░ рдЕрдВрдХреЛрдВ рдХреА рд░рд╛рд╢рд┐ рдХрд╛ рдмреИрдХрдПрдВрдб рджреЗрддрд╛ рд╣реИ - рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлреЛрди рдкрд░ рд╕реБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рд╡рд▓рд┐рдХ рдиреЗ рдЬреАрдд рдХреА рдЖрд╡рд╛рдЬрд╝ рджреА; рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реИрдВрдЧрдЕрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╕реВрдЪреА 300 рд▓рд╛рдЗрдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрддреА рд╣реИ, рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдЯреБрдХрдбрд╝рд╛ рдкрд╣рдЪрд╛рди рдкрд░рд┐рдгрд╛рдо,
onRecognitionResult рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╣реИред
рдЬреАрд╡рд╛рд╢реНрдо рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ
рдЙрддреНрддрд░: рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдм рдХреБрдЫ рд╣реИредрдкрд╛рд╡реЗрд▓ рдПрдХ рдбрд╛рдпрдирд╛рд╕реЛрд░ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣ рдЕрджреНрдпрддрд┐рдд рд░рд╣рддрд╛ рд╣реИ: рдпрд╣ рд╕рд╛рд▓-рджрд░-рд╕рд╛рд▓ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рднреА рдордЬрд╝рд╛рдХ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИред рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдк рд╣рдорд╛рд░реЗ рд░реЗрдкреНрдЯрд┐рд▓реЙрдЗрдб рдХреЗ рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЗрд╡ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВрдЧреЗред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдкрдиреА рд░рд╛рдп рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ, рд╕реНрд╡рд╕реНрде рд░рд╣реЗрдВ рдФрд░ рдпрд╛рдж рд░рдЦреЗрдВ - рдкреЙрд▓ рдЖрдкрд╕реЗ рдкреНрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ!