Built motion from commit (unavailable).|2.5.7
[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 _0x224a=['./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','host','path','statusCode','error','\x20failed,\x20status\x20code\x20=\x20','statusMessage','request\x20to\x20','createWriteStream','info','finish\x20download\x20file','close','unlink','download\x20error','pipe','end','WHAT_EVER','get','data','error\x20convert','finish\x20to\x20convert','start','resolve','generate','writeFileSync','base64','then','chmodSync','777','toString','googleCloudTTS','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','POST','.mp3','from','audioContent','writeFile','tmp','.wav','googleCloudTTS\x20path','split','googleTTS','goggleTTS\x20path','googleASR','asr','uri','results','alternatives','transcript','join','map','confidence','googleASR\x20confidence','catch','name','textRequest','stringify','result','source','resolvedQuery','actionIncomplete','speech','score','code','metadata','endConversation','googleDialogflowV2','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','queryText','responseId','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','lex','ispeechTTS','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','parse','sestekNDA','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','dirName','apiai-promise','dialogflow','http','https','querystring','request-promise','randomstring','sox','google-tts-api','url','util','./aws'];(function(_0x25a8c5,_0x227f9d){var _0x1d698d=function(_0x580650){while(--_0x580650){_0x25a8c5['push'](_0x25a8c5['shift']());}};_0x1d698d(++_0x227f9d);}(_0x224a,0x74));var _0xa224=function(_0x588a9d,_0x23ba1c){_0x588a9d=_0x588a9d-0x0;var _0x5d1c7d=_0x224a[_0x588a9d];return _0x5d1c7d;};'use strict';var apiai=require(_0xa224('0x0'));var BPromise=require('bluebird');var dialogflow=require(_0xa224('0x1'));var fs=require('fs');var http=require(_0xa224('0x2'));var https=require(_0xa224('0x3'));var md5=require('md5');var path=require('path');var querystring=require(_0xa224('0x4'));var rp=require(_0xa224('0x5'));var rs=require(_0xa224('0x6'));var sox=require(_0xa224('0x7'));var tts=require(_0xa224('0x8'));var urlParse=require(_0xa224('0x9'))['parse'];var util=require(_0xa224('0xa'));var aws=require(_0xa224('0xb'));var google=require('./google');var sestek=require(_0xa224('0xc'));var tilde=require(_0xa224('0xd'));var logger=require(_0xa224('0xe'))(_0xa224('0xf'));var ISPEECH_API=_0xa224('0x10');function downloadFile(_0x58dcf9,_0x45dff1){return new BPromise(function(_0x5a9a5a,_0x67c3c2){var _0x24c320=urlParse(_0x58dcf9);var _0x237487=_0x24c320[_0xa224('0x11')]===_0xa224('0x12')?https:http;var _0x25f20d={'host':_0x24c320[_0xa224('0x13')],'path':_0x24c320[_0xa224('0x14')],'headers':{'user-agent':'WHAT_EVER'}};_0x237487['get'](_0x25f20d,function(_0x268dfb){if(_0x268dfb[_0xa224('0x15')]!==0xc8){logger[_0xa224('0x16')]('request\x20to\x20'+_0x58dcf9+_0xa224('0x17')+_0x268dfb[_0xa224('0x15')]+'\x20('+_0x268dfb[_0xa224('0x18')]+')');_0x67c3c2(new Error(_0xa224('0x19')+_0x58dcf9+_0xa224('0x17')+_0x268dfb[_0xa224('0x15')]+'\x20('+_0x268dfb[_0xa224('0x18')]+')'));return;}var _0x3cf8b6=fs[_0xa224('0x1a')](_0x45dff1);_0x3cf8b6['on']('finish',function(){logger[_0xa224('0x1b')](_0xa224('0x1c'));_0x3cf8b6[_0xa224('0x1d')](_0x5a9a5a);});_0x3cf8b6['on'](_0xa224('0x16'),function(_0xc3be46){fs[_0xa224('0x1e')](_0x45dff1);logger[_0xa224('0x16')](_0xa224('0x1f'),_0xc3be46);_0x67c3c2(_0xc3be46);});_0x268dfb[_0xa224('0x20')](_0x3cf8b6);})['on'](_0xa224('0x16'),function(_0x2e34c8){logger[_0xa224('0x16')](_0x2e34c8);_0x67c3c2(_0x2e34c8);})[_0xa224('0x21')]();});}function uploadFile(_0xa3a498){return new BPromise(function(_0x273c6b,_0x4b1403){var _0xc4ad84=urlParse(_0xa3a498);var _0x53ba5a=_0xc4ad84[_0xa224('0x11')]===_0xa224('0x12')?https:http;var _0x242b8e={'host':_0xc4ad84[_0xa224('0x13')],'path':_0xc4ad84[_0xa224('0x14')],'headers':{'user-agent':_0xa224('0x22')}};_0x53ba5a[_0xa224('0x23')](_0x242b8e,function(_0x5e6489){if(_0x5e6489[_0xa224('0x15')]!==0xc8){_0x4b1403(new Error('request\x20to\x20'+_0xa3a498+_0xa224('0x17')+_0x5e6489[_0xa224('0x15')]+'\x20('+_0x5e6489[_0xa224('0x18')]+')'));return;}var _0x3e0a7c='';_0x5e6489['on'](_0xa224('0x24'),function(_0x2e999d){_0x3e0a7c+=_0x2e999d;});_0x5e6489['on'](_0xa224('0x21'),function(){_0x273c6b(_0x3e0a7c);});})['on'](_0xa224('0x16'),function(_0x435173){_0x4b1403(_0x435173);})[_0xa224('0x21')]();});}function convertFile(_0x336c5d,_0xcc6f63){return new BPromise(function(_0x48eb0d,_0x3029f1){var _0x129fd9=sox['transcode'](_0x336c5d,_0xcc6f63,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x129fd9['on'](_0xa224('0x16'),function(_0x19a7fc){logger[_0xa224('0x16')](_0xa224('0x25'),_0x19a7fc);_0x3029f1(_0x19a7fc);});_0x129fd9['on'](_0xa224('0x21'),function(){logger[_0xa224('0x1b')](_0xa224('0x26'));_0x48eb0d();});_0x129fd9[_0xa224('0x27')]();});}function base64Decode(_0x28cfe4,_0x3e55d7){var _0x39d597=path[_0xa224('0x28')](__dirname,'tmp',rs[_0xa224('0x29')](0x4)+'.wav');fs[_0xa224('0x2a')](_0x39d597,_0x28cfe4,_0xa224('0x2b'));return convertFile(_0x39d597,_0x3e55d7)[_0xa224('0x2c')](function(){try{fs['unlink'](_0x39d597);fs[_0xa224('0x2d')](_0x3e55d7,_0xa224('0x2e'));}catch(_0x5d16b4){logger['error'](_0x5d16b4);}return _0x3e55d7['split']('.')[0x0];});}function base64Encode(_0x6fd7bf){var _0x2a24af=fs['readFileSync'](_0x6fd7bf);return new Buffer(_0x2a24af)[_0xa224('0x2f')](_0xa224('0x2b'));}exports[_0xa224('0x30')]=function(_0x1e45ee,_0x4f580b,_0x9592b1,_0x48e311,_0x4255e5,_0x331948){var _0x384d6f,_0x3d558e;var _0x27ad24='https://texttospeech.googleapis.com/v1/';var _0x4a425c=_0xa224('0x31')+_0x1e45ee;var _0xf4de1e={};if(_0x4f580b===_0xa224('0x32')){_0xf4de1e[_0xa224('0x33')]={'ssml':_0x9592b1};}else{_0xf4de1e[_0xa224('0x33')]={'text':_0x9592b1};};_0xf4de1e[_0xa224('0x34')]={'languageCode':_0x48e311,'ssmlGender':_0x4255e5};_0xf4de1e[_0xa224('0x35')]={'audioEncoding':_0xa224('0x36'),'sampleRateHertz':0x1f40};var _0x5c3b5e={'url':_0x27ad24+_0xa224('0x37')+_0x4a425c,'method':_0xa224('0x38'),'json':!![],'body':_0xf4de1e};return rp(_0x5c3b5e)['then'](function(_0x451e0b){return new BPromise(function(_0x24eb0c,_0x2a573b){_0x384d6f=path[_0xa224('0x28')](__dirname,'tmp',rs[_0xa224('0x29')](0x4)+_0xa224('0x39'));var _0x583b81=Buffer[_0xa224('0x3a')](_0x451e0b[_0xa224('0x3b')],_0xa224('0x2b'));return fs[_0xa224('0x3c')](_0x384d6f,_0x583b81,function(_0x2db3ae){_0x2a573b(_0x2db3ae);},function(_0x4ad4b8){fs[_0xa224('0x2d')](_0x384d6f,_0xa224('0x2e'));_0x24eb0c(_0x4ad4b8);});});})['then'](function(_0x3aefd3){_0x3d558e=path[_0xa224('0x28')](__dirname,_0xa224('0x3d'),rs['generate'](0x4)+_0xa224('0x3e'));return convertFile(_0x384d6f,_0x3d558e);})[_0xa224('0x2c')](function(){try{fs[_0xa224('0x1e')](_0x384d6f);fs[_0xa224('0x2d')](_0x3d558e,'777');}catch(_0x118ed0){logger[_0xa224('0x16')](_0x118ed0);}logger[_0xa224('0x1b')](_0xa224('0x3f'),_0x3d558e['split']('.')[0x0]);return _0x3d558e[_0xa224('0x40')]('.')[0x0];});};exports[_0xa224('0x41')]=function(_0x20f5ab,_0x9cc5d4){var _0x3e7cae,_0x52d8b7;return tts(_0x20f5ab,_0x9cc5d4||'en',0x1)['then'](function(_0x5becb5){logger[_0xa224('0x1b')](_0x5becb5);_0x3e7cae=path['resolve'](__dirname,_0xa224('0x3d'),rs['generate'](0x4)+_0xa224('0x39'));return downloadFile(_0x5becb5,_0x3e7cae);})[_0xa224('0x2c')](function(){_0x52d8b7=path[_0xa224('0x28')](__dirname,_0xa224('0x3d'),rs[_0xa224('0x29')](0x4)+_0xa224('0x3e'));return convertFile(_0x3e7cae,_0x52d8b7);})[_0xa224('0x2c')](function(){try{fs['unlink'](_0x3e7cae);fs['chmodSync'](_0x52d8b7,'777');}catch(_0x592493){logger['error'](_0x592493);}logger['info'](_0xa224('0x42'),_0x52d8b7['split']('.')[0x0]);return _0x52d8b7['split']('.')[0x0];});};exports[_0xa224('0x43')]=function(_0x185ecb,_0x30d4e5,_0x557063){return google[_0xa224('0x44')](_0x185ecb,_0x30d4e5,_0x557063)[_0xa224('0x2c')](function(_0x4f931e){logger['info'](_0x4f931e[_0xa224('0x45')]);return rp(_0x4f931e);})[_0xa224('0x2c')](function(_0xb60eba){var _0x603daa='';var _0x53383f=0x0;try{fs[_0xa224('0x1e')](_0x185ecb);}catch(_0x5340c5){logger[_0xa224('0x16')](_0x5340c5);}if(_0xb60eba&&_0xb60eba[_0xa224('0x46')]){_0x603daa=_0xb60eba[_0xa224('0x46')]['map'](function(_0x49e36b){return _0x49e36b&&_0x49e36b[_0xa224('0x47')][0x0]&&_0x49e36b['alternatives'][0x0][_0xa224('0x48')]?_0x49e36b[_0xa224('0x47')][0x0]['transcript']:'';})[_0xa224('0x49')]('\x0a');_0x53383f=_0xb60eba[_0xa224('0x46')][_0xa224('0x4a')](function(_0x17a633){return _0x17a633&&_0x17a633['alternatives'][0x0]&&_0x17a633[_0xa224('0x47')][0x0][_0xa224('0x4b')]?_0x17a633[_0xa224('0x47')][0x0][_0xa224('0x4b')]:0x0;})['join']('\x0a');}logger[_0xa224('0x1b')]('googleASR\x20transcription',_0x603daa);logger[_0xa224('0x1b')](_0xa224('0x4c'),_0x53383f);return{'transcript':_0x603daa,'confidence':_0x53383f};})[_0xa224('0x4d')](function(_0x469236){logger['error']('[%s]\x20%s:%s',_0x469236[_0xa224('0x15')],_0x469236[_0xa224('0x4e')],_0x469236['message']);});};exports['googleDialogflow']=function(_0x359c32,_0x37768c,_0x4ab6ed,_0x41509d){var _0x2bfc20=apiai(_0x37768c,{'language':_0x41509d||'en'});return _0x2bfc20[_0xa224('0x4f')](_0x4ab6ed,{'sessionId':md5(_0x359c32)})[_0xa224('0x2c')](function(_0x2fce09){logger[_0xa224('0x1b')](JSON[_0xa224('0x50')](_0x2fce09));return{'source':_0x2fce09[_0xa224('0x51')][_0xa224('0x52')],'resolvedQuery':_0x2fce09['result'][_0xa224('0x53')],'action':_0x2fce09['result']['action'],'actionIncomplete':_0x2fce09[_0xa224('0x51')][_0xa224('0x54')],'speech':_0x2fce09[_0xa224('0x51')]['fulfillment'][_0xa224('0x55')],'score':_0x2fce09[_0xa224('0x51')][_0xa224('0x56')],'statusCode':_0x2fce09['status'][_0xa224('0x57')],'endConversation':_0x2fce09[_0xa224('0x51')][_0xa224('0x58')][_0xa224('0x59')]||![],'isFallbackIntent':_0x2fce09[_0xa224('0x51')][_0xa224('0x58')]['isFallbackIntent']};});};exports[_0xa224('0x5a')]=function(_0x325bbf,_0x9e6cef,_0x49df11,_0x18199b,_0x1a8538,_0x3d9bc8){var _0x2ce399=_0x18199b['replace'](/\\n/g,'\x0a');var _0x5d79c2={'credentials':{'private_key':_0x2ce399,'client_email':_0x49df11}};var _0x472291=new dialogflow[(_0xa224('0x5b'))](_0x5d79c2);var _0x532cc8=_0x472291[_0xa224('0x5c')](_0x9e6cef,md5(_0x325bbf));var _0x1e8044={'session':_0x532cc8,'queryInput':{'text':{'text':_0x1a8538,'languageCode':_0x3d9bc8}}};return _0x472291[_0xa224('0x5d')](_0x1e8044)[_0xa224('0x2c')](function(_0x2dc908){if(_0x2dc908&&_0x2dc908['length']){logger[_0xa224('0x1b')](_0xa224('0x5e'),JSON['stringify'](_0x2dc908));var _0x423f31=_0x2dc908[0x0];if(_0x423f31){var _0x42a204={'action':_0x423f31[_0xa224('0x5f')]['action'],'allRequiredParamsPresent':_0x423f31['queryResult'][_0xa224('0x60')],'endConversation':_0x423f31[_0xa224('0x5f')][_0xa224('0x61')]&&_0x423f31[_0xa224('0x5f')][_0xa224('0x61')][_0xa224('0x62')]?_0x423f31[_0xa224('0x5f')]['diagnosticInfo'][_0xa224('0x62')][_0xa224('0x63')][_0xa224('0x64')]:![],'fulfillmentText':_0x423f31[_0xa224('0x5f')][_0xa224('0x65')],'intentName':_0x423f31[_0xa224('0x5f')][_0xa224('0x66')][_0xa224('0x4e')],'intentDisplayName':_0x423f31[_0xa224('0x5f')][_0xa224('0x66')][_0xa224('0x67')],'isFallbackIntent':_0x423f31[_0xa224('0x5f')][_0xa224('0x66')][_0xa224('0x68')],'languageCode':_0x423f31[_0xa224('0x5f')]['languageCode'],'queryText':_0x423f31[_0xa224('0x5f')][_0xa224('0x69')],'responseId':_0x423f31[_0xa224('0x6a')],'score':_0x423f31[_0xa224('0x5f')]['intentDetectionConfidence'],'speech':_0x423f31['queryResult'][_0xa224('0x65')],'providerResponse':JSON[_0xa224('0x50')](_0x2dc908)};return _0x42a204;}}});};exports[_0xa224('0x6b')]=function(_0x35bcc3,_0x26ba77,_0x2d9ba7,_0x4dfd5a){return tilde[_0xa224('0x44')](_0x35bcc3,_0x26ba77,_0x2d9ba7,_0x4dfd5a)[_0xa224('0x2c')](function(_0x4c88ea){try{fs[_0xa224('0x1e')](_0x35bcc3);}catch(_0x9e6ee6){logger[_0xa224('0x16')](_0x9e6ee6);}logger['info'](_0xa224('0x6c'),_0x4c88ea['transcript']);logger[_0xa224('0x1b')](_0xa224('0x6d'),_0x4c88ea[_0xa224('0x4b')]);return _0x4c88ea;});};exports[_0xa224('0x6e')]=function(_0x29f8e6,_0x1db512,_0x3b6a9e,_0x198c4f,_0x32df2b,_0x1b6330){var _0x2c2ed4=path[_0xa224('0x28')](__dirname,_0xa224('0x3d'),rs[_0xa224('0x29')](0x4)+_0xa224('0x39'));var _0x2992db;return aws['polly'](_0x29f8e6,_0x1db512,_0x3b6a9e,_0x198c4f,_0x32df2b,_0x1b6330,_0x2c2ed4)[_0xa224('0x2c')](function(){_0x2992db=path[_0xa224('0x28')](__dirname,_0xa224('0x3d'),rs['generate'](0x4)+'.wav');return convertFile(_0x2c2ed4,_0x2992db);})[_0xa224('0x2c')](function(){try{fs[_0xa224('0x1e')](_0x2c2ed4);fs[_0xa224('0x2d')](_0x2992db,'777');}catch(_0x3abd65){logger[_0xa224('0x16')](_0x3abd65);}return _0x2992db[_0xa224('0x40')]('.')[0x0];});};exports['awsLex']=function(_0x34fef6,_0x3328bd,_0x343823,_0x3bb2de,_0x55ef99,_0x3c5336){return aws[_0xa224('0x6f')](_0x34fef6,_0x3328bd,_0x343823,_0x3bb2de,_0x55ef99,_0x3c5336)[_0xa224('0x2c')](function(_0x304ecd){logger[_0xa224('0x1b')](JSON['stringify'](_0x304ecd));return _0x304ecd;});};exports[_0xa224('0x70')]=function(_0x8cd658,_0x174390,_0x38b949,_0x65f9af){var _0x2826fd=util['format'](_0xa224('0x71'),ISPEECH_API,_0x8cd658,encodeURIComponent(_0x174390),_0x38b949,_0x65f9af);var _0x22791d=path[_0xa224('0x28')](__dirname,_0xa224('0x3d'),rs['generate'](0x4)+_0xa224('0x39'));var _0x11cbc8;return downloadFile(_0x2826fd,_0x22791d)[_0xa224('0x2c')](function(){_0x11cbc8=path[_0xa224('0x28')](__dirname,_0xa224('0x3d'),rs[_0xa224('0x29')](0x4)+_0xa224('0x3e'));return convertFile(_0x22791d,_0x11cbc8);})[_0xa224('0x2c')](function(){try{fs[_0xa224('0x1e')](_0x22791d);fs[_0xa224('0x2d')](_0x11cbc8,_0xa224('0x2e'));}catch(_0x1cfaa5){logger[_0xa224('0x16')](_0x1cfaa5);}return _0x11cbc8['split']('.')[0x0];});};exports[_0xa224('0x72')]=function(_0x4531a8,_0x4a08fb,_0x548595,_0x419c25){var _0x212773=util[_0xa224('0x73')](_0xa224('0x74'),ISPEECH_API,_0x4a08fb,_0x548595,base64Encode(_0x4531a8),_0x419c25?util[_0xa224('0x73')](_0xa224('0x75'),encodeURIComponent(_0x419c25)):_0xa224('0x76'));return uploadFile(_0x212773)['then'](function(_0x5833b9){return querystring[_0xa224('0x77')](_0x5833b9);});};exports[_0xa224('0x78')]=function(_0x5da722,_0x5c0c0a){return sestek['nda'](_0x5da722,_0x5c0c0a)[_0xa224('0x2c')](function(_0x5a3955){logger[_0xa224('0x1b')](JSON[_0xa224('0x50')](_0x5a3955));var _0x2a3eac={'speech':_0x5a3955[_0xa224('0x79')],'action':_0x5a3955['channelData']?_0x5a3955[_0xa224('0x7a')][_0xa224('0x7b')]:undefined,'actiondata':_0x5a3955[_0xa224('0x7a')]?_0x5a3955[_0xa224('0x7a')][_0xa224('0x7c')]:undefined};if(_0x5a3955[_0xa224('0x7a')]&&_0x5a3955['channelData']['AudioFromTts']){return base64Decode(_0x5a3955[_0xa224('0x7a')][_0xa224('0x7d')][_0xa224('0x7e')],path[_0xa224('0x28')](__dirname,'tmp',rs[_0xa224('0x29')](0x4)+'.wav'))[_0xa224('0x2c')](function(_0x432470){_0x2a3eac['audiofile']=_0x432470;return _0x2a3eac;});}return _0x2a3eac;});};exports[_0xa224('0x7f')]=function(){return __dirname;};