mirror of
https://github.com/jambonz/jambonz-feature-server.git
synced 2025-12-19 04:17:44 +00:00
feat/836: capturing callSid for STT and TTS alerts (#838)
* feat/836: capturing callSid for STT and TTS alerts * feat/836: corrected assignment of callSid and added target_sid at few more alerts * update github action --------- Co-authored-by: Quan HL <quan.luuhoang8@gmail.com>
This commit is contained in:
5
.github/workflows/build.yml
vendored
5
.github/workflows/build.yml
vendored
@@ -12,6 +12,11 @@ jobs:
|
|||||||
node-version: 20
|
node-version: 20
|
||||||
- run: npm ci
|
- run: npm ci
|
||||||
- run: npm run jslint
|
- run: npm run jslint
|
||||||
|
- name: Install Docker Compose
|
||||||
|
run: |
|
||||||
|
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
||||||
|
sudo chmod +x /usr/local/bin/docker-compose
|
||||||
|
docker-compose --version
|
||||||
- run: docker pull drachtio/sipp
|
- run: docker pull drachtio/sipp
|
||||||
- run: npm test
|
- run: npm test
|
||||||
env:
|
env:
|
||||||
|
|||||||
@@ -873,7 +873,8 @@ class CallSession extends Emitter {
|
|||||||
writeAlerts({
|
writeAlerts({
|
||||||
alert_type: AlertType.TTS_FAILURE,
|
alert_type: AlertType.TTS_FAILURE,
|
||||||
account_sid: this.accountSid,
|
account_sid: this.accountSid,
|
||||||
vendor
|
vendor,
|
||||||
|
target_sid: this.callSid
|
||||||
}).catch((err) => this.logger.error({err}, 'Error writing tts alert'));
|
}).catch((err) => this.logger.error({err}, 'Error writing tts alert'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -996,7 +997,8 @@ class CallSession extends Emitter {
|
|||||||
writeAlerts({
|
writeAlerts({
|
||||||
alert_type: AlertType.STT_NOT_PROVISIONED,
|
alert_type: AlertType.STT_NOT_PROVISIONED,
|
||||||
account_sid: this.accountSid,
|
account_sid: this.accountSid,
|
||||||
vendor
|
vendor,
|
||||||
|
target_sid: this.callSid
|
||||||
}).catch((err) => this.logger.error({err}, 'Error writing tts alert'));
|
}).catch((err) => this.logger.error({err}, 'Error writing tts alert'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -543,7 +543,8 @@ class TaskGather extends SttTask {
|
|||||||
account_sid: this.cs.accountSid,
|
account_sid: this.cs.accountSid,
|
||||||
alert_type: AlertType.STT_FAILURE,
|
alert_type: AlertType.STT_FAILURE,
|
||||||
vendor: this.vendor,
|
vendor: this.vendor,
|
||||||
detail: err.message
|
detail: err.message,
|
||||||
|
target_sid: this.cs.callSid
|
||||||
});
|
});
|
||||||
}).catch((err) => this.logger.info({err}, 'Error generating alert for tts failure'));
|
}).catch((err) => this.logger.info({err}, 'Error generating alert for tts failure'));
|
||||||
}
|
}
|
||||||
@@ -966,6 +967,7 @@ class TaskGather extends SttTask {
|
|||||||
alert_type: AlertType.STT_FAILURE,
|
alert_type: AlertType.STT_FAILURE,
|
||||||
message: `Custom speech vendor ${this.vendor} error: ${evt.error}`,
|
message: `Custom speech vendor ${this.vendor} error: ${evt.error}`,
|
||||||
vendor: this.vendor,
|
vendor: this.vendor,
|
||||||
|
target_sid: cs.callSid
|
||||||
}).catch((err) => this.logger.info({err}, 'Error generating alert for jambonz custom connection failure'));
|
}).catch((err) => this.logger.info({err}, 'Error generating alert for jambonz custom connection failure'));
|
||||||
if (!(await this._startFallback(cs, ep, evt))) {
|
if (!(await this._startFallback(cs, ep, evt))) {
|
||||||
this.notifyTaskDone();
|
this.notifyTaskDone();
|
||||||
|
|||||||
@@ -114,7 +114,8 @@ class TaskSay extends TtsTask {
|
|||||||
writeAlerts({
|
writeAlerts({
|
||||||
account_sid,
|
account_sid,
|
||||||
alert_type: AlertType.TTS_NOT_PROVISIONED,
|
alert_type: AlertType.TTS_NOT_PROVISIONED,
|
||||||
vendor
|
vendor,
|
||||||
|
target_sid: cs.callSid
|
||||||
}).catch((err) => this.logger.info({err}, 'Error generating alert for no tts'));
|
}).catch((err) => this.logger.info({err}, 'Error generating alert for no tts'));
|
||||||
throw new Error('no provisioned speech credentials for TTS');
|
throw new Error('no provisioned speech credentials for TTS');
|
||||||
}
|
}
|
||||||
@@ -185,7 +186,8 @@ class TaskSay extends TtsTask {
|
|||||||
account_sid: cs.accountSid,
|
account_sid: cs.accountSid,
|
||||||
alert_type: AlertType.TTS_FAILURE,
|
alert_type: AlertType.TTS_FAILURE,
|
||||||
vendor,
|
vendor,
|
||||||
detail: err.message
|
detail: err.message,
|
||||||
|
target_sid: cs.callSid
|
||||||
}).catch((err) => this.logger.info({err}, 'Error generating alert for tts failure'));
|
}).catch((err) => this.logger.info({err}, 'Error generating alert for tts failure'));
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
@@ -201,7 +203,7 @@ class TaskSay extends TtsTask {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async exec(cs, {ep}) {
|
async exec(cs, {ep}) {
|
||||||
const {srf, accountSid:account_sid} = cs;
|
const {srf, accountSid:account_sid, callSid:target_sid} = cs;
|
||||||
const {writeAlerts, AlertType} = srf.locals;
|
const {writeAlerts, AlertType} = srf.locals;
|
||||||
const {addFileToCache} = srf.locals.dbHelpers;
|
const {addFileToCache} = srf.locals.dbHelpers;
|
||||||
const engine = this.synthesizer.engine || cs.synthesizer?.engine || 'neural';
|
const engine = this.synthesizer.engine || cs.synthesizer?.engine || 'neural';
|
||||||
@@ -312,7 +314,8 @@ class TaskSay extends TtsTask {
|
|||||||
account_sid,
|
account_sid,
|
||||||
alert_type: AlertType.TTS_FAILURE,
|
alert_type: AlertType.TTS_FAILURE,
|
||||||
vendor,
|
vendor,
|
||||||
detail: evt.variable_tts_error
|
detail: evt.variable_tts_error,
|
||||||
|
target_sid
|
||||||
}).catch((err) => this.logger.info({err}, 'Error generating alert for no tts'));
|
}).catch((err) => this.logger.info({err}, 'Error generating alert for no tts'));
|
||||||
}
|
}
|
||||||
if (evt.variable_tts_cache_filename && !this.killed) {
|
if (evt.variable_tts_cache_filename && !this.killed) {
|
||||||
|
|||||||
@@ -178,7 +178,8 @@ class SttTask extends Task {
|
|||||||
writeAlerts({
|
writeAlerts({
|
||||||
account_sid: cs.accountSid,
|
account_sid: cs.accountSid,
|
||||||
alert_type: AlertType.STT_NOT_PROVISIONED,
|
alert_type: AlertType.STT_NOT_PROVISIONED,
|
||||||
vendor
|
vendor,
|
||||||
|
target_sid: cs.callSid
|
||||||
}).catch((err) => this.logger.info({err}, 'Error generating alert for no stt'));
|
}).catch((err) => this.logger.info({err}, 'Error generating alert for no stt'));
|
||||||
this.notifyTaskDone();
|
this.notifyTaskDone();
|
||||||
throw new Error(`No speech-to-text service credentials for ${vendor} have been configured`);
|
throw new Error(`No speech-to-text service credentials for ${vendor} have been configured`);
|
||||||
@@ -309,6 +310,7 @@ class SttTask extends Task {
|
|||||||
message: 'STT failure reported by vendor',
|
message: 'STT failure reported by vendor',
|
||||||
detail: evt.error,
|
detail: evt.error,
|
||||||
vendor: this.vendor,
|
vendor: this.vendor,
|
||||||
|
target_sid: cs.callSid
|
||||||
}).catch((err) => this.logger.info({err}, `Error generating alert for ${this.vendor} connection failure`));
|
}).catch((err) => this.logger.info({err}, `Error generating alert for ${this.vendor} connection failure`));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -321,6 +323,7 @@ class SttTask extends Task {
|
|||||||
alert_type: AlertType.STT_FAILURE,
|
alert_type: AlertType.STT_FAILURE,
|
||||||
message: `Failed connecting to ${this.vendor} speech recognizer: ${reason}`,
|
message: `Failed connecting to ${this.vendor} speech recognizer: ${reason}`,
|
||||||
vendor: this.vendor,
|
vendor: this.vendor,
|
||||||
|
target_sid: cs.callSid
|
||||||
}).catch((err) => this.logger.info({err}, `Error generating alert for ${this.vendor} connection failure`));
|
}).catch((err) => this.logger.info({err}, `Error generating alert for ${this.vendor} connection failure`));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -605,6 +605,7 @@ class TaskTranscribe extends SttTask {
|
|||||||
alert_type: AlertType.STT_FAILURE,
|
alert_type: AlertType.STT_FAILURE,
|
||||||
message: `Custom speech vendor ${this.vendor} error: ${evt.error}`,
|
message: `Custom speech vendor ${this.vendor} error: ${evt.error}`,
|
||||||
vendor: this.vendor,
|
vendor: this.vendor,
|
||||||
|
target_sid: cs.callSid
|
||||||
}).catch((err) => this.logger.info({err}, 'Error generating alert for jambonz custom connection failure'));
|
}).catch((err) => this.logger.info({err}, 'Error generating alert for jambonz custom connection failure'));
|
||||||
if (!(await this._startFallback(cs, _ep, evt))) {
|
if (!(await this._startFallback(cs, _ep, evt))) {
|
||||||
this.notifyTaskDone();
|
this.notifyTaskDone();
|
||||||
|
|||||||
@@ -152,7 +152,8 @@ class TtsTask extends Task {
|
|||||||
account_sid: cs.accountSid,
|
account_sid: cs.accountSid,
|
||||||
alert_type: AlertType.TTS_FAILURE,
|
alert_type: AlertType.TTS_FAILURE,
|
||||||
vendor,
|
vendor,
|
||||||
detail: err.message
|
detail: err.message,
|
||||||
|
target_sid: cs.callSid
|
||||||
}).catch((err) => this.logger.info({err}, 'Error generating alert for tts failure'));
|
}).catch((err) => this.logger.info({err}, 'Error generating alert for tts failure'));
|
||||||
this.notifyError({msg: 'TTS error', details: err.message || err});
|
this.notifyError({msg: 'TTS error', details: err.message || err});
|
||||||
throw err;
|
throw err;
|
||||||
|
|||||||
@@ -210,7 +210,8 @@ module.exports = (logger) => {
|
|||||||
account_sid: cs.accountSid,
|
account_sid: cs.accountSid,
|
||||||
alert_type: AlertType.STT_FAILURE,
|
alert_type: AlertType.STT_FAILURE,
|
||||||
vendor: vendor,
|
vendor: vendor,
|
||||||
detail: err.message
|
detail: err.message,
|
||||||
|
target_sid: cs.callSid
|
||||||
});
|
});
|
||||||
}).catch((err) => logger.info({err}, 'Error generating alert for tts failure'));
|
}).catch((err) => logger.info({err}, 'Error generating alert for tts failure'));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user