2d414cd3f4deb77309a03d7c913c2ec1b814f362
[motion2.git] / server / services / agi / scripts / tilde / asr / lib / api.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0xa7af=['hypotheses','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','open','message','bluebird','lodash','moment','crypto','../../../../../../config/logger','info','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','update','digest','hex','Open\x20Tilde\x20ASR\x20socket','unix','stringify','createReadStream','data','send','close','EOS','terminate','status','result','Tilde\x20ASR\x20hypoteses','transcript'];(function(_0xc696f0,_0x39a3c9){var _0x3df40b=function(_0x342fe1){while(--_0x342fe1){_0xc696f0['push'](_0xc696f0['shift']());}};_0x3df40b(++_0x39a3c9);}(_0xa7af,0xc4));var _0xfa7a=function(_0x4e61bc,_0x1cff51){_0x4e61bc=_0x4e61bc-0x0;var _0x4e0fb1=_0xa7af[_0x4e61bc];return _0x4e0fb1;};'use strict';var BPromise=require(_0xfa7a('0x0'));var _=require(_0xfa7a('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xfa7a('0x2'));var crypto=require(_0xfa7a('0x3'));var logger=require(_0xfa7a('0x4'))('agi');module['exports']=function(_0x4f5905,_0x58dbe8,_0x3f6b52,_0x28aef4){return new BPromise(function(_0x1ac6ac,_0x4b3bb9){logger[_0xfa7a('0x5')]('Tilde\x20URI',_0x28aef4||_0xfa7a('0x6'));var _0x585f58=new WebSocket(_0x28aef4||_0xfa7a('0x6'),{'perMessageDeflate':![]});var _0x31a7e7='';var _0x1f19c4='0';var _0x10c056='1';var _0x13b427=_0xfa7a('0x7');function _0x15d50(_0x28b68b){var _0x55d112=crypto[_0xfa7a('0x8')](_0xfa7a('0x9'));_0x55d112[_0xfa7a('0xa')](_0x28b68b);return _0x55d112[_0xfa7a('0xb')](_0xfa7a('0xc'));}function _0x4241e0(){try{logger['info'](_0xfa7a('0xd'));var _0x570814=moment()[_0xfa7a('0xe')]();var _0xe36af6=_0x15d50(_0x570814+_0x58dbe8+_0x3f6b52);_0x585f58['send'](JSON[_0xfa7a('0xf')]({'appID':_0x58dbe8,'timestamp':_0x570814,'appKey':_0xe36af6}));var _0x4a6595=fs[_0xfa7a('0x10')](_0x4f5905);_0x4a6595['on'](_0xfa7a('0x11'),function(_0x329420){_0x585f58[_0xfa7a('0x12')](_0x329420);});_0x4a6595['on'](_0xfa7a('0x13'),function(){_0x585f58[_0xfa7a('0x12')](_0xfa7a('0x14'));});}catch(_0x2c05f9){logger['error']('Tilde\x20ASR\x20send\x20error',JSON[_0xfa7a('0xf')](_0x2c05f9));_0x585f58[_0xfa7a('0x15')]();}}function _0x587c59(_0x217c02){try{if(_0x217c02){var _0x469a68=JSON['parse'](_0x217c02);switch(_0x469a68[_0xfa7a('0x16')]){case 0x0:if(_0x469a68['result']){if(_0x469a68[_0xfa7a('0x17')]['final']){logger[_0xfa7a('0x5')](_0xfa7a('0x18'),JSON['stringify'](_0x469a68['result']['hypotheses']));_0x31a7e7=_0x469a68[_0xfa7a('0x17')]['hypotheses'][0x0][_0xfa7a('0x19')];_0x1f19c4=_0x469a68[_0xfa7a('0x17')][_0xfa7a('0x1a')][0x0]['likelihood'];_0x10c056='0';_0x13b427='Success.';_0x585f58[_0xfa7a('0x15')]();}}break;case 0x1:logger['info'](_0xfa7a('0x7'));_0x10c056='1';_0x13b427=_0xfa7a('0x7');break;case 0x2:logger[_0xfa7a('0x5')]('Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.');_0x10c056='2';_0x13b427=_0xfa7a('0x1b');break;case 0x9:logger[_0xfa7a('0x5')](_0xfa7a('0x1c'));_0x10c056='9';_0x13b427='Not\x20available.\x20Max\x20load\x20limit\x20reached.';break;case 0xa:logger['info']('Authentication\x20failed.');_0x10c056='10';_0x13b427=_0xfa7a('0x1d');break;case 0xb:logger[_0xfa7a('0x5')](_0xfa7a('0x1e'));_0x10c056='11';_0x13b427='All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.';}}}catch(_0x129d6e){logger[_0xfa7a('0x1f')]('Tilde\x20ASR\x20parse\x20error',JSON[_0xfa7a('0xf')](_0x129d6e));_0x585f58[_0xfa7a('0x15')]();}}function _0xa93515(){logger[_0xfa7a('0x5')](_0xfa7a('0x20'));_0x1ac6ac({'transcript':_0x31a7e7,'confidence':_0x1f19c4,'status':_0x10c056,'status_message':_0x13b427});}function _0x3c8987(_0xa8a8fb){logger[_0xfa7a('0x1f')](_0xfa7a('0x21'));if(!_[_0xfa7a('0x22')](_0xa8a8fb)){logger['error'](_['isObject'](_0xa8a8fb)?JSON[_0xfa7a('0xf')](_0xa8a8fb):_0xa8a8fb);}}_0x585f58['on'](_0xfa7a('0x23'),_0x4241e0);_0x585f58['on'](_0xfa7a('0x24'),_0x587c59);_0x585f58['on'](_0xfa7a('0x13'),_0xa93515);_0x585f58['on']('error',_0x3c8987);});};