рдкрд╛рд╡реЗрд▓ 2.0: рдЬреЗрдПрд╕ рдкрд░ рд░реЗрдкреНрдЯрд┐рд▓реЙрдЗрдб рд╕рд▓рд╛рд╣рдХрд╛рд░, рд╕реЙрдХреЗрдЯреНрд╕ рдФрд░ рдЯреЗрд▓реАрдлреЛрдиреА рдХреЗ рд╕рд╛рде рдиреЛрдбред рдЬреЗрдПрд╕

рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ 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();
}
})
view raw pavel-backend.js hosted with тЭд by GitHub

рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдЕрдзрд┐рдХрд╛рдВрд╢ рддрд░реНрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдереЗред рдЗрд╕ рдУрд░ рдПрдХ рд░реЗрдкреНрдЯрд┐рд▓реЙрдЗрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ ...

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ



рдЙрддреНрддрд░: рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧред рдЦреБрдж рдЗрдВрд╕реНрдЯрд╛рдЧреНрд░рд╛рдо рдЕрд░рдиреА рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ред

рд╕реНрдкрд╖реНрдЯ рд╕реЗ: рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдПрд╕рдЖрд░ рдорд╛рдиреНрдпрддрд╛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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;
    }
    view raw shuffle.js hosted with тЭд by GitHub
  • рдЗрдирдХрдорд┐рдВрдЧ рдХреЙрд▓ ( 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))
    });
    }
    view raw onCallConnected.js hosted with тЭд by GitHub
  • рдмрд╕ рдКрдкрд░ рдХрд╛ рдирд╛рдо рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИ , рдЗрд╕рдореЗрдВ рд╕рд┐рд░реНрдл рд╕рд╡рд╛рд▓ рдорд┐рд╢реНрд░рд┐рдд рд╣реИрдВ, рдХрд╛рдЯреЗ рдЧрдП рд╣реИрдВ рдФрд░ рдЪрд┐рддреНрд░ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд╕рд╛рде рдмреИрдХрдПрдВрдб рдкрд░ рднреЗрдЬреЗ рдЧрдП рд╣реИрдВ:

    рд╢реЛ рдХреЛрдб
    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
    }
    }
    view raw startGame.js hosted with тЭд by GitHub
  • 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);
    }
    view raw onRecognitionResult.js hosted with тЭд by GitHub

    рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЕрдЧрд▓реЗ рдкреНрд░рд╢реНрди рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдпрд╛ рдЧреЗрдо рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдФрд░ рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдЪрд░ рднреА рдмрдврд╝рд╛рддрд╛ рд╣реИ;
  • рдЕрдВрддрд┐рдо рдЧреЗрдордлрд┐рдирд┐рд╢реНрдб рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдкреНрд░рдЪрд╛рд░ рдХреЛрдб рдЬреАрддрдиреЗ рдкрд░ рдЕрдВрдХреЛрдВ рдХреА рд░рд╛рд╢рд┐ рдХрд╛ рдмреИрдХрдПрдВрдб рджреЗрддрд╛ рд╣реИ - рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлреЛрди рдкрд░ рд╕реБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рд╡рд▓рд┐рдХ рдиреЗ рдЬреАрдд рдХреА рдЖрд╡рд╛рдЬрд╝ рджреА; рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реИрдВрдЧрдЕрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╕реВрдЪреА 300 рд▓рд╛рдЗрдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрддреА рд╣реИ, рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдЯреБрдХрдбрд╝рд╛ рдкрд╣рдЪрд╛рди рдкрд░рд┐рдгрд╛рдо, onRecognitionResult рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╣реИред

рдЬреАрд╡рд╛рд╢реНрдо рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ



рдЙрддреНрддрд░: рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдм рдХреБрдЫ рд╣реИред

рдкрд╛рд╡реЗрд▓ рдПрдХ рдбрд╛рдпрдирд╛рд╕реЛрд░ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣ рдЕрджреНрдпрддрд┐рдд рд░рд╣рддрд╛ рд╣реИ: рдпрд╣ рд╕рд╛рд▓-рджрд░-рд╕рд╛рд▓ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рднреА рдордЬрд╝рд╛рдХ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИред рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдк рд╣рдорд╛рд░реЗ рд░реЗрдкреНрдЯрд┐рд▓реЙрдЗрдб рдХреЗ рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЗрд╡ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВрдЧреЗред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдкрдиреА рд░рд╛рдп рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ, рд╕реНрд╡рд╕реНрде рд░рд╣реЗрдВ рдФрд░ рдпрд╛рдж рд░рдЦреЗрдВ - рдкреЙрд▓ рдЖрдкрд╕реЗ рдкреНрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ!

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


All Articles