269a2b19b98d92f0cceda01168c58fb6d3e8f39d
[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 _0xf2b1=['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','digest','unix','send','stringify','createReadStream','data','close','EOS','error','terminate','parse','result','final','hypotheses','transcript','Success.','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.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open','bluebird','moment','crypto','../../../../../../config/logger','exports','info','Tilde\x20URI'];(function(_0x9c86d6,_0x1eb9d0){var _0x40e800=function(_0x422a0b){while(--_0x422a0b){_0x9c86d6['push'](_0x9c86d6['shift']());}};_0x40e800(++_0x1eb9d0);}(_0xf2b1,0x121));var _0x1f2b=function(_0x3d5db9,_0x2dbe0a){_0x3d5db9=_0x3d5db9-0x0;var _0x3c114c=_0xf2b1[_0x3d5db9];return _0x3c114c;};'use strict';var BPromise=require(_0x1f2b('0x0'));var _=require('lodash');var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x1f2b('0x1'));var crypto=require(_0x1f2b('0x2'));var logger=require(_0x1f2b('0x3'))('agi');module[_0x1f2b('0x4')]=function(_0x1adf3d,_0x36ab96,_0x334075,_0x1edec2){return new BPromise(function(_0x547f22,_0x4eef98){logger[_0x1f2b('0x5')](_0x1f2b('0x6'),_0x1edec2||_0x1f2b('0x7'));var _0x48068a=new WebSocket(_0x1edec2||_0x1f2b('0x7'),{'perMessageDeflate':![]});var _0x23aef7='';var _0x504433='0';var _0x29200a='1';var _0x5e6a4c=_0x1f2b('0x8');function _0x592a8c(_0x5d04f3){var _0x45cc3e=crypto[_0x1f2b('0x9')](_0x1f2b('0xa'));_0x45cc3e['update'](_0x5d04f3);return _0x45cc3e[_0x1f2b('0xb')]('hex');}function _0x14f8fd(){try{logger[_0x1f2b('0x5')]('Open\x20Tilde\x20ASR\x20socket');var _0x3bdd80=moment()[_0x1f2b('0xc')]();var _0x2a380f=_0x592a8c(_0x3bdd80+_0x36ab96+_0x334075);_0x48068a[_0x1f2b('0xd')](JSON[_0x1f2b('0xe')]({'appID':_0x36ab96,'timestamp':_0x3bdd80,'appKey':_0x2a380f}));var _0x48e41e=fs[_0x1f2b('0xf')](_0x1adf3d);_0x48e41e['on'](_0x1f2b('0x10'),function(_0x6d18df){_0x48068a[_0x1f2b('0xd')](_0x6d18df);});_0x48e41e['on'](_0x1f2b('0x11'),function(){_0x48068a[_0x1f2b('0xd')](_0x1f2b('0x12'));});}catch(_0x36c990){logger[_0x1f2b('0x13')]('Tilde\x20ASR\x20send\x20error',JSON[_0x1f2b('0xe')](_0x36c990));_0x48068a[_0x1f2b('0x14')]();}}function _0x202858(_0x2c01b5){try{if(_0x2c01b5){var _0x4ca780=JSON[_0x1f2b('0x15')](_0x2c01b5);switch(_0x4ca780['status']){case 0x0:if(_0x4ca780[_0x1f2b('0x16')]){if(_0x4ca780['result'][_0x1f2b('0x17')]){logger['info']('Tilde\x20ASR\x20hypoteses',JSON[_0x1f2b('0xe')](_0x4ca780[_0x1f2b('0x16')]['hypotheses']));_0x23aef7=_0x4ca780[_0x1f2b('0x16')][_0x1f2b('0x18')][0x0][_0x1f2b('0x19')];_0x504433=_0x4ca780[_0x1f2b('0x16')][_0x1f2b('0x18')][0x0]['likelihood'];_0x29200a='0';_0x5e6a4c=_0x1f2b('0x1a');_0x48068a['terminate']();}}break;case 0x1:logger[_0x1f2b('0x5')](_0x1f2b('0x8'));_0x29200a='1';_0x5e6a4c=_0x1f2b('0x8');break;case 0x2:logger[_0x1f2b('0x5')]('Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.');_0x29200a='2';_0x5e6a4c=_0x1f2b('0x1b');break;case 0x9:logger[_0x1f2b('0x5')](_0x1f2b('0x1c'));_0x29200a='9';_0x5e6a4c=_0x1f2b('0x1c');break;case 0xa:logger[_0x1f2b('0x5')](_0x1f2b('0x1d'));_0x29200a='10';_0x5e6a4c=_0x1f2b('0x1d');break;case 0xb:logger[_0x1f2b('0x5')](_0x1f2b('0x1e'));_0x29200a='11';_0x5e6a4c=_0x1f2b('0x1e');}}}catch(_0x53807f){logger[_0x1f2b('0x13')](_0x1f2b('0x1f'),JSON['stringify'](_0x53807f));_0x48068a[_0x1f2b('0x14')]();}}function _0x5f3150(){logger['info'](_0x1f2b('0x20'));_0x547f22({'transcript':_0x23aef7,'confidence':_0x504433,'status':_0x29200a,'status_message':_0x5e6a4c});}function _0x2c70ba(_0x58101e){logger[_0x1f2b('0x13')](_0x1f2b('0x21'));if(!_[_0x1f2b('0x22')](_0x58101e)){logger['error'](_[_0x1f2b('0x23')](_0x58101e)?JSON[_0x1f2b('0xe')](_0x58101e):_0x58101e);}}_0x48068a['on'](_0x1f2b('0x24'),_0x14f8fd);_0x48068a['on']('message',_0x202858);_0x48068a['on'](_0x1f2b('0x11'),_0x5f3150);_0x48068a['on'](_0x1f2b('0x13'),_0x2c70ba);});};