diff --git a/lib/tasks/dial.js b/lib/tasks/dial.js index 01ac59ff..13a467a8 100644 --- a/lib/tasks/dial.js +++ b/lib/tasks/dial.js @@ -83,6 +83,7 @@ class TaskDial extends Task { this.confirmHook = this.data.confirmHook; this.confirmMethod = this.data.confirmMethod; this.dtmfHook = this.data.dtmfHook; + this.proxy = this.data.proxy; if (this.dtmfHook) { const {parentDtmfCollector, childDtmfCollector} = parseDtmfOptions(logger, this.data.dtmfCapture || {}); @@ -245,7 +246,7 @@ class TaskDial extends Task { const {req, srf} = cs; const {getSBC} = srf.locals; const {lookupTeamsByAccount} = srf.locals.dbHelpers; - const sbcAddress = getSBC(); + const sbcAddress = this.proxy || getSBC(); const teamsInfo = {}; if (!sbcAddress) throw new Error('no SBC found for outbound call'); diff --git a/lib/tasks/dialogflow/index.js b/lib/tasks/dialogflow/index.js index ad776b10..4bba0e06 100644 --- a/lib/tasks/dialogflow/index.js +++ b/lib/tasks/dialogflow/index.js @@ -83,6 +83,9 @@ class Dialogflow extends Task { this.ep.removeCustomEventListener('dialogflow::end_of_utterance'); this.ep.removeCustomEventListener('dialogflow::error'); + this.performAction({dialogflowResult: 'caller hungup'}) + .catch((err) => this.logger.error({err}, 'dialogflow - error w/ action webook')); + await this.ep.api('uuid_break', this.ep.uuid).catch((err) => this.logger.info(err, 'Error killing audio')); } this.notifyTaskDone(); @@ -97,7 +100,8 @@ class Dialogflow extends Task { this.ep.addCustomEventListener('dialogflow::end_of_utterance', this._onEndOfUtterance.bind(this, ep, cs)); this.ep.addCustomEventListener('dialogflow::error', this._onError.bind(this, ep, cs)); - const creds = JSON.stringify(JSON.parse(this.credentials)); + const obj = typeof this.credentials === 'string' ? JSON.parse(this.credentials) : this.credentials; + const creds = JSON.stringify(obj); await this.ep.set('GOOGLE_APPLICATION_CREDENTIALS', creds); } catch (err) { diff --git a/lib/tasks/specs.json b/lib/tasks/specs.json index 6760789c..597f4862 100644 --- a/lib/tasks/specs.json +++ b/lib/tasks/specs.json @@ -112,6 +112,7 @@ "target": ["#target"], "timeLimit": "number", "timeout": "number", + "proxy": "string", "transcribe": "#transcribe" }, "required": [ @@ -120,7 +121,7 @@ }, "dialogflow": { "properties": { - "credentials": "string", + "credentials": "object|string", "project": "string", "lang": "string", "actionHook": "object|string", @@ -188,6 +189,7 @@ "from": "string", "speech_synthesis_vendor": "string", "speech_synthesis_voice": "string", + "speech_synthesis_language": "string", "speech_recognizer_vendor": "string", "speech_recognizer_language": "string", "tag": "object",