Files
jambonz-feature-server/lib/tasks/sip_decline.js
T
rhonda hollis f567049bfb refactor to remove Redis
- prevent drachtio from auto passing the non-success response
2026-05-18 09:06:24 -07:00

40 lines
964 B
JavaScript

const Task = require('./task');
const {TaskName, TaskPreconditions, CallStatus} = require('../utils/constants');
/**
* Rejects an incoming call with user-specified status code and reason
*/
class TaskSipDecline extends Task {
constructor(logger, opts) {
super(logger, opts);
this.preconditions = TaskPreconditions.UnansweredCall;
this.headers = this.data.headers || {};
}
get name() { return TaskName.SipDecline; }
async exec(cs, {res}) {
super.exec(cs);
res.send(this.data.status, this.data.reason, {
headers: {
'X-Reason': 'SIP Decline Verb',
...this.headers,
...cs._traceHeaders
}
}, (err) => {
if (!err) {
// Call was successfully declined
cs._callReleased();
}
});
cs.emit('callStatusChange', {
callStatus: CallStatus.Failed,
sipStatus: this.data.status,
sipReason: this.data.reason
});
}
}
module.exports = TaskSipDecline;