Frage zum Dialplan mit PJSIP CHANNEL

Hallo zusammen komme einfach nicht weiter.

Folgende Situation

raspi mit asterisk22 und baresip installiert verbunden mit usb soundkarte verbindet sich über AUDIO

mit einen weiteren raspi mit asterisk22 und baresip installiert über usb soundkarte via kabel ,also mic to speaker usw.

also : RASPI mit asterisk und baresip-usb soundkarte ————audiokabel ————-usb soundkatre-baresip,asterisk RASPI .

auf beiden Raspis wird per start script ein anruf von baresip nach asterisk über die nummer 100 gestartet, somit besteht ein audiolink zwischen asterisk1 und asterisk2 und beide können auf DTMF Inband reagieren.

dialplan1:

[audiolink]

exten => 100,1,Answer()
exten => 100,2,Set(DTMF_MODE=inband)
exten => 100,3,Read(dtmfinput,3,86400)
exten => 100,5,SayDigits(${dtmf_input})
exten => 100,6,GotoIf($[“${dtmf_input}” = “702”]?incoming,702,1:noservice,s,1)

exten => 701,1,Answer()
exten => 701,n,System(/disconnect-audiolink.sh) ; mit diesem script wird der bestehende PJSIP CHANNEL zwischen asterisk1 und baresip1 unterbrochen
exten => 701,n,NoOp(Script executed)
exten => 701,n,Wait(3)
exten => 701,n,Set(DTMF_MODE=inband)
exten => 701,n,Dial(PJSIP/baresip1,60,tr)

[incoming]
exten => 702,1,Playback(activated)
exten => 702,2,Dial(PJSIP/702CCN,60,tr) ; Nebenstelle Telefon
exten => 702,3,Hangup()

[noservice]
exten => s,1,Playback(invalid) ; Dieser Kontext für alle anderen Eingaben
exten => s,2,Goto(audiolink,100,3)
exten => s,3,Hangup()

dialplan2:

[audiolink]

exten => 100,1,Answer()
exten => 100,2,Set(DTMF_MODE=inband)
exten => 100,3,Read(dtmfinput,3,86400)
exten => 100,5,SayDigits(${dtmf_input})
exten => 100,6,GotoIf($[“${dtmf_input}” = “701”]?incoming,701,1:noservice,s,1)

exten => 702,1,Answer()
exten => 702,n,System(/disconnect-audiolink.sh) ; mit diesem script wird der bestehende PJSIP CHANNEL zwischen asterisk2 und baresip2 unterbrochen
exten => 702,n,NoOp(Script executed)
exten => 702,n,Wait(3)
exten => 702,n,Set(DTMF_MODE=inband)
exten => 702,n,Dial(PJSIP/baresip2,60,tr)

[incoming]
exten => 701,1,Playback(activated)
exten => 701,2,Dial(PJSIP/701CCN,60,tr) ; Nebenstelle Telefon
exten => 701,3,Hangup()

[noservice]
exten => s,1,Playback(invalid) ; Dieser Kontext für alle anderen Eingaben
exten => s,2,Goto(audiolink,100,3)
exten => s,3,Hangup()

alles funktioniert soweit problem is nur :

wenn im dialplan

exten => 701,1,Answer()
exten => 701,n,System(/disconnect-audiolink.sh) ; mit diesem script wird der bestehende PJSIP CHANNEL zwischen asterisk1 und baresip1 unterbrochen
exten => 701,n,NoOp(Script executed)
exten => 701,n,Wait(3)
exten => 701,n,Set(DTMF_MODE=inband)
exten => 701,n,Dial(PJSIP/baresip1,60,tr)
ausgeführt wird dann muss nachdem aufgelegt wurde wieder das start script ausgeführt werden ,das die 100 anruft damit der audiolink wieder auf DTMF reagieren kann .

das ist das problem . Ich habe es schon mit

exten => h,1,System(/autocall.sh)

versucht , was nicht funktioniert ,weil das script schon dann direkt nach

exten => 701,n,System(/disconnect-audiolink.sh)

ausgeführt wird und der dial befehl

exten => 701,n,Dial(PJSIP/baresip1,60,tr)

nicht mehr ausgeführt werden kann.

vielleicht hat jemande eine idee oder einen besseren weg wie es funktionieren kann

On Sunday 19 October 2025 at 16:50:15, dean0103 via Asterisk Community wrote:

