71afcb18e4fb300d974b573b18a1dfaab5672d65
[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 _0xea94=['error','Tilde\x20ASR\x20send\x20error','terminate','parse','result','final','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.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','open','bluebird','lodash','../../../../../../config/logger','agi','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','update','digest','Open\x20Tilde\x20ASR\x20socket','unix','send','stringify','createReadStream','data','close','EOS'];(function(_0x34d25e,_0x525bc4){var _0x21b308=function(_0x31d35c){while(--_0x31d35c){_0x34d25e['push'](_0x34d25e['shift']());}};_0x21b308(++_0x525bc4);}(_0xea94,0x13a));var _0x4ea9=function(_0x43e19a,_0x3127f2){_0x43e19a=_0x43e19a-0x0;var _0x35099e=_0xea94[_0x43e19a];return _0x35099e;};'use strict';var BPromise=require(_0x4ea9('0x0'));var _=require(_0x4ea9('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require('moment');var crypto=require('crypto');var logger=require(_0x4ea9('0x2'))(_0x4ea9('0x3'));module['exports']=function(_0x2743f7,_0x54ef1b,_0x4e4280,_0x57258a){return new BPromise(function(_0x55270b,_0x37d343){logger[_0x4ea9('0x4')](_0x4ea9('0x5'),_0x57258a||_0x4ea9('0x6'));var _0x4be80a=new WebSocket(_0x57258a||_0x4ea9('0x6'),{'perMessageDeflate':![]});var _0x89e83b='';var _0x3cf54b='0';var _0x5be489='1';var _0x11ebf3=_0x4ea9('0x7');function _0xdb4e12(_0x5e3ec9){var _0xebfefb=crypto[_0x4ea9('0x8')]('sha1');_0xebfefb[_0x4ea9('0x9')](_0x5e3ec9);return _0xebfefb[_0x4ea9('0xa')]('hex');}function _0x380e92(){try{logger['info'](_0x4ea9('0xb'));var _0x4bad04=moment()[_0x4ea9('0xc')]();var _0x91ef3=_0xdb4e12(_0x4bad04+_0x54ef1b+_0x4e4280);_0x4be80a[_0x4ea9('0xd')](JSON[_0x4ea9('0xe')]({'appID':_0x54ef1b,'timestamp':_0x4bad04,'appKey':_0x91ef3}));var _0x15f9d0=fs[_0x4ea9('0xf')](_0x2743f7);_0x15f9d0['on'](_0x4ea9('0x10'),function(_0x10f1c3){_0x4be80a[_0x4ea9('0xd')](_0x10f1c3);});_0x15f9d0['on'](_0x4ea9('0x11'),function(){_0x4be80a[_0x4ea9('0xd')](_0x4ea9('0x12'));});}catch(_0x1ac71c){logger[_0x4ea9('0x13')](_0x4ea9('0x14'),JSON[_0x4ea9('0xe')](_0x1ac71c));_0x4be80a[_0x4ea9('0x15')]();}}function _0x4bcff3(_0x5e6c67){try{if(_0x5e6c67){var _0x5e4101=JSON[_0x4ea9('0x16')](_0x5e6c67);switch(_0x5e4101['status']){case 0x0:if(_0x5e4101['result']){if(_0x5e4101[_0x4ea9('0x17')][_0x4ea9('0x18')]){logger[_0x4ea9('0x4')]('Tilde\x20ASR\x20hypoteses',JSON['stringify'](_0x5e4101[_0x4ea9('0x17')]['hypotheses']));_0x89e83b=_0x5e4101[_0x4ea9('0x17')][_0x4ea9('0x19')][0x0][_0x4ea9('0x1a')];_0x3cf54b=_0x5e4101[_0x4ea9('0x17')][_0x4ea9('0x19')][0x0][_0x4ea9('0x1b')];_0x5be489='0';_0x11ebf3=_0x4ea9('0x1c');_0x4be80a[_0x4ea9('0x15')]();}}break;case 0x1:logger['info'](_0x4ea9('0x7'));_0x5be489='1';_0x11ebf3=_0x4ea9('0x7');break;case 0x2:logger[_0x4ea9('0x4')](_0x4ea9('0x1d'));_0x5be489='2';_0x11ebf3=_0x4ea9('0x1d');break;case 0x9:logger[_0x4ea9('0x4')](_0x4ea9('0x1e'));_0x5be489='9';_0x11ebf3=_0x4ea9('0x1e');break;case 0xa:logger[_0x4ea9('0x4')]('Authentication\x20failed.');_0x5be489='10';_0x11ebf3='Authentication\x20failed.';break;case 0xb:logger[_0x4ea9('0x4')](_0x4ea9('0x1f'));_0x5be489='11';_0x11ebf3=_0x4ea9('0x1f');}}}catch(_0x32dc9f){logger['error'](_0x4ea9('0x20'),JSON[_0x4ea9('0xe')](_0x32dc9f));_0x4be80a[_0x4ea9('0x15')]();}}function _0x3d7ac6(){logger[_0x4ea9('0x4')](_0x4ea9('0x21'));_0x55270b({'transcript':_0x89e83b,'confidence':_0x3cf54b,'status':_0x5be489,'status_message':_0x11ebf3});}function _0x1646f6(_0xf979ed){logger[_0x4ea9('0x13')](_0x4ea9('0x22'));if(!_[_0x4ea9('0x23')](_0xf979ed)){logger['error'](_['isObject'](_0xf979ed)?JSON[_0x4ea9('0xe')](_0xf979ed):_0xf979ed);}}_0x4be80a['on'](_0x4ea9('0x24'),_0x380e92);_0x4be80a['on']('message',_0x4bcff3);_0x4be80a['on'](_0x4ea9('0x11'),_0x3d7ac6);_0x4be80a['on'](_0x4ea9('0x13'),_0x1646f6);});};