Built motion from commit 43538d75.|2.5.35
[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 _0x3eb6=['voice','audioConfig','MP3','POST','generate','.mp3','from','audioContent','writeFile','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','generic','slice','parse\x20response\x20failed:\x0a','data','length','text\x20length\x20limit\x20reached','\x22\x20might\x20not\x20exist','777','goggleTTS\x20path','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20confidence','[%s]\x20%s:%s','message','textRequest','result','source','resolvedQuery','actionIncomplete','fulfillment','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','sessionPath','Dialogflow\x20V2\x20response:','queryResult','diagnosticInfo','fields','end_conversation','boolValue','name','intent','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','fulfillmentText','tildeASR','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','lex','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','text','CustomAction','channelData','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','dialogflow','http','https','querystring','request-promise','sox','google-tts-api','url','parse','util','./aws','./google','./sestek','./tilde','../../../config/logger','https://api.ispeech.org/api/rest','protocol','https:','path','WHAT_EVER','get','statusCode','error','statusMessage','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','createWriteStream','info','finish\x20download\x20file','close','unlink','end','host','wav','error\x20convert','finish\x20to\x20convert','resolve','tmp','.wav','writeFileSync','base64','then','chmodSync','split','readFileSync','googleCloudTTS','?key=','ssml','input'];(function(_0x149c1f,_0x7b4dc6){var _0x309eeb=function(_0x19863c){while(--_0x19863c){_0x149c1f['push'](_0x149c1f['shift']());}};_0x309eeb(++_0x7b4dc6);}(_0x3eb6,0x1f2));var _0x63eb=function(_0x2bb398,_0xd7c0dc){_0x2bb398=_0x2bb398-0x0;var _0x4dfefc=_0x3eb6[_0x2bb398];return _0x4dfefc;};'use strict';var apiai=require(_0x63eb('0x0'));var BPromise=require('bluebird');var dialogflow=require(_0x63eb('0x1'));var fs=require('fs');var http=require(_0x63eb('0x2'));var https=require(_0x63eb('0x3'));var md5=require('md5');var path=require('path');var querystring=require(_0x63eb('0x4'));var rp=require(_0x63eb('0x5'));var rs=require('randomstring');var sox=require(_0x63eb('0x6'));var tts=require(_0x63eb('0x7'));var urlParse=require(_0x63eb('0x8'))[_0x63eb('0x9')];var util=require(_0x63eb('0xa'));var aws=require(_0x63eb('0xb'));var google=require(_0x63eb('0xc'));var sestek=require(_0x63eb('0xd'));var tilde=require(_0x63eb('0xe'));var logger=require(_0x63eb('0xf'))('agi');var ISPEECH_API=_0x63eb('0x10');function downloadFile(_0x4fe2de,_0x53568c){return new BPromise(function(_0x55b7a1,_0x367f39){var _0x78a96e=urlParse(_0x4fe2de);var _0x595af1=_0x78a96e[_0x63eb('0x11')]===_0x63eb('0x12')?https:http;var _0x12c447={'host':_0x78a96e['host'],'path':_0x78a96e[_0x63eb('0x13')],'headers':{'user-agent':_0x63eb('0x14')}};_0x595af1[_0x63eb('0x15')](_0x12c447,function(_0xf5dbeb){if(_0xf5dbeb[_0x63eb('0x16')]!==0xc8){logger[_0x63eb('0x17')]('request\x20to\x20'+_0x4fe2de+'\x20failed,\x20status\x20code\x20=\x20'+_0xf5dbeb[_0x63eb('0x16')]+'\x20('+_0xf5dbeb[_0x63eb('0x18')]+')');_0x367f39(new Error(_0x63eb('0x19')+_0x4fe2de+_0x63eb('0x1a')+_0xf5dbeb[_0x63eb('0x16')]+'\x20('+_0xf5dbeb['statusMessage']+')'));return;}var _0x133b94=fs[_0x63eb('0x1b')](_0x53568c);_0x133b94['on']('finish',function(){logger[_0x63eb('0x1c')](_0x63eb('0x1d'));_0x133b94[_0x63eb('0x1e')](_0x55b7a1);});_0x133b94['on'](_0x63eb('0x17'),function(_0x50e31a){fs[_0x63eb('0x1f')](_0x53568c);logger['error']('download\x20error',_0x50e31a);_0x367f39(_0x50e31a);});_0xf5dbeb['pipe'](_0x133b94);})['on']('error',function(_0x3b39dd){logger['error'](_0x3b39dd);_0x367f39(_0x3b39dd);})[_0x63eb('0x20')]();});}function uploadFile(_0x4e5a61){return new BPromise(function(_0x19be29,_0x54f174){var _0x4f06a0=urlParse(_0x4e5a61);var _0xd41e98=_0x4f06a0[_0x63eb('0x11')]===_0x63eb('0x12')?https:http;var _0x4f9694={'host':_0x4f06a0[_0x63eb('0x21')],'path':_0x4f06a0[_0x63eb('0x13')],'headers':{'user-agent':'WHAT_EVER'}};_0xd41e98[_0x63eb('0x15')](_0x4f9694,function(_0x2f1bbb){if(_0x2f1bbb['statusCode']!==0xc8){_0x54f174(new Error(_0x63eb('0x19')+_0x4e5a61+_0x63eb('0x1a')+_0x2f1bbb['statusCode']+'\x20('+_0x2f1bbb[_0x63eb('0x18')]+')'));return;}var _0x3bf293='';_0x2f1bbb['on']('data',function(_0x3f1516){_0x3bf293+=_0x3f1516;});_0x2f1bbb['on'](_0x63eb('0x20'),function(){_0x19be29(_0x3bf293);});})['on'](_0x63eb('0x17'),function(_0x1a526a){_0x54f174(_0x1a526a);})[_0x63eb('0x20')]();});}function convertFile(_0x5615bc,_0x44bcac){return new BPromise(function(_0x519bef,_0x2f41e6){var _0xa90537=sox['transcode'](_0x5615bc,_0x44bcac,{'sampleRate':0x1f40,'format':_0x63eb('0x22'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0xa90537['on'](_0x63eb('0x17'),function(_0x460b4a){logger[_0x63eb('0x17')](_0x63eb('0x23'),_0x460b4a);_0x2f41e6(_0x460b4a);});_0xa90537['on']('end',function(){logger[_0x63eb('0x1c')](_0x63eb('0x24'));_0x519bef();});_0xa90537['start']();});}function base64Decode(_0x27fe01,_0x2b4b4e){var _0x31b0ad=path[_0x63eb('0x25')](__dirname,_0x63eb('0x26'),rs['generate'](0x4)+_0x63eb('0x27'));fs[_0x63eb('0x28')](_0x31b0ad,_0x27fe01,_0x63eb('0x29'));return convertFile(_0x31b0ad,_0x2b4b4e)[_0x63eb('0x2a')](function(){try{fs[_0x63eb('0x1f')](_0x31b0ad);fs[_0x63eb('0x2b')](_0x2b4b4e,'777');}catch(_0x2b40c6){logger[_0x63eb('0x17')](_0x2b40c6);}return _0x2b4b4e[_0x63eb('0x2c')]('.')[0x0];});}function base64Encode(_0x5404b8){var _0x1ca036=fs[_0x63eb('0x2d')](_0x5404b8);return new Buffer(_0x1ca036)['toString'](_0x63eb('0x29'));}exports[_0x63eb('0x2e')]=function(_0x13e816,_0x865a8,_0x216881,_0x8cbec8,_0x5b5230,_0x4f7601){var _0x15c90f,_0x592394;var _0x111d4b='https://texttospeech.googleapis.com/v1/';var _0x6a4d2f=_0x63eb('0x2f')+_0x13e816;var _0x56df1d={};if(_0x865a8===_0x63eb('0x30')){_0x56df1d[_0x63eb('0x31')]={'ssml':_0x216881};}else{_0x56df1d[_0x63eb('0x31')]={'text':_0x216881};};_0x56df1d[_0x63eb('0x32')]={'languageCode':_0x8cbec8,'ssmlGender':_0x5b5230};_0x56df1d[_0x63eb('0x33')]={'audioEncoding':_0x63eb('0x34'),'sampleRateHertz':0x1f40};var _0x4f6df7={'url':_0x111d4b+'text:synthesize'+_0x6a4d2f,'method':_0x63eb('0x35'),'json':!![],'body':_0x56df1d};return rp(_0x4f6df7)[_0x63eb('0x2a')](function(_0x499523){return new BPromise(function(_0x4c6233,_0x409d27){_0x15c90f=path[_0x63eb('0x25')](__dirname,'tmp',rs[_0x63eb('0x36')](0x4)+_0x63eb('0x37'));var _0x49f3fc=Buffer[_0x63eb('0x38')](_0x499523[_0x63eb('0x39')],_0x63eb('0x29'));return fs[_0x63eb('0x3a')](_0x15c90f,_0x49f3fc,function(_0x40bed0){_0x409d27(_0x40bed0);},function(_0x3af51a){fs['chmodSync'](_0x15c90f,'777');_0x4c6233(_0x3af51a);});});})[_0x63eb('0x2a')](function(_0x4d1c4e){_0x592394=path[_0x63eb('0x25')](__dirname,'tmp',rs['generate'](0x4)+_0x63eb('0x27'));return convertFile(_0x15c90f,_0x592394);})[_0x63eb('0x2a')](function(){try{fs[_0x63eb('0x1f')](_0x15c90f);fs[_0x63eb('0x2b')](_0x592394,'777');}catch(_0x596086){logger[_0x63eb('0x17')](_0x596086);}logger[_0x63eb('0x1c')](_0x63eb('0x3b'),_0x592394[_0x63eb('0x2c')]('.')[0x0]);return _0x592394[_0x63eb('0x2c')]('.')[0x0];});};exports[_0x63eb('0x3c')]=function(_0x4369bd,_0x204655){var _0x210b94=_0x63eb('0x3d');var _0x2cd135,_0xec794e;var _0x2a1d29;var _0x323757={'encoding':_0x63eb('0x3e'),'method':'POST','timeout':0x2710,'url':_0x210b94,'headers':{'Content-Type':_0x63eb('0x3f')},'body':_0x63eb('0x40')+encodeURIComponent(JSON[_0x63eb('0x41')]([[[_0x63eb('0x42'),JSON[_0x63eb('0x41')]([_0x4369bd,_0x204655||'en',![],_0x63eb('0x43')]),null,_0x63eb('0x44')]]]))};return rp(_0x323757)[_0x63eb('0x2a')](function(_0x469899){try{_0x2a1d29=eval(_0x469899[_0x63eb('0x45')](0x5))[0x0][0x2];}catch(_0x1cd24f){throw new Error(_0x63eb('0x46')+_0x469899[_0x63eb('0x47')]);}if(!_0x2a1d29){if(_0x4369bd[_0x63eb('0x48')]>0xc8){throw new Error(_0x63eb('0x49'));}else{throw new Error('lang\x20\x22'+_0x204655+_0x63eb('0x4a'));}}try{_0x2a1d29=eval(_0x2a1d29)[0x0];}catch(_0x4a207f){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x63eb('0x47')]);}const _0x134131=_0x2a1d29;_0x2cd135=path['resolve'](__dirname,'tmp',rs[_0x63eb('0x36')](0x4)+_0x63eb('0x37'));fs[_0x63eb('0x28')](_0x2cd135,_0x2a1d29,{'encoding':_0x63eb('0x29')});_0xec794e=path[_0x63eb('0x25')](__dirname,_0x63eb('0x26'),rs[_0x63eb('0x36')](0x4)+_0x63eb('0x27'));return convertFile(_0x2cd135,_0xec794e);})[_0x63eb('0x2a')](function(){try{fs[_0x63eb('0x1f')](_0x2cd135);fs[_0x63eb('0x2b')](_0xec794e,_0x63eb('0x4b'));}catch(_0x1a9af9){logger[_0x63eb('0x17')](_0x1a9af9);}logger['info'](_0x63eb('0x4c'),_0xec794e[_0x63eb('0x2c')]('.')[0x0]);return _0xec794e[_0x63eb('0x2c')]('.')[0x0];});};exports['googleASR']=function(_0x3f4d3b,_0x359550,_0x369259){return google[_0x63eb('0x4d')](_0x3f4d3b,_0x359550,_0x369259)[_0x63eb('0x2a')](function(_0x44c2d1){logger['info'](_0x44c2d1[_0x63eb('0x4e')]);return rp(_0x44c2d1);})[_0x63eb('0x2a')](function(_0x4bf2ef){var _0x1b894f='';var _0x5b7371=0x0;try{fs[_0x63eb('0x1f')](_0x3f4d3b);}catch(_0x3697e1){logger['error'](_0x3697e1);}if(_0x4bf2ef&&_0x4bf2ef['results']){_0x1b894f=_0x4bf2ef[_0x63eb('0x4f')][_0x63eb('0x50')](function(_0x2f70c8){return _0x2f70c8&&_0x2f70c8[_0x63eb('0x51')][0x0]&&_0x2f70c8[_0x63eb('0x51')][0x0][_0x63eb('0x52')]?_0x2f70c8[_0x63eb('0x51')][0x0]['transcript']:'';})[_0x63eb('0x53')]('\x0a');_0x5b7371=_0x4bf2ef[_0x63eb('0x4f')]['map'](function(_0x2d7aea){return _0x2d7aea&&_0x2d7aea['alternatives'][0x0]&&_0x2d7aea['alternatives'][0x0][_0x63eb('0x54')]?_0x2d7aea[_0x63eb('0x51')][0x0]['confidence']:0x0;})[_0x63eb('0x53')]('\x0a');}logger[_0x63eb('0x1c')]('googleASR\x20transcription',_0x1b894f);logger[_0x63eb('0x1c')](_0x63eb('0x55'),_0x5b7371);return{'transcript':_0x1b894f,'confidence':_0x5b7371};})['catch'](function(_0x40829d){logger[_0x63eb('0x17')](_0x63eb('0x56'),_0x40829d[_0x63eb('0x16')],_0x40829d['name'],_0x40829d[_0x63eb('0x57')]);});};exports['googleDialogflow']=function(_0x5cea38,_0x3a598b,_0x13a8f5,_0x416c53){var _0x43f3c9=apiai(_0x3a598b,{'language':_0x416c53||'en'});return _0x43f3c9[_0x63eb('0x58')](_0x13a8f5,{'sessionId':md5(_0x5cea38)})[_0x63eb('0x2a')](function(_0x4ea9cc){logger['info'](JSON['stringify'](_0x4ea9cc));return{'source':_0x4ea9cc[_0x63eb('0x59')][_0x63eb('0x5a')],'resolvedQuery':_0x4ea9cc[_0x63eb('0x59')][_0x63eb('0x5b')],'action':_0x4ea9cc[_0x63eb('0x59')]['action'],'actionIncomplete':_0x4ea9cc['result'][_0x63eb('0x5c')],'speech':_0x4ea9cc[_0x63eb('0x59')][_0x63eb('0x5d')]['speech'],'score':_0x4ea9cc['result']['score'],'statusCode':_0x4ea9cc[_0x63eb('0x5e')][_0x63eb('0x5f')],'endConversation':_0x4ea9cc[_0x63eb('0x59')][_0x63eb('0x60')][_0x63eb('0x61')]||![],'isFallbackIntent':_0x4ea9cc['result']['metadata'][_0x63eb('0x62')]};});};exports[_0x63eb('0x63')]=function(_0x260ad8,_0x38157e,_0x4738f3,_0x72ddc0,_0x8be4c7,_0x2c4cf9){var _0x422a44=_0x72ddc0[_0x63eb('0x64')](/\\n/g,'\x0a');var _0x3b3f35={'credentials':{'private_key':_0x422a44,'client_email':_0x4738f3}};var _0x2c5b58=new dialogflow['SessionsClient'](_0x3b3f35);var _0x383954=_0x2c5b58[_0x63eb('0x65')](_0x38157e,md5(_0x260ad8));var _0x48507a={'session':_0x383954,'queryInput':{'text':{'text':_0x8be4c7,'languageCode':_0x2c4cf9}}};return _0x2c5b58['detectIntent'](_0x48507a)['then'](function(_0x2315bd){if(_0x2315bd&&_0x2315bd['length']){logger[_0x63eb('0x1c')](_0x63eb('0x66'),JSON[_0x63eb('0x41')](_0x2315bd));var _0x4050d8=_0x2315bd[0x0];if(_0x4050d8){var _0x45763e={'action':_0x4050d8[_0x63eb('0x67')]['action'],'allRequiredParamsPresent':_0x4050d8[_0x63eb('0x67')]['allRequiredParamsPresent'],'endConversation':_0x4050d8['queryResult'][_0x63eb('0x68')]&&_0x4050d8[_0x63eb('0x67')]['diagnosticInfo'][_0x63eb('0x69')]?_0x4050d8[_0x63eb('0x67')][_0x63eb('0x68')][_0x63eb('0x69')][_0x63eb('0x6a')][_0x63eb('0x6b')]:![],'fulfillmentText':_0x4050d8[_0x63eb('0x67')]['fulfillmentText'],'intentName':_0x4050d8['queryResult']['intent'][_0x63eb('0x6c')],'intentDisplayName':_0x4050d8[_0x63eb('0x67')][_0x63eb('0x6d')][_0x63eb('0x6e')],'isFallbackIntent':_0x4050d8[_0x63eb('0x67')][_0x63eb('0x6d')][_0x63eb('0x6f')],'languageCode':_0x4050d8['queryResult'][_0x63eb('0x70')],'queryText':_0x4050d8[_0x63eb('0x67')][_0x63eb('0x71')],'responseId':_0x4050d8[_0x63eb('0x72')],'score':_0x4050d8[_0x63eb('0x67')][_0x63eb('0x73')],'speech':_0x4050d8['queryResult'][_0x63eb('0x74')],'providerResponse':JSON[_0x63eb('0x41')](_0x2315bd)};return _0x45763e;}}});};exports[_0x63eb('0x75')]=function(_0x434bc7,_0x48a890,_0x167bf4,_0x3f08d4){return tilde[_0x63eb('0x4d')](_0x434bc7,_0x48a890,_0x167bf4,_0x3f08d4)['then'](function(_0x4247e5){try{fs['unlink'](_0x434bc7);}catch(_0x497ea6){logger[_0x63eb('0x17')](_0x497ea6);}logger['info']('Tilde\x20ASR\x20transcription',_0x4247e5[_0x63eb('0x52')]);logger[_0x63eb('0x1c')](_0x63eb('0x76'),_0x4247e5['confidence']);return _0x4247e5;});};exports[_0x63eb('0x77')]=function(_0x5c410c,_0x19f186,_0x53b90c,_0x38fb06,_0x30936e,_0x3b4058){var _0x481901=path[_0x63eb('0x25')](__dirname,_0x63eb('0x26'),rs[_0x63eb('0x36')](0x4)+_0x63eb('0x37'));var _0x10635e;return aws[_0x63eb('0x78')](_0x5c410c,_0x19f186,_0x53b90c,_0x38fb06,_0x30936e,_0x3b4058,_0x481901)[_0x63eb('0x2a')](function(){_0x10635e=path['resolve'](__dirname,_0x63eb('0x26'),rs[_0x63eb('0x36')](0x4)+_0x63eb('0x27'));return convertFile(_0x481901,_0x10635e);})[_0x63eb('0x2a')](function(){try{fs[_0x63eb('0x1f')](_0x481901);fs[_0x63eb('0x2b')](_0x10635e,_0x63eb('0x4b'));}catch(_0x7f58a7){logger['error'](_0x7f58a7);}return _0x10635e[_0x63eb('0x2c')]('.')[0x0];});};exports[_0x63eb('0x79')]=function(_0x50c139,_0x3c4b3d,_0x383a65,_0x30b09b,_0x31f77b,_0x2ab9cf){return aws[_0x63eb('0x7a')](_0x50c139,_0x3c4b3d,_0x383a65,_0x30b09b,_0x31f77b,_0x2ab9cf)['then'](function(_0x250dbf){logger[_0x63eb('0x1c')](JSON[_0x63eb('0x41')](_0x250dbf));return _0x250dbf;});};exports['ispeechTTS']=function(_0x1c6c3a,_0x24f142,_0x5ec65e,_0x5f3125){var _0x40e56c=util[_0x63eb('0x7b')](_0x63eb('0x7c'),ISPEECH_API,_0x1c6c3a,encodeURIComponent(_0x24f142),_0x5ec65e,_0x5f3125);var _0x31a730=path[_0x63eb('0x25')](__dirname,_0x63eb('0x26'),rs[_0x63eb('0x36')](0x4)+_0x63eb('0x37'));var _0x301456;return downloadFile(_0x40e56c,_0x31a730)[_0x63eb('0x2a')](function(){_0x301456=path[_0x63eb('0x25')](__dirname,_0x63eb('0x26'),rs[_0x63eb('0x36')](0x4)+_0x63eb('0x27'));return convertFile(_0x31a730,_0x301456);})['then'](function(){try{fs[_0x63eb('0x1f')](_0x31a730);fs['chmodSync'](_0x301456,'777');}catch(_0x1c033c){logger[_0x63eb('0x17')](_0x1c033c);}return _0x301456['split']('.')[0x0];});};exports[_0x63eb('0x7d')]=function(_0x529208,_0x3ddf51,_0xaca887,_0x1d43a2){var _0x9f351a=util[_0x63eb('0x7b')](_0x63eb('0x7e'),ISPEECH_API,_0x3ddf51,_0xaca887,base64Encode(_0x529208),_0x1d43a2?util['format'](_0x63eb('0x7f'),encodeURIComponent(_0x1d43a2)):_0x63eb('0x80'));return uploadFile(_0x9f351a)[_0x63eb('0x2a')](function(_0x4c0523){return querystring[_0x63eb('0x9')](_0x4c0523);});};exports['sestekNDA']=function(_0x4190cf,_0x16c159){return sestek['nda'](_0x4190cf,_0x16c159)['then'](function(_0x31fabd){logger[_0x63eb('0x1c')](JSON[_0x63eb('0x41')](_0x31fabd));var _0x249e4e={'speech':_0x31fabd[_0x63eb('0x81')],'action':_0x31fabd['channelData']?_0x31fabd['channelData'][_0x63eb('0x82')]:undefined,'actiondata':_0x31fabd[_0x63eb('0x83')]?_0x31fabd[_0x63eb('0x83')][_0x63eb('0x84')]:undefined};if(_0x31fabd[_0x63eb('0x83')]&&_0x31fabd[_0x63eb('0x83')][_0x63eb('0x85')]){return base64Decode(_0x31fabd[_0x63eb('0x83')][_0x63eb('0x85')][_0x63eb('0x86')],path[_0x63eb('0x25')](__dirname,_0x63eb('0x26'),rs[_0x63eb('0x36')](0x4)+_0x63eb('0x27')))[_0x63eb('0x2a')](function(_0x254285){_0x249e4e[_0x63eb('0x87')]=_0x254285;return _0x249e4e;});}return _0x249e4e;});};exports[_0x63eb('0x88')]=function(){return __dirname;};