exten => 701,n,System(/disconnect-audiolink.sh) ; mit diesem script wird
der bestehende PJSIP CHANNEL zwischen asterisk1 und baresip1
unterbrochen

dann muss nachdem aufgelegt wurde wieder das start script ausgeführt werden

exten => h,1,System(/autocall.sh)

I suggest you show us the content of these three scripts.

Antony.


Ich habe gerade ein besonderes Bier getrunken.
Jetzt habe ich kein Bock mehr :frowning:

autocall.sh

baresip -e "/dial 100@127.0.0."1 & # baresip neu starten
echo “baresip neu gestartet!”

disconnect-audiolink.sh

#!/bin/bash

Suche nach allen PJSIP-Kanälen mit dem Präfix “PJSIP/222CCN”

CHANNELS=$(asterisk -rx “pjsip show channels” | grep -oP ‘PJSIP/\S+/Read’)

Debugging: Ausgabe der gefundenen Kanäle

echo “Gefundene Kanäle:”
echo “$CHANNELS”

Überprüfe, ob Kanäle gefunden wurden

if [ -z “$CHANNELS” ]; then
echo “Keine Kanäle gefunden, die mit ‘PJSIP/222CCN’ beginnen.”
else

Alle gefundenen Kanäle durchgehen und trennen

for CHANNEL in $CHANNELS; do

Debugging: Zeige den Kanal vor der Bearbeitung

echo “Ursprünglicher Kanal: $CHANNEL”

    # Entferne alles nach dem ersten "/Read" (entfernt "/Read")
    BASE_CHANNEL=$(echo "$CHANNEL" | sed 's#/Read##')

    # Debugging: Ausgabe des bereinigten Kanalnamens
    echo "Bereinigter Kanal: $BASE_CHANNEL"

    # Kanal mit "hangup request" trennen
    asterisk -rx "channel request hangup $BASE_CHANNEL"
done

fi

On Sunday 19 October 2025 at 16:50:15, dean0103 via Asterisk Community wrote:

exten => 100,1,Answer()
exten => 100,2,Set(DTMF_MODE=inband)
exten => 100,3,Read(dtmfinput,3,86400)
exten => 100,5,SayDigits(${dtmf_input})
exten => 100,6,GotoIf($[“${dtmf_input}” =
“702”]?incoming,702,1:noservice,s,1)

You do realise you have missed out priority 4? I’m not sure that that’s the
problem, but it’s not good. I recommend replacing all digits other than 1
with n

exten => 701,1,Answer()

How is any call getting to extension 701?

I don’t see it being dialled at any point in the dialplan or the scripts you
shared.

The closest is:

exten => 701,2,Dial(PJSIP/701CCN,60,tr) ; Nebenstelle Telefon

Maybe I just don’t understand what “CCN” is supposed to do here.

Antony.


Tinned food was developed for the British Navy in 1813.

The tin opener was not invented until 1858.

Dialplan correction

exten => 100,1,Answer()
exten => 100,2,Set(DTMF_MODE=inband)
exten => 100,3,Read(dtmfinput,3,86400)
exten => 100,4,SayDigits(${dtmf_input})
exten => 100,5,GotoIf($[“${dtmf_input}” =“702”]?incoming,702,1:noservice,s,1)

thx missed that

the call is getting to extension 701 via a normal phone connected to asterisk1

if ii dial 701 by that phone i come to extension 701 and the audiolink connection between asterisk and baresip is disconnected and a new connection between asterisk extension 701 and baresip is established and i can dial 701 and via DTMF inband over that audio connection the phone on asterisk2 on the other end of the audioline will ring with this dialplan

[incoming]
exten => 701,1,Playback(activated)
exten => 701,2,Dial(PJSIP/701CCN,60,tr) ; Nebenstelle Telefon

there is always an audio connection between asterisk1 and asterisk2 over baresip1 and 2 .I took baresip because its very stable and easy to configure with usb soundcard and alsa.

my mistake ! should be

exten => 702,2,Dial(PJSIP/702,60,tr) ; Nebenstelle Telefon

and exten => 701,2,Dial(PJSIP/701,60,tr) ; Nebenstelle Telefon

anyway everything is working exept the starting script it works once

disconnect-audiolink.sh is working

but i need a script that always restarts the audiolink after the connection is disconnected and it has to start after a hangup , thats the problem