mirror of
https://github.com/jambonz/jambonz-feature-server.git
synced 2026-10-03 17:54:12 +00:00
feat: support srtpEncryption on dial verb for sip URI targets (#1568)
* feat: support srtpEncryption on dial verb for sip URI targets Reads the new dial.srtpEncryption option and, for sip: URI targets, forwards it to sbc-outbound as an X-Jambonz-SRTP header so the outbound leg negotiates encrypted media (SRTP) — e.g. to a sips:/TLS endpoint such as LiveKit. No behavior change when the option is unset. Requires @jambonz/verb-specifications with the srtpEncryption spec (dependency bump to follow once published) and sbc-outbound honoring the X-Jambonz-SRTP header. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * update verb specification --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
9973670a6c
commit
cdc9070488
@@ -110,6 +110,7 @@ class TaskDial extends Task {
|
||||
this.boostAudioSignal = this.data.boostAudioSignal;
|
||||
this._mediaPath = MediaPath.FullMedia;
|
||||
this.forwardPAI = this.data.forwardPAI;
|
||||
this.srtpEncryption = this.data.srtpEncryption;
|
||||
|
||||
if (this.dtmfHook) {
|
||||
const {parentDtmfCollector, childDtmfCollector} = parseDtmfOptions(logger, this.data.dtmfCapture || {});
|
||||
|
||||
@@ -84,7 +84,11 @@ class SingleDialer extends Emitter {
|
||||
'X-Jambonz-Routing': this.target.type,
|
||||
'X-Call-Sid': this.callSid,
|
||||
...(this.applicationSid && {'X-Application-Sid': this.applicationSid}),
|
||||
...(this.target.proxy && {'X-SIP-Proxy': this.target.proxy})
|
||||
...(this.target.proxy && {'X-SIP-Proxy': this.target.proxy}),
|
||||
/* request encrypted media (SRTP) on the outbound leg for sip: URI targets;
|
||||
sbc-outbound honors X-Jambonz-SRTP when forwarding the call */
|
||||
...('sip' === this.target.type && this.dialTask?.srtpEncryption &&
|
||||
{'X-Jambonz-SRTP': this.dialTask.srtpEncryption})
|
||||
};
|
||||
if (srf.locals.fsUUID) {
|
||||
opts.headers = {
|
||||
|
||||
Generated
+4
-4
@@ -18,7 +18,7 @@
|
||||
"@jambonz/speech-utils": "^0.2.30",
|
||||
"@jambonz/stats-collector": "^0.1.10",
|
||||
"@jambonz/time-series": "^0.2.17",
|
||||
"@jambonz/verb-specifications": "^0.1.12",
|
||||
"@jambonz/verb-specifications": "^0.1.13",
|
||||
"@modelcontextprotocol/sdk": "^1.9.0",
|
||||
"@opentelemetry/api": "^1.8.0",
|
||||
"@opentelemetry/exporter-jaeger": "^1.23.0",
|
||||
@@ -1643,9 +1643,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jambonz/verb-specifications": {
|
||||
"version": "0.1.12",
|
||||
"resolved": "https://registry.npmjs.org/@jambonz/verb-specifications/-/verb-specifications-0.1.12.tgz",
|
||||
"integrity": "sha512-Ddqk78om3k2l1Kj6IGB945W8KOOEwKPLxWeXao6H4jMCbrRponCN+gFOOFUC8q4KRmoe4yaQ6Y02UkejPtaYzQ==",
|
||||
"version": "0.1.13",
|
||||
"resolved": "https://registry.npmjs.org/@jambonz/verb-specifications/-/verb-specifications-0.1.13.tgz",
|
||||
"integrity": "sha512-z/Nb1RE2ADJDAqcOOlevjWytZOnLyboErn6ZZRtz1VVYsrqaAlctYWaLOw6edFcrF9bfr9XhT6uBSma/1Na/Sw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"debug": "^4.3.4",
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
"@jambonz/speech-utils": "^0.2.30",
|
||||
"@jambonz/stats-collector": "^0.1.10",
|
||||
"@jambonz/time-series": "^0.2.17",
|
||||
"@jambonz/verb-specifications": "^0.1.12",
|
||||
"@jambonz/verb-specifications": "^0.1.13",
|
||||
"@modelcontextprotocol/sdk": "^1.9.0",
|
||||
"@opentelemetry/api": "^1.8.0",
|
||||
"@opentelemetry/exporter-jaeger": "^1.23.0",
|
||||
|
||||
Reference in New Issue
Block a user