dc0a25fabfae255be3d8fd36bc4e45a8d16b0652
[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 _0xb167=['bluebird','lodash','moment','crypto','agi','exports','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','update','digest','hex','info','stringify','data','send','close','EOS','error','Tilde\x20ASR\x20send\x20error','terminate','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message'];(function(_0x48297f,_0x132aec){var _0x405872=function(_0x3e54c1){while(--_0x3e54c1){_0x48297f['push'](_0x48297f['shift']());}};_0x405872(++_0x132aec);}(_0xb167,0x172));var _0x7b16=function(_0x4f962f,_0x18dece){_0x4f962f=_0x4f962f-0x0;var _0x536b7a=_0xb167[_0x4f962f];return _0x536b7a;};'use strict';var BPromise=require(_0x7b16('0x0'));var _=require(_0x7b16('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x7b16('0x2'));var crypto=require(_0x7b16('0x3'));var logger=require('../../../../../../config/logger')(_0x7b16('0x4'));module[_0x7b16('0x5')]=function(_0x5707d2,_0x4ecbbc,_0x4dcab9,_0x4c80c4){return new BPromise(function(_0x3c1363,_0x248eb2){logger['info']('Tilde\x20URI',_0x4c80c4||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE');var _0x473511=new WebSocket(_0x4c80c4||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE',{'perMessageDeflate':![]});var _0x57792b='';var _0xb639ce='0';var _0x26a8c9='1';var _0x54b780=_0x7b16('0x6');function _0x4a4396(_0x58e743){var _0x4c2def=crypto[_0x7b16('0x7')](_0x7b16('0x8'));_0x4c2def[_0x7b16('0x9')](_0x58e743);return _0x4c2def[_0x7b16('0xa')](_0x7b16('0xb'));}function _0x3eefe3(){try{logger[_0x7b16('0xc')]('Open\x20Tilde\x20ASR\x20socket');var _0x164913=moment()['unix']();var _0x5e9878=_0x4a4396(_0x164913+_0x4ecbbc+_0x4dcab9);_0x473511['send'](JSON[_0x7b16('0xd')]({'appID':_0x4ecbbc,'timestamp':_0x164913,'appKey':_0x5e9878}));var _0x1d3928=fs['createReadStream'](_0x5707d2);_0x1d3928['on'](_0x7b16('0xe'),function(_0x89878){_0x473511[_0x7b16('0xf')](_0x89878);});_0x1d3928['on'](_0x7b16('0x10'),function(){_0x473511[_0x7b16('0xf')](_0x7b16('0x11'));});}catch(_0x3f810a){logger[_0x7b16('0x12')](_0x7b16('0x13'),JSON[_0x7b16('0xd')](_0x3f810a));_0x473511[_0x7b16('0x14')]();}}function _0x1d07f2(_0x5d9754){try{if(_0x5d9754){var _0x300648=JSON['parse'](_0x5d9754);switch(_0x300648['status']){case 0x0:if(_0x300648[_0x7b16('0x15')]){if(_0x300648['result'][_0x7b16('0x16')]){logger[_0x7b16('0xc')](_0x7b16('0x17'),JSON['stringify'](_0x300648['result'][_0x7b16('0x18')]));_0x57792b=_0x300648[_0x7b16('0x15')][_0x7b16('0x18')][0x0][_0x7b16('0x19')];_0xb639ce=_0x300648['result'][_0x7b16('0x18')][0x0][_0x7b16('0x1a')];_0x26a8c9='0';_0x54b780=_0x7b16('0x1b');_0x473511[_0x7b16('0x14')]();}}break;case 0x1:logger[_0x7b16('0xc')](_0x7b16('0x6'));_0x26a8c9='1';_0x54b780=_0x7b16('0x6');break;case 0x2:logger['info'](_0x7b16('0x1c'));_0x26a8c9='2';_0x54b780='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0x7b16('0xc')](_0x7b16('0x1d'));_0x26a8c9='9';_0x54b780=_0x7b16('0x1d');break;case 0xa:logger['info']('Authentication\x20failed.');_0x26a8c9='10';_0x54b780='Authentication\x20failed.';break;case 0xb:logger[_0x7b16('0xc')](_0x7b16('0x1e'));_0x26a8c9='11';_0x54b780=_0x7b16('0x1e');}}}catch(_0x3fa4a2){logger['error']('Tilde\x20ASR\x20parse\x20error',JSON['stringify'](_0x3fa4a2));_0x473511['terminate']();}}function _0x2bd386(){logger['info'](_0x7b16('0x1f'));_0x3c1363({'transcript':_0x57792b,'confidence':_0xb639ce,'status':_0x26a8c9,'status_message':_0x54b780});}function _0x630072(_0x51cce9){logger['error'](_0x7b16('0x20'));if(!_[_0x7b16('0x21')](_0x51cce9)){logger[_0x7b16('0x12')](_[_0x7b16('0x22')](_0x51cce9)?JSON[_0x7b16('0xd')](_0x51cce9):_0x51cce9);}}_0x473511['on'](_0x7b16('0x23'),_0x3eefe3);_0x473511['on'](_0x7b16('0x24'),_0x1d07f2);_0x473511['on'](_0x7b16('0x10'),_0x2bd386);_0x473511['on'](_0x7b16('0x12'),_0x630072);});};