KI-AGENT: Asterisk-Stand ohne FreePBX versionieren

This commit is contained in:
2026-05-21 22:25:01 +02:00
parent cc34acac3e
commit 266c07d820
13 changed files with 66 additions and 117 deletions

View File

@@ -265,6 +265,7 @@ const renderProviderExtensionsConfig = (trunk: any) => {
const outboundPrefix = asteriskValue(trunk.outboundPrefix) || "0"
const escapedPrefix = outboundPrefix.replace(/[^0-9*#+]/g, "")
const callerId = asteriskValue(trunk.callerId) || asteriskValue(trunk.sipUser)
const inboundDid = callerId.replace(/[^0-9+]/g, "")
return [
"; Von FEDEO generiert. Änderungen im Container können überschrieben werden.",
@@ -282,6 +283,12 @@ const renderProviderExtensionsConfig = (trunk: any) => {
" same => n,Hangup()",
"",
`[from-${providerKey}]`,
...(inboundDid ? [
`exten => ${inboundDid},1,NoOp(FEDEO eingehend über ${provider.label} DID: $` + "{EXTEN})",
` same => n,Dial(PJSIP/${inboundExtension},30)`,
" same => n,Hangup()",
"",
] : []),
`exten => s,1,NoOp(FEDEO eingehend über ${provider.label})`,
` same => n,Dial(PJSIP/${inboundExtension},30)`,
" same => n,Hangup()",
@@ -293,6 +300,25 @@ const renderProviderExtensionsConfig = (trunk: any) => {
].join("\n")
}
const renderWebRtcConfig = (trunk: any) => {
const externalMediaAddress = asteriskValue(trunk?.externalMediaAddress || trunk?.externalSignalingAddress)
if (!externalMediaAddress) {
return [
"; Von FEDEO generiert.",
"; Kein externes WebRTC-Media-Rewrite konfiguriert.",
"",
].join("\n")
}
return [
"; Von FEDEO generiert. Diese Datei wird innerhalb des FEDEO-WebRTC-Templates inkludiert.",
`media_address=${externalMediaAddress}`,
"bind_rtp_to_media_address=yes",
"",
].join("\n")
}
const renderTelekomTransportConfig = (trunk: any) => {
const externalSignalingAddress = asteriskValue(trunk?.externalSignalingAddress)
const externalMediaAddress = asteriskValue(trunk?.externalMediaAddress || trunk?.externalSignalingAddress)
@@ -339,6 +365,10 @@ const writeAsteriskTrunkConfig = async (trunk: any) => {
name: "pjsip.transport.conf",
content: renderTelekomTransportConfig(trunk),
},
{
name: "pjsip.webrtc.conf",
content: renderWebRtcConfig(trunk),
},
]
await Promise.all(files.map(async (file) => {