Built motion from commit (unavailable).|2.5.17
[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 _0x65c3=['parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','.mp3','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20confidence','catch','name','message','googleDialogflow','textRequest','result','source','actionIncomplete','fulfillment','speech','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','sessionPath','detectIntent','queryResult','action','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','languageCode','responseId','intentDetectionConfidence','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','nda','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','apiai-promise','dialogflow','http','https','md5','path','querystring','randomstring','google-tts-api','parse','util','./aws','./google','./tilde','../../../config/logger','agi','host','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','finish','info','finish\x20download\x20file','close','unlink','download\x20error','pipe','end','protocol','data','transcode','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','.wav','writeFileSync','base64','then','chmodSync','777','split','readFileSync','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','input','voice','audioConfig','MP3','text:synthesize','POST','generate','from','audioContent','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','application/x-www-form-urlencoded','f.req=','stringify','generic','slice'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x65c3,0x1db));var _0x365c=function(_0x10a51a,_0x9768eb){_0x10a51a=_0x10a51a-0x0;var _0x21041e=_0x65c3[_0x10a51a];return _0x21041e;};'use strict';var apiai=require(_0x365c('0x0'));var BPromise=require('bluebird');var dialogflow=require(_0x365c('0x1'));var fs=require('fs');var http=require(_0x365c('0x2'));var https=require(_0x365c('0x3'));var md5=require(_0x365c('0x4'));var path=require(_0x365c('0x5'));var querystring=require(_0x365c('0x6'));var rp=require('request-promise');var rs=require(_0x365c('0x7'));var sox=require('sox');var tts=require(_0x365c('0x8'));var urlParse=require('url')[_0x365c('0x9')];var util=require(_0x365c('0xa'));var aws=require(_0x365c('0xb'));var google=require(_0x365c('0xc'));var sestek=require('./sestek');var tilde=require(_0x365c('0xd'));var logger=require(_0x365c('0xe'))(_0x365c('0xf'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x34162e,_0x1dd55f){return new BPromise(function(_0x225e00,_0x25cf8f){var _0x536200=urlParse(_0x34162e);var _0x819892=_0x536200['protocol']==='https:'?https:http;var _0xc03915={'host':_0x536200[_0x365c('0x10')],'path':_0x536200[_0x365c('0x5')],'headers':{'user-agent':_0x365c('0x11')}};_0x819892[_0x365c('0x12')](_0xc03915,function(_0x41e9d1){if(_0x41e9d1[_0x365c('0x13')]!==0xc8){logger[_0x365c('0x14')](_0x365c('0x15')+_0x34162e+_0x365c('0x16')+_0x41e9d1[_0x365c('0x13')]+'\x20('+_0x41e9d1['statusMessage']+')');_0x25cf8f(new Error('request\x20to\x20'+_0x34162e+_0x365c('0x16')+_0x41e9d1[_0x365c('0x13')]+'\x20('+_0x41e9d1[_0x365c('0x17')]+')'));return;}var _0x5ddd4b=fs['createWriteStream'](_0x1dd55f);_0x5ddd4b['on'](_0x365c('0x18'),function(){logger[_0x365c('0x19')](_0x365c('0x1a'));_0x5ddd4b[_0x365c('0x1b')](_0x225e00);});_0x5ddd4b['on'](_0x365c('0x14'),function(_0x3ab7e1){fs[_0x365c('0x1c')](_0x1dd55f);logger['error'](_0x365c('0x1d'),_0x3ab7e1);_0x25cf8f(_0x3ab7e1);});_0x41e9d1[_0x365c('0x1e')](_0x5ddd4b);})['on'](_0x365c('0x14'),function(_0x3143d1){logger[_0x365c('0x14')](_0x3143d1);_0x25cf8f(_0x3143d1);})[_0x365c('0x1f')]();});}function uploadFile(_0x227a5e){return new BPromise(function(_0x41229a,_0xbb6436){var _0x2360e2=urlParse(_0x227a5e);var _0x4b7111=_0x2360e2[_0x365c('0x20')]==='https:'?https:http;var _0x300cc1={'host':_0x2360e2[_0x365c('0x10')],'path':_0x2360e2['path'],'headers':{'user-agent':'WHAT_EVER'}};_0x4b7111[_0x365c('0x12')](_0x300cc1,function(_0x21ca75){if(_0x21ca75[_0x365c('0x13')]!==0xc8){_0xbb6436(new Error(_0x365c('0x15')+_0x227a5e+_0x365c('0x16')+_0x21ca75[_0x365c('0x13')]+'\x20('+_0x21ca75['statusMessage']+')'));return;}var _0x11c45b='';_0x21ca75['on'](_0x365c('0x21'),function(_0x4cfbad){_0x11c45b+=_0x4cfbad;});_0x21ca75['on'](_0x365c('0x1f'),function(){_0x41229a(_0x11c45b);});})['on']('error',function(_0x8f51a2){_0xbb6436(_0x8f51a2);})[_0x365c('0x1f')]();});}function convertFile(_0x49ad9f,_0x3c671e){return new BPromise(function(_0x4903d4,_0xd0af35){var _0x57189a=sox[_0x365c('0x22')](_0x49ad9f,_0x3c671e,{'sampleRate':0x1f40,'format':_0x365c('0x23'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x57189a['on'](_0x365c('0x14'),function(_0xc5c329){logger[_0x365c('0x14')](_0x365c('0x24'),_0xc5c329);_0xd0af35(_0xc5c329);});_0x57189a['on'](_0x365c('0x1f'),function(){logger[_0x365c('0x19')](_0x365c('0x25'));_0x4903d4();});_0x57189a[_0x365c('0x26')]();});}function base64Decode(_0x3fa9b8,_0x24d19a){var _0x8c82c=path[_0x365c('0x27')](__dirname,_0x365c('0x28'),rs['generate'](0x4)+_0x365c('0x29'));fs[_0x365c('0x2a')](_0x8c82c,_0x3fa9b8,_0x365c('0x2b'));return convertFile(_0x8c82c,_0x24d19a)[_0x365c('0x2c')](function(){try{fs[_0x365c('0x1c')](_0x8c82c);fs[_0x365c('0x2d')](_0x24d19a,_0x365c('0x2e'));}catch(_0x2f8dc7){logger[_0x365c('0x14')](_0x2f8dc7);}return _0x24d19a[_0x365c('0x2f')]('.')[0x0];});}function base64Encode(_0x2cbc98){var _0x4b6f13=fs[_0x365c('0x30')](_0x2cbc98);return new Buffer(_0x4b6f13)['toString'](_0x365c('0x2b'));}exports[_0x365c('0x31')]=function(_0x2c7382,_0x5f2952,_0x36d1c7,_0x57bf94,_0x863fb3,_0x1b8dbf){var _0x35604d,_0x39507f;var _0x18c64e=_0x365c('0x32');var _0x47ddc6=_0x365c('0x33')+_0x2c7382;var _0x7272c8={};if(_0x5f2952==='ssml'){_0x7272c8[_0x365c('0x34')]={'ssml':_0x36d1c7};}else{_0x7272c8[_0x365c('0x34')]={'text':_0x36d1c7};};_0x7272c8[_0x365c('0x35')]={'languageCode':_0x57bf94,'ssmlGender':_0x863fb3};_0x7272c8[_0x365c('0x36')]={'audioEncoding':_0x365c('0x37'),'sampleRateHertz':0x1f40};var _0x518ed2={'url':_0x18c64e+_0x365c('0x38')+_0x47ddc6,'method':_0x365c('0x39'),'json':!![],'body':_0x7272c8};return rp(_0x518ed2)[_0x365c('0x2c')](function(_0x3ce0bb){return new BPromise(function(_0x161e1c,_0x5d4265){_0x35604d=path[_0x365c('0x27')](__dirname,_0x365c('0x28'),rs[_0x365c('0x3a')](0x4)+'.mp3');var _0x1ea10a=Buffer[_0x365c('0x3b')](_0x3ce0bb[_0x365c('0x3c')],_0x365c('0x2b'));return fs['writeFile'](_0x35604d,_0x1ea10a,function(_0x4d7d5a){_0x5d4265(_0x4d7d5a);},function(_0x434075){fs[_0x365c('0x2d')](_0x35604d,_0x365c('0x2e'));_0x161e1c(_0x434075);});});})['then'](function(_0x244456){_0x39507f=path[_0x365c('0x27')](__dirname,_0x365c('0x28'),rs['generate'](0x4)+'.wav');return convertFile(_0x35604d,_0x39507f);})['then'](function(){try{fs[_0x365c('0x1c')](_0x35604d);fs[_0x365c('0x2d')](_0x39507f,_0x365c('0x2e'));}catch(_0x259c7c){logger['error'](_0x259c7c);}logger['info'](_0x365c('0x3d'),_0x39507f[_0x365c('0x2f')]('.')[0x0]);return _0x39507f[_0x365c('0x2f')]('.')[0x0];});};exports[_0x365c('0x3e')]=function(_0x2d81b1,_0x26668f){var _0x11e5ea=_0x365c('0x3f');var _0x1e0c1f,_0x3e26ab;var _0x475dd3;var _0x451373={'encoding':'utf8','method':_0x365c('0x39'),'timeout':0x2710,'url':_0x11e5ea,'headers':{'Content-Type':_0x365c('0x40')},'body':_0x365c('0x41')+encodeURIComponent(JSON[_0x365c('0x42')]([[['jQ1olc',JSON[_0x365c('0x42')]([_0x2d81b1,_0x26668f||'en',![],'null']),null,_0x365c('0x43')]]]))};return rp(_0x451373)[_0x365c('0x2c')](function(_0x135033){try{_0x475dd3=eval(_0x135033[_0x365c('0x44')](0x5))[0x0][0x2];}catch(_0x46c595){throw new Error(_0x365c('0x45')+_0x135033['data']);}if(!_0x475dd3){if(_0x2d81b1[_0x365c('0x46')]>0xc8){throw new Error(_0x365c('0x47'));}else{throw new Error('lang\x20\x22'+_0x26668f+'\x22\x20might\x20not\x20exist');}}try{_0x475dd3=eval(_0x475dd3)[0x0];}catch(_0x24dc35){throw new Error(_0x365c('0x45')+res[_0x365c('0x21')]);}const _0x435864=_0x475dd3;_0x1e0c1f=path['resolve'](__dirname,_0x365c('0x28'),rs['generate'](0x4)+_0x365c('0x48'));fs[_0x365c('0x2a')](_0x1e0c1f,_0x475dd3,{'encoding':_0x365c('0x2b')});_0x3e26ab=path[_0x365c('0x27')](__dirname,_0x365c('0x28'),rs[_0x365c('0x3a')](0x4)+_0x365c('0x29'));return convertFile(_0x1e0c1f,_0x3e26ab);})[_0x365c('0x2c')](function(){try{fs[_0x365c('0x1c')](_0x1e0c1f);fs['chmodSync'](_0x3e26ab,_0x365c('0x2e'));}catch(_0x8b39e9){logger[_0x365c('0x14')](_0x8b39e9);}logger['info'](_0x365c('0x49'),_0x3e26ab[_0x365c('0x2f')]('.')[0x0]);return _0x3e26ab[_0x365c('0x2f')]('.')[0x0];});};exports[_0x365c('0x4a')]=function(_0x3f05c2,_0x3ebbc9,_0x35ba01){return google[_0x365c('0x4b')](_0x3f05c2,_0x3ebbc9,_0x35ba01)['then'](function(_0x5a59f3){logger[_0x365c('0x19')](_0x5a59f3[_0x365c('0x4c')]);return rp(_0x5a59f3);})[_0x365c('0x2c')](function(_0x230489){var _0xe973c='';var _0x8b2793=0x0;try{fs[_0x365c('0x1c')](_0x3f05c2);}catch(_0x1eba55){logger[_0x365c('0x14')](_0x1eba55);}if(_0x230489&&_0x230489[_0x365c('0x4d')]){_0xe973c=_0x230489[_0x365c('0x4d')][_0x365c('0x4e')](function(_0x1a8358){return _0x1a8358&&_0x1a8358[_0x365c('0x4f')][0x0]&&_0x1a8358[_0x365c('0x4f')][0x0]['transcript']?_0x1a8358['alternatives'][0x0][_0x365c('0x50')]:'';})[_0x365c('0x51')]('\x0a');_0x8b2793=_0x230489[_0x365c('0x4d')][_0x365c('0x4e')](function(_0xf1658c){return _0xf1658c&&_0xf1658c['alternatives'][0x0]&&_0xf1658c[_0x365c('0x4f')][0x0][_0x365c('0x52')]?_0xf1658c[_0x365c('0x4f')][0x0][_0x365c('0x52')]:0x0;})['join']('\x0a');}logger['info']('googleASR\x20transcription',_0xe973c);logger[_0x365c('0x19')](_0x365c('0x53'),_0x8b2793);return{'transcript':_0xe973c,'confidence':_0x8b2793};})[_0x365c('0x54')](function(_0x5cf0a7){logger[_0x365c('0x14')]('[%s]\x20%s:%s',_0x5cf0a7[_0x365c('0x13')],_0x5cf0a7[_0x365c('0x55')],_0x5cf0a7[_0x365c('0x56')]);});};exports[_0x365c('0x57')]=function(_0x23cf0b,_0x3d65ee,_0x3cd082,_0x136fc7){var _0x4c09da=apiai(_0x3d65ee,{'language':_0x136fc7||'en'});return _0x4c09da[_0x365c('0x58')](_0x3cd082,{'sessionId':md5(_0x23cf0b)})[_0x365c('0x2c')](function(_0x44d7fa){logger[_0x365c('0x19')](JSON[_0x365c('0x42')](_0x44d7fa));return{'source':_0x44d7fa[_0x365c('0x59')][_0x365c('0x5a')],'resolvedQuery':_0x44d7fa[_0x365c('0x59')]['resolvedQuery'],'action':_0x44d7fa['result']['action'],'actionIncomplete':_0x44d7fa[_0x365c('0x59')][_0x365c('0x5b')],'speech':_0x44d7fa[_0x365c('0x59')][_0x365c('0x5c')][_0x365c('0x5d')],'score':_0x44d7fa[_0x365c('0x59')]['score'],'statusCode':_0x44d7fa['status'][_0x365c('0x5e')],'endConversation':_0x44d7fa['result'][_0x365c('0x5f')][_0x365c('0x60')]||![],'isFallbackIntent':_0x44d7fa[_0x365c('0x59')][_0x365c('0x5f')][_0x365c('0x61')]};});};exports[_0x365c('0x62')]=function(_0x5f6f7e,_0x296741,_0x2e7cee,_0x275887,_0x2b9793,_0xf2f527){var _0x489d32=_0x275887[_0x365c('0x63')](/\\n/g,'\x0a');var _0x79911f={'credentials':{'private_key':_0x489d32,'client_email':_0x2e7cee}};var _0x358f66=new dialogflow['SessionsClient'](_0x79911f);var _0x37d3f4=_0x358f66[_0x365c('0x64')](_0x296741,md5(_0x5f6f7e));var _0x3958ac={'session':_0x37d3f4,'queryInput':{'text':{'text':_0x2b9793,'languageCode':_0xf2f527}}};return _0x358f66[_0x365c('0x65')](_0x3958ac)[_0x365c('0x2c')](function(_0x4d0c90){if(_0x4d0c90&&_0x4d0c90[_0x365c('0x46')]){logger[_0x365c('0x19')]('Dialogflow\x20V2\x20response:',JSON[_0x365c('0x42')](_0x4d0c90));var _0x4f7d0a=_0x4d0c90[0x0];if(_0x4f7d0a){var _0x43186b={'action':_0x4f7d0a[_0x365c('0x66')][_0x365c('0x67')],'allRequiredParamsPresent':_0x4f7d0a[_0x365c('0x66')][_0x365c('0x68')],'endConversation':_0x4f7d0a['queryResult']['diagnosticInfo']&&_0x4f7d0a['queryResult'][_0x365c('0x69')][_0x365c('0x6a')]?_0x4f7d0a['queryResult']['diagnosticInfo'][_0x365c('0x6a')][_0x365c('0x6b')][_0x365c('0x6c')]:![],'fulfillmentText':_0x4f7d0a[_0x365c('0x66')][_0x365c('0x6d')],'intentName':_0x4f7d0a[_0x365c('0x66')]['intent'][_0x365c('0x55')],'intentDisplayName':_0x4f7d0a['queryResult'][_0x365c('0x6e')][_0x365c('0x6f')],'isFallbackIntent':_0x4f7d0a[_0x365c('0x66')][_0x365c('0x6e')][_0x365c('0x70')],'languageCode':_0x4f7d0a[_0x365c('0x66')][_0x365c('0x71')],'queryText':_0x4f7d0a[_0x365c('0x66')]['queryText'],'responseId':_0x4f7d0a[_0x365c('0x72')],'score':_0x4f7d0a[_0x365c('0x66')][_0x365c('0x73')],'speech':_0x4f7d0a[_0x365c('0x66')][_0x365c('0x6d')],'providerResponse':JSON['stringify'](_0x4d0c90)};return _0x43186b;}}});};exports['tildeASR']=function(_0x5c79b9,_0x25e022,_0x2eef44,_0x268e6c){return tilde[_0x365c('0x4b')](_0x5c79b9,_0x25e022,_0x2eef44,_0x268e6c)[_0x365c('0x2c')](function(_0x665ccc){try{fs[_0x365c('0x1c')](_0x5c79b9);}catch(_0x11f962){logger['error'](_0x11f962);}logger[_0x365c('0x19')](_0x365c('0x74'),_0x665ccc['transcript']);logger[_0x365c('0x19')](_0x365c('0x75'),_0x665ccc[_0x365c('0x52')]);return _0x665ccc;});};exports[_0x365c('0x76')]=function(_0x2129f0,_0x4a3bde,_0x2e085f,_0x4bd787,_0x382148,_0xfb5baf){var _0x1fbb9b=path['resolve'](__dirname,'tmp',rs[_0x365c('0x3a')](0x4)+_0x365c('0x48'));var _0x56c25f;return aws[_0x365c('0x77')](_0x2129f0,_0x4a3bde,_0x2e085f,_0x4bd787,_0x382148,_0xfb5baf,_0x1fbb9b)[_0x365c('0x2c')](function(){_0x56c25f=path[_0x365c('0x27')](__dirname,'tmp',rs[_0x365c('0x3a')](0x4)+_0x365c('0x29'));return convertFile(_0x1fbb9b,_0x56c25f);})[_0x365c('0x2c')](function(){try{fs[_0x365c('0x1c')](_0x1fbb9b);fs[_0x365c('0x2d')](_0x56c25f,_0x365c('0x2e'));}catch(_0x1d44bd){logger['error'](_0x1d44bd);}return _0x56c25f[_0x365c('0x2f')]('.')[0x0];});};exports[_0x365c('0x78')]=function(_0xd173e,_0x28a4f,_0x9e5e57,_0x52ebad,_0x509a0e,_0x3bfa41){return aws[_0x365c('0x79')](_0xd173e,_0x28a4f,_0x9e5e57,_0x52ebad,_0x509a0e,_0x3bfa41)['then'](function(_0x1dac7e){logger[_0x365c('0x19')](JSON[_0x365c('0x42')](_0x1dac7e));return _0x1dac7e;});};exports[_0x365c('0x7a')]=function(_0x2a19ee,_0x10cbdb,_0x1d9225,_0xdcc681){var _0x185949=util[_0x365c('0x7b')](_0x365c('0x7c'),ISPEECH_API,_0x2a19ee,encodeURIComponent(_0x10cbdb),_0x1d9225,_0xdcc681);var _0x42ba35=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0x365c('0x48'));var _0x417ea4;return downloadFile(_0x185949,_0x42ba35)[_0x365c('0x2c')](function(){_0x417ea4=path[_0x365c('0x27')](__dirname,_0x365c('0x28'),rs[_0x365c('0x3a')](0x4)+_0x365c('0x29'));return convertFile(_0x42ba35,_0x417ea4);})[_0x365c('0x2c')](function(){try{fs[_0x365c('0x1c')](_0x42ba35);fs[_0x365c('0x2d')](_0x417ea4,_0x365c('0x2e'));}catch(_0x387c89){logger['error'](_0x387c89);}return _0x417ea4[_0x365c('0x2f')]('.')[0x0];});};exports['ispeechASR']=function(_0x1bf0f2,_0x26ab54,_0x8f59b8,_0x465782){var _0x55c547=util[_0x365c('0x7b')](_0x365c('0x7d'),ISPEECH_API,_0x26ab54,_0x8f59b8,base64Encode(_0x1bf0f2),_0x465782?util['format'](_0x365c('0x7e'),encodeURIComponent(_0x465782)):_0x365c('0x7f'));return uploadFile(_0x55c547)[_0x365c('0x2c')](function(_0x9af060){return querystring[_0x365c('0x9')](_0x9af060);});};exports[_0x365c('0x80')]=function(_0x42e355,_0x34d5f0){return sestek[_0x365c('0x81')](_0x42e355,_0x34d5f0)['then'](function(_0x4c4b86){logger['info'](JSON['stringify'](_0x4c4b86));var _0x4f6b4b={'speech':_0x4c4b86['text'],'action':_0x4c4b86['channelData']?_0x4c4b86[_0x365c('0x82')][_0x365c('0x83')]:undefined,'actiondata':_0x4c4b86[_0x365c('0x82')]?_0x4c4b86[_0x365c('0x82')][_0x365c('0x84')]:undefined};if(_0x4c4b86[_0x365c('0x82')]&&_0x4c4b86[_0x365c('0x82')][_0x365c('0x85')]){return base64Decode(_0x4c4b86['channelData'][_0x365c('0x85')][_0x365c('0x86')],path[_0x365c('0x27')](__dirname,'tmp',rs[_0x365c('0x3a')](0x4)+'.wav'))['then'](function(_0xc4d91b){_0x4f6b4b[_0x365c('0x87')]=_0xc4d91b;return _0x4f6b4b;});}return _0x4f6b4b;});};exports['dirName']=function(){return __dirname;};