Built motion from commit 639a1a7f.|2.6.19
[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 _0x9104=['crypto','../../../../../../config/logger','agi','exports','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','hex','unix','createReadStream','data','send','close','EOS','error','Tilde\x20ASR\x20send\x20error','stringify','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','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','terminate','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message'];(function(_0x50f392,_0x1d8441){var _0x5926f2=function(_0x17df32){while(--_0x17df32){_0x50f392['push'](_0x50f392['shift']());}};_0x5926f2(++_0x1d8441);}(_0x9104,0x6f));var _0x4910=function(_0x2a3dd8,_0x5bd5f0){_0x2a3dd8=_0x2a3dd8-0x0;var _0x51703d=_0x9104[_0x2a3dd8];return _0x51703d;};'use strict';var BPromise=require('bluebird');var _=require('lodash');var fs=require('fs');var WebSocket=require('ws');var moment=require('moment');var crypto=require(_0x4910('0x0'));var logger=require(_0x4910('0x1'))(_0x4910('0x2'));module[_0x4910('0x3')]=function(_0x34b08e,_0x1518a6,_0x3684f8,_0x27bc61){return new BPromise(function(_0xbefbbd,_0x216287){logger[_0x4910('0x4')]('Tilde\x20URI',_0x27bc61||_0x4910('0x5'));var _0x5c37c1=new WebSocket(_0x27bc61||_0x4910('0x5'),{'perMessageDeflate':![]});var _0x5272e2='';var _0x35e3bb='0';var _0x438a82='1';var _0x34f9b3=_0x4910('0x6');function _0x3eebdd(_0x37f922){var _0x356dfb=crypto['createHash']('sha1');_0x356dfb['update'](_0x37f922);return _0x356dfb['digest'](_0x4910('0x7'));}function _0x185cb6(){try{logger['info']('Open\x20Tilde\x20ASR\x20socket');var _0x22ad6d=moment()[_0x4910('0x8')]();var _0x2084ba=_0x3eebdd(_0x22ad6d+_0x1518a6+_0x3684f8);_0x5c37c1['send'](JSON['stringify']({'appID':_0x1518a6,'timestamp':_0x22ad6d,'appKey':_0x2084ba}));var _0x56dd0d=fs[_0x4910('0x9')](_0x34b08e);_0x56dd0d['on'](_0x4910('0xa'),function(_0x5abccd){_0x5c37c1[_0x4910('0xb')](_0x5abccd);});_0x56dd0d['on'](_0x4910('0xc'),function(){_0x5c37c1['send'](_0x4910('0xd'));});}catch(_0x52c191){logger[_0x4910('0xe')](_0x4910('0xf'),JSON[_0x4910('0x10')](_0x52c191));_0x5c37c1['terminate']();}}function _0x3d1167(_0x40b470){try{if(_0x40b470){var _0xcaabe7=JSON['parse'](_0x40b470);switch(_0xcaabe7[_0x4910('0x11')]){case 0x0:if(_0xcaabe7['result']){if(_0xcaabe7[_0x4910('0x12')][_0x4910('0x13')]){logger[_0x4910('0x4')](_0x4910('0x14'),JSON[_0x4910('0x10')](_0xcaabe7[_0x4910('0x12')][_0x4910('0x15')]));_0x5272e2=_0xcaabe7[_0x4910('0x12')]['hypotheses'][0x0][_0x4910('0x16')];_0x35e3bb=_0xcaabe7[_0x4910('0x12')][_0x4910('0x15')][0x0][_0x4910('0x17')];_0x438a82='0';_0x34f9b3=_0x4910('0x18');_0x5c37c1['terminate']();}}break;case 0x1:logger['info'](_0x4910('0x6'));_0x438a82='1';_0x34f9b3=_0x4910('0x6');break;case 0x2:logger['info']('Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.');_0x438a82='2';_0x34f9b3=_0x4910('0x19');break;case 0x9:logger['info'](_0x4910('0x1a'));_0x438a82='9';_0x34f9b3=_0x4910('0x1a');break;case 0xa:logger['info']('Authentication\x20failed.');_0x438a82='10';_0x34f9b3=_0x4910('0x1b');break;case 0xb:logger[_0x4910('0x4')](_0x4910('0x1c'));_0x438a82='11';_0x34f9b3=_0x4910('0x1c');}}}catch(_0x413b1c){logger[_0x4910('0xe')](_0x4910('0x1d'),JSON[_0x4910('0x10')](_0x413b1c));_0x5c37c1[_0x4910('0x1e')]();}}function _0x182f6a(){logger[_0x4910('0x4')](_0x4910('0x1f'));_0xbefbbd({'transcript':_0x5272e2,'confidence':_0x35e3bb,'status':_0x438a82,'status_message':_0x34f9b3});}function _0x8874fc(_0x19fc2b){logger[_0x4910('0xe')](_0x4910('0x20'));if(!_[_0x4910('0x21')](_0x19fc2b)){logger['error'](_[_0x4910('0x22')](_0x19fc2b)?JSON['stringify'](_0x19fc2b):_0x19fc2b);}}_0x5c37c1['on'](_0x4910('0x23'),_0x185cb6);_0x5c37c1['on'](_0x4910('0x24'),_0x3d1167);_0x5c37c1['on']('close',_0x182f6a);_0x5c37c1['on']('error',_0x8874fc);});};