10c53faa428d35343fe479039bda317744ce659d
[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 _0x4853=['sha1','update','Open\x20Tilde\x20ASR\x20socket','unix','stringify','createReadStream','data','send','close','error','Tilde\x20ASR\x20send\x20error','terminate','parse','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','likelihood','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.','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','message','lodash','moment','../../../../../../config/logger','agi','exports','info','Tilde\x20URI','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'];(function(_0x15c89c,_0x5468f0){var _0xc08e1c=function(_0x238e7a){while(--_0x238e7a){_0x15c89c['push'](_0x15c89c['shift']());}};_0xc08e1c(++_0x5468f0);}(_0x4853,0x143));var _0x3485=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x4853[_0xa464c9];return _0x3d73c4;};'use strict';var BPromise=require('bluebird');var _=require(_0x3485('0x0'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x3485('0x1'));var crypto=require('crypto');var logger=require(_0x3485('0x2'))(_0x3485('0x3'));module[_0x3485('0x4')]=function(_0x484417,_0x37849c,_0x4bba42,_0x24b5d1){return new BPromise(function(_0x1dd95a,_0x2394e5){logger[_0x3485('0x5')](_0x3485('0x6'),_0x24b5d1||_0x3485('0x7'));var _0x3ffe5b=new WebSocket(_0x24b5d1||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE',{'perMessageDeflate':![]});var _0x42f5c6='';var _0x3609cc='0';var _0x22fea5='1';var _0x304af3=_0x3485('0x8');function _0x327c3c(_0x2d9c3f){var _0x32fa7e=crypto[_0x3485('0x9')](_0x3485('0xa'));_0x32fa7e[_0x3485('0xb')](_0x2d9c3f);return _0x32fa7e['digest']('hex');}function _0x1e2c62(){try{logger['info'](_0x3485('0xc'));var _0x23046f=moment()[_0x3485('0xd')]();var _0x2b1108=_0x327c3c(_0x23046f+_0x37849c+_0x4bba42);_0x3ffe5b['send'](JSON[_0x3485('0xe')]({'appID':_0x37849c,'timestamp':_0x23046f,'appKey':_0x2b1108}));var _0x4c1606=fs[_0x3485('0xf')](_0x484417);_0x4c1606['on'](_0x3485('0x10'),function(_0x982ee8){_0x3ffe5b[_0x3485('0x11')](_0x982ee8);});_0x4c1606['on'](_0x3485('0x12'),function(){_0x3ffe5b[_0x3485('0x11')]('EOS');});}catch(_0x1aaeb6){logger[_0x3485('0x13')](_0x3485('0x14'),JSON['stringify'](_0x1aaeb6));_0x3ffe5b[_0x3485('0x15')]();}}function _0x508dae(_0x27d072){try{if(_0x27d072){var _0x5d2e67=JSON[_0x3485('0x16')](_0x27d072);switch(_0x5d2e67['status']){case 0x0:if(_0x5d2e67[_0x3485('0x17')]){if(_0x5d2e67[_0x3485('0x17')][_0x3485('0x18')]){logger['info'](_0x3485('0x19'),JSON[_0x3485('0xe')](_0x5d2e67[_0x3485('0x17')][_0x3485('0x1a')]));_0x42f5c6=_0x5d2e67[_0x3485('0x17')]['hypotheses'][0x0]['transcript'];_0x3609cc=_0x5d2e67[_0x3485('0x17')]['hypotheses'][0x0][_0x3485('0x1b')];_0x22fea5='0';_0x304af3='Success.';_0x3ffe5b[_0x3485('0x15')]();}}break;case 0x1:logger[_0x3485('0x5')](_0x3485('0x8'));_0x22fea5='1';_0x304af3=_0x3485('0x8');break;case 0x2:logger[_0x3485('0x5')](_0x3485('0x1c'));_0x22fea5='2';_0x304af3=_0x3485('0x1c');break;case 0x9:logger[_0x3485('0x5')](_0x3485('0x1d'));_0x22fea5='9';_0x304af3='Not\x20available.\x20Max\x20load\x20limit\x20reached.';break;case 0xa:logger[_0x3485('0x5')]('Authentication\x20failed.');_0x22fea5='10';_0x304af3=_0x3485('0x1e');break;case 0xb:logger[_0x3485('0x5')](_0x3485('0x1f'));_0x22fea5='11';_0x304af3='All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.';}}}catch(_0x29b6f4){logger[_0x3485('0x13')]('Tilde\x20ASR\x20parse\x20error',JSON[_0x3485('0xe')](_0x29b6f4));_0x3ffe5b[_0x3485('0x15')]();}}function _0x349fc6(){logger[_0x3485('0x5')](_0x3485('0x20'));_0x1dd95a({'transcript':_0x42f5c6,'confidence':_0x3609cc,'status':_0x22fea5,'status_message':_0x304af3});}function _0x17fcd1(_0x515e91){logger[_0x3485('0x13')](_0x3485('0x21'));if(!_[_0x3485('0x22')](_0x515e91)){logger[_0x3485('0x13')](_[_0x3485('0x23')](_0x515e91)?JSON[_0x3485('0xe')](_0x515e91):_0x515e91);}}_0x3ffe5b['on']('open',_0x1e2c62);_0x3ffe5b['on'](_0x3485('0x24'),_0x508dae);_0x3ffe5b['on'](_0x3485('0x12'),_0x349fc6);_0x3ffe5b['on'](_0x3485('0x13'),_0x17fcd1);});};