Built motion from commit (unavailable).|2.5.2
[motion2.git] / server / services / agi / scripts / index.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 _0xd263=['readFileSync','toString','base64','googleCloudTTS','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','POST','then','.mp3','from','audioContent','writeFile','777','googleCloudTTS\x20path','split','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','message','googleDialogflow','textRequest','result','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','code','metadata','endConversation','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','lex','stringify','ispeechTTS','format','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','sestekNDA','text','channelData','CustomActionData','AudioFromTts','Data','audiofile','dirName','path','http','https','url','parse','randomstring','sox','request-promise','util','querystring','google-tts-api','./aws','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','get','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusCode','statusMessage','createWriteStream','finish','info','unlink','pipe','end','transcode','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','chmodSync'];(function(_0x67754c,_0x4ee2c1){var _0x1f09ec=function(_0x255080){while(--_0x255080){_0x67754c['push'](_0x67754c['shift']());}};_0x1f09ec(++_0x4ee2c1);}(_0xd263,0xb3));var _0x3d26=function(_0x9abf28,_0x10566d){_0x9abf28=_0x9abf28-0x0;var _0x20b418=_0xd263[_0x9abf28];return _0x20b418;};'use strict';var fs=require('fs');var path=require(_0x3d26('0x0'));var http=require(_0x3d26('0x1'));var https=require(_0x3d26('0x2'));var urlParse=require(_0x3d26('0x3'))[_0x3d26('0x4')];var BPromise=require('bluebird');var rs=require(_0x3d26('0x5'));var sox=require(_0x3d26('0x6'));var rp=require(_0x3d26('0x7'));var util=require(_0x3d26('0x8'));var querystring=require(_0x3d26('0x9'));var tts=require(_0x3d26('0xa'));var apiai=require('apiai-promise');var md5=require('md5');var google=require('./google');var aws=require(_0x3d26('0xb'));var tilde=require(_0x3d26('0xc'));var sestek=require('./sestek');var logger=require(_0x3d26('0xd'))(_0x3d26('0xe'));var ISPEECH_API=_0x3d26('0xf');function downloadFile(_0x535a8a,_0x41d52b){return new BPromise(function(_0x487d7b,_0x34f351){var _0x159aed=urlParse(_0x535a8a);var _0x9f3bfc=_0x159aed[_0x3d26('0x10')]===_0x3d26('0x11')?https:http;var _0x4d8977={'host':_0x159aed[_0x3d26('0x12')],'path':_0x159aed['path'],'headers':{'user-agent':_0x3d26('0x13')}};_0x9f3bfc[_0x3d26('0x14')](_0x4d8977,function(_0x2804f2){if(_0x2804f2['statusCode']!==0xc8){logger[_0x3d26('0x15')](_0x3d26('0x16')+_0x535a8a+_0x3d26('0x17')+_0x2804f2[_0x3d26('0x18')]+'\x20('+_0x2804f2[_0x3d26('0x19')]+')');_0x34f351(new Error(_0x3d26('0x16')+_0x535a8a+_0x3d26('0x17')+_0x2804f2[_0x3d26('0x18')]+'\x20('+_0x2804f2['statusMessage']+')'));return;}var _0x2ce8dd=fs[_0x3d26('0x1a')](_0x41d52b);_0x2ce8dd['on'](_0x3d26('0x1b'),function(){logger[_0x3d26('0x1c')]('finish\x20download\x20file');_0x2ce8dd['close'](_0x487d7b);});_0x2ce8dd['on'](_0x3d26('0x15'),function(_0x10267c){fs[_0x3d26('0x1d')](_0x41d52b);logger[_0x3d26('0x15')]('download\x20error',_0x10267c);_0x34f351(_0x10267c);});_0x2804f2[_0x3d26('0x1e')](_0x2ce8dd);})['on'](_0x3d26('0x15'),function(_0x4bc493){logger[_0x3d26('0x15')](_0x4bc493);_0x34f351(_0x4bc493);})[_0x3d26('0x1f')]();});}function uploadFile(_0x51a423){return new BPromise(function(_0x2b4443,_0x2d88fe){var _0x17857f=urlParse(_0x51a423);var _0x8497a8=_0x17857f[_0x3d26('0x10')]===_0x3d26('0x11')?https:http;var _0x19d5e9={'host':_0x17857f[_0x3d26('0x12')],'path':_0x17857f['path'],'headers':{'user-agent':_0x3d26('0x13')}};_0x8497a8[_0x3d26('0x14')](_0x19d5e9,function(_0x13bf15){if(_0x13bf15[_0x3d26('0x18')]!==0xc8){_0x2d88fe(new Error('request\x20to\x20'+_0x51a423+'\x20failed,\x20status\x20code\x20=\x20'+_0x13bf15[_0x3d26('0x18')]+'\x20('+_0x13bf15['statusMessage']+')'));return;}var _0x215c9b='';_0x13bf15['on']('data',function(_0x3b1e9a){_0x215c9b+=_0x3b1e9a;});_0x13bf15['on']('end',function(){_0x2b4443(_0x215c9b);});})['on']('error',function(_0x3b6538){_0x2d88fe(_0x3b6538);})['end']();});}function convertFile(_0x11c752,_0x3456be){return new BPromise(function(_0x278165,_0x3a2991){var _0x5da42d=sox[_0x3d26('0x20')](_0x11c752,_0x3456be,{'sampleRate':0x1f40,'format':_0x3d26('0x21'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x5da42d['on'](_0x3d26('0x15'),function(_0x18f954){logger['error'](_0x3d26('0x22'),_0x18f954);_0x3a2991(_0x18f954);});_0x5da42d['on']('end',function(){logger[_0x3d26('0x1c')](_0x3d26('0x23'));_0x278165();});_0x5da42d[_0x3d26('0x24')]();});}function base64Decode(_0x29790c,_0x11f826){var _0x139800=path[_0x3d26('0x25')](__dirname,_0x3d26('0x26'),rs[_0x3d26('0x27')](0x4)+_0x3d26('0x28'));fs[_0x3d26('0x29')](_0x139800,_0x29790c,'base64');return convertFile(_0x139800,_0x11f826)['then'](function(){try{fs['unlink'](_0x139800);fs[_0x3d26('0x2a')](_0x11f826,'777');}catch(_0x137050){logger[_0x3d26('0x15')](_0x137050);}return _0x11f826['split']('.')[0x0];});}function base64Encode(_0xe75595){var _0xbb4321=fs[_0x3d26('0x2b')](_0xe75595);return new Buffer(_0xbb4321)[_0x3d26('0x2c')](_0x3d26('0x2d'));}exports[_0x3d26('0x2e')]=function(_0x1d2d82,_0x573ffb,_0xa886ca,_0x5e3bac,_0x4c75aa,_0x558040){var _0x1666fc,_0x23a642;var _0x1c18fb='https://texttospeech.googleapis.com/v1/';var _0x35926e=_0x3d26('0x2f')+_0x1d2d82;var _0x33891f={};if(_0x573ffb===_0x3d26('0x30')){_0x33891f[_0x3d26('0x31')]={'ssml':_0xa886ca};}else{_0x33891f[_0x3d26('0x31')]={'text':_0xa886ca};};_0x33891f[_0x3d26('0x32')]={'languageCode':_0x5e3bac,'ssmlGender':_0x4c75aa};_0x33891f[_0x3d26('0x33')]={'audioEncoding':_0x3d26('0x34'),'sampleRateHertz':0x1f40};var _0x25866b={'url':_0x1c18fb+_0x3d26('0x35')+_0x35926e,'method':_0x3d26('0x36'),'json':!![],'body':_0x33891f};return rp(_0x25866b)[_0x3d26('0x37')](function(_0x291367){return new BPromise(function(_0x234cd3,_0x286af5){_0x1666fc=path[_0x3d26('0x25')](__dirname,_0x3d26('0x26'),rs[_0x3d26('0x27')](0x4)+_0x3d26('0x38'));var _0x580160=Buffer[_0x3d26('0x39')](_0x291367[_0x3d26('0x3a')],_0x3d26('0x2d'));return fs[_0x3d26('0x3b')](_0x1666fc,_0x580160,function(_0x355a82){_0x286af5(_0x355a82);},function(_0x367a8f){fs[_0x3d26('0x2a')](_0x1666fc,'777');_0x234cd3(_0x367a8f);});});})[_0x3d26('0x37')](function(_0x1d036f){_0x23a642=path[_0x3d26('0x25')](__dirname,_0x3d26('0x26'),rs[_0x3d26('0x27')](0x4)+_0x3d26('0x28'));return convertFile(_0x1666fc,_0x23a642);})[_0x3d26('0x37')](function(){try{fs[_0x3d26('0x1d')](_0x1666fc);fs[_0x3d26('0x2a')](_0x23a642,_0x3d26('0x3c'));}catch(_0x18bad9){logger[_0x3d26('0x15')](_0x18bad9);}logger[_0x3d26('0x1c')](_0x3d26('0x3d'),_0x23a642['split']('.')[0x0]);return _0x23a642[_0x3d26('0x3e')]('.')[0x0];});};exports['googleTTS']=function(_0x175e7d,_0x4dd4af){var _0x5ad9d2,_0x2a3372;return tts(_0x175e7d,_0x4dd4af||'en',0x1)[_0x3d26('0x37')](function(_0xdbe728){logger[_0x3d26('0x1c')](_0xdbe728);_0x5ad9d2=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0x3d26('0x38'));return downloadFile(_0xdbe728,_0x5ad9d2);})['then'](function(){_0x2a3372=path[_0x3d26('0x25')](__dirname,_0x3d26('0x26'),rs['generate'](0x4)+_0x3d26('0x28'));return convertFile(_0x5ad9d2,_0x2a3372);})[_0x3d26('0x37')](function(){try{fs[_0x3d26('0x1d')](_0x5ad9d2);fs['chmodSync'](_0x2a3372,_0x3d26('0x3c'));}catch(_0x328e4c){logger['error'](_0x328e4c);}logger[_0x3d26('0x1c')](_0x3d26('0x3f'),_0x2a3372['split']('.')[0x0]);return _0x2a3372[_0x3d26('0x3e')]('.')[0x0];});};exports[_0x3d26('0x40')]=function(_0x268d78,_0x39ddfa,_0x13b60d){return google[_0x3d26('0x41')](_0x268d78,_0x39ddfa,_0x13b60d)[_0x3d26('0x37')](function(_0x146e86){logger[_0x3d26('0x1c')](_0x146e86[_0x3d26('0x42')]);return rp(_0x146e86);})[_0x3d26('0x37')](function(_0x4374c1){var _0x5b9e9a='';var _0x5104ef=0x0;try{fs['unlink'](_0x268d78);}catch(_0x532bf8){logger['error'](_0x532bf8);}if(_0x4374c1&&_0x4374c1[_0x3d26('0x43')]){_0x5b9e9a=_0x4374c1['results'][_0x3d26('0x44')](function(_0x1dc9e4){return _0x1dc9e4&&_0x1dc9e4[_0x3d26('0x45')][0x0]&&_0x1dc9e4[_0x3d26('0x45')][0x0][_0x3d26('0x46')]?_0x1dc9e4[_0x3d26('0x45')][0x0]['transcript']:'';})[_0x3d26('0x47')]('\x0a');_0x5104ef=_0x4374c1[_0x3d26('0x43')]['map'](function(_0x16e4a6){return _0x16e4a6&&_0x16e4a6['alternatives'][0x0]&&_0x16e4a6[_0x3d26('0x45')][0x0][_0x3d26('0x48')]?_0x16e4a6['alternatives'][0x0][_0x3d26('0x48')]:0x0;})[_0x3d26('0x47')]('\x0a');}logger[_0x3d26('0x1c')](_0x3d26('0x49'),_0x5b9e9a);logger[_0x3d26('0x1c')](_0x3d26('0x4a'),_0x5104ef);return{'transcript':_0x5b9e9a,'confidence':_0x5104ef};})[_0x3d26('0x4b')](function(_0x4a841d){logger[_0x3d26('0x15')](_0x3d26('0x4c'),_0x4a841d[_0x3d26('0x18')],_0x4a841d['name'],_0x4a841d[_0x3d26('0x4d')]);});};exports[_0x3d26('0x4e')]=function(_0x509cd1,_0x2b7c65,_0x5896de,_0x6c37fd){var _0x591bd7=apiai(_0x2b7c65,{'language':_0x6c37fd||'en'});return _0x591bd7[_0x3d26('0x4f')](_0x5896de,{'sessionId':md5(_0x509cd1)})[_0x3d26('0x37')](function(_0x2e6eb2){logger[_0x3d26('0x1c')](JSON['stringify'](_0x2e6eb2));return{'source':_0x2e6eb2[_0x3d26('0x50')]['source'],'resolvedQuery':_0x2e6eb2[_0x3d26('0x50')][_0x3d26('0x51')],'action':_0x2e6eb2['result'][_0x3d26('0x52')],'actionIncomplete':_0x2e6eb2[_0x3d26('0x50')][_0x3d26('0x53')],'speech':_0x2e6eb2[_0x3d26('0x50')][_0x3d26('0x54')][_0x3d26('0x55')],'score':_0x2e6eb2[_0x3d26('0x50')][_0x3d26('0x56')],'statusCode':_0x2e6eb2['status'][_0x3d26('0x57')],'endConversation':_0x2e6eb2[_0x3d26('0x50')][_0x3d26('0x58')][_0x3d26('0x59')]||![],'isFallbackIntent':_0x2e6eb2[_0x3d26('0x50')][_0x3d26('0x58')]['isFallbackIntent']};});};exports[_0x3d26('0x5a')]=function(_0x22eb92,_0x2a75e1,_0x3e4e1a,_0x4a428b){return tilde[_0x3d26('0x41')](_0x22eb92,_0x2a75e1,_0x3e4e1a,_0x4a428b)[_0x3d26('0x37')](function(_0x15277e){try{fs[_0x3d26('0x1d')](_0x22eb92);}catch(_0x4615a1){logger[_0x3d26('0x15')](_0x4615a1);}logger[_0x3d26('0x1c')](_0x3d26('0x5b'),_0x15277e['transcript']);logger['info'](_0x3d26('0x5c'),_0x15277e[_0x3d26('0x48')]);return _0x15277e;});};exports[_0x3d26('0x5d')]=function(_0x1110ce,_0x31a754,_0x41c0c6,_0x1a16f8,_0x896ab5,_0x130c31){var _0x4b29e9=path[_0x3d26('0x25')](__dirname,_0x3d26('0x26'),rs[_0x3d26('0x27')](0x4)+_0x3d26('0x38'));var _0x3b11fc;return aws[_0x3d26('0x5e')](_0x1110ce,_0x31a754,_0x41c0c6,_0x1a16f8,_0x896ab5,_0x130c31,_0x4b29e9)['then'](function(){_0x3b11fc=path[_0x3d26('0x25')](__dirname,_0x3d26('0x26'),rs[_0x3d26('0x27')](0x4)+_0x3d26('0x28'));return convertFile(_0x4b29e9,_0x3b11fc);})[_0x3d26('0x37')](function(){try{fs['unlink'](_0x4b29e9);fs[_0x3d26('0x2a')](_0x3b11fc,_0x3d26('0x3c'));}catch(_0x132882){logger['error'](_0x132882);}return _0x3b11fc[_0x3d26('0x3e')]('.')[0x0];});};exports[_0x3d26('0x5f')]=function(_0x1e43d2,_0x265688,_0xd6c174,_0x3ee836,_0x1a59ee,_0x2c5f38){return aws[_0x3d26('0x60')](_0x1e43d2,_0x265688,_0xd6c174,_0x3ee836,_0x1a59ee,_0x2c5f38)[_0x3d26('0x37')](function(_0x62ac0a){logger[_0x3d26('0x1c')](JSON[_0x3d26('0x61')](_0x62ac0a));return _0x62ac0a;});};exports[_0x3d26('0x62')]=function(_0x24ef45,_0x5034f1,_0x254705,_0x2e77de){var _0x2be51d=util[_0x3d26('0x63')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x24ef45,encodeURIComponent(_0x5034f1),_0x254705,_0x2e77de);var _0x3efa39=path['resolve'](__dirname,_0x3d26('0x26'),rs[_0x3d26('0x27')](0x4)+_0x3d26('0x38'));var _0x2e675b;return downloadFile(_0x2be51d,_0x3efa39)[_0x3d26('0x37')](function(){_0x2e675b=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0x3d26('0x28'));return convertFile(_0x3efa39,_0x2e675b);})[_0x3d26('0x37')](function(){try{fs['unlink'](_0x3efa39);fs['chmodSync'](_0x2e675b,_0x3d26('0x3c'));}catch(_0x22e7a3){logger[_0x3d26('0x15')](_0x22e7a3);}return _0x2e675b['split']('.')[0x0];});};exports[_0x3d26('0x64')]=function(_0xfb975c,_0x30eb9d,_0x40b880,_0x418bd2){var _0x52fdfa=util[_0x3d26('0x63')](_0x3d26('0x65'),ISPEECH_API,_0x30eb9d,_0x40b880,base64Encode(_0xfb975c),_0x418bd2?util[_0x3d26('0x63')](_0x3d26('0x66'),encodeURIComponent(_0x418bd2)):'freeform=3');return uploadFile(_0x52fdfa)[_0x3d26('0x37')](function(_0x4af539){return querystring[_0x3d26('0x4')](_0x4af539);});};exports[_0x3d26('0x67')]=function(_0x47ba60,_0x37a066){return sestek['nda'](_0x47ba60,_0x37a066)[_0x3d26('0x37')](function(_0x35a0d0){logger[_0x3d26('0x1c')](JSON[_0x3d26('0x61')](_0x35a0d0));var _0x14f510={'speech':_0x35a0d0[_0x3d26('0x68')],'action':_0x35a0d0['channelData']?_0x35a0d0[_0x3d26('0x69')]['CustomAction']:undefined,'actiondata':_0x35a0d0['channelData']?_0x35a0d0['channelData'][_0x3d26('0x6a')]:undefined};if(_0x35a0d0[_0x3d26('0x69')]&&_0x35a0d0['channelData'][_0x3d26('0x6b')]){return base64Decode(_0x35a0d0[_0x3d26('0x69')][_0x3d26('0x6b')][_0x3d26('0x6c')],path[_0x3d26('0x25')](__dirname,_0x3d26('0x26'),rs['generate'](0x4)+_0x3d26('0x28')))[_0x3d26('0x37')](function(_0x510d82){_0x14f510[_0x3d26('0x6d')]=_0x510d82;return _0x14f510;});}return _0x14f510;});};exports[_0x3d26('0x6e')]=function(){return __dirname;};