diff --git a/lib/tasks/listen.js b/lib/tasks/listen.js index ef265a31..c0ab67b2 100644 --- a/lib/tasks/listen.js +++ b/lib/tasks/listen.js @@ -22,8 +22,6 @@ class TaskListen extends Task { this.results = {}; if (this.transcribe) this.transcribeTask = makeTask(logger, {'transcribe': opts.transcribe}, this); - - this._dtmfHandler = this._onDtmf.bind(this); } get name() { return TaskName.Listen; } @@ -31,6 +29,7 @@ class TaskListen extends Task { async exec(cs, ep) { await super.exec(cs); this.ep = ep; + this._dtmfHandler = this._onDtmf.bind(this, ep); try { this.hook = this.normalizeUrl(this.url, 'GET', this.wsAuth); @@ -148,7 +147,13 @@ class TaskListen extends Task { } - _onDtmf(evt) { + _onDtmf(ep, evt) { + this.logger.debug({evt}, `TaskListen:_onDtmf received dtmf ${evt.dtmf}`); + if (this.passDtmf && this.ep?.connected) { + const obj = {event: 'dtmf', dtmf: evt.dtmf, duration: evt.duration}; + this.ep.forkAudioSendText(obj) + .catch((err) => this.logger.info({err}, 'TaskListen:_onDtmf error sending dtmf')); + } if (evt.dtmf === this.finishOnKey) { this.logger.info(`TaskListen:_onDtmf terminating task due to dtmf ${evt.dtmf}`); this.results.digits = evt.dtmf;