[Frage] Anruflänge begrenzen...

kabelman

Neuer User
Mitglied seit
25 Feb 2007
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
Hallo Leute... ich habe ein kleines Problem.
Ich habe einen kleinen Dialplan... das automatisch Anrufe tätigt.. der Hintergrund ist relativ unwichtig..
Mir geht es nun darum, dass ich jegliche Anrufe vom Asterisk aus, auf eine Dauer von z.B. 60 Min begrenzen möchte...
Gibt es dafür eine generelle Möglichkeit?

Habe nämlich das versucht:
exten => s,n,Set(TIMEOUT(absolute)=3600)

Leider klappt das nur bedingt... wenn irgendwas schief läuft... kA was, dann läuft das Gespräch auch einfach weiter :mad:

Wäre super, wenn jemand nen Tipp hätte ;)

danke schomal!

lg
Tobi
 
R

rentier-s

Guest
Es gibt zwei Timeout Flags für den Dial Befehl.

http://www.voip-info.org/wiki/view/Asterisk+cmd+Dial schrieb:
L(x[:y][:z]): Limit the call to 'x' ms, warning when 'y' ms are left, repeated every 'z' ms) Only 'x' is required, 'y' and 'z' are optional.

S(n): Hangup the call n seconds AFTER called party picks up.
 

kabelman

Neuer User
Mitglied seit
25 Feb 2007
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
Danke... ich hätte wohl noch ergänzen sollen, dass der Anruf über ein callfile getätigt wird... Ein Dial() ist also garnicht vorhanden...
Gibt es hierbei auch eine Möglichkeit?

danke..
 
R

rentier-s

Guest
Ja, das Call-File auf einen Local-Channel schicken und dort das Dial mit Timeout ausführen.
 

kabelman

Neuer User
Mitglied seit
25 Feb 2007
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
Ich habe dazu leider nichts gefunden... kannst du mir dazu vielleicht ein paar Tipps bzw. Beispiele zeigen?
danke dir ;)
 

kabelman

Neuer User
Mitglied seit
25 Feb 2007
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
Hmm... danke erstmal... aber da gibts bei mir Fehler :(
kann ich in dem context dann nach der "exten=>_X.,1,Dial" Zeile normal mit "exten=>s,n,Answer" usw. weitermachen?
 
R

rentier-s

Guest
Äh ja, könntest Du, nur halt mit s,1 und nicht mit s,n. Aber am restlichen Aufbau ändert sich eigentlich nichts, sowohl extensions.conf als auch Call-File bleiben ansonsten unverändert.
 

kabelman

Neuer User
Mitglied seit
25 Feb 2007
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
ahh ok jetzt gehts! danke dir ;)

Aber... S(ms) oder doch sekunden?
Habe jetzt mal S(20) versucht... da bricht aber nichts ab :(

edit:
Ah ok... hatte noch ein exten => s,n,Set(TIMEOUT(absolute)=3300) im context...
Das scheint das L und S aufzuheben....
 
Zuletzt bearbeitet:

kabelman

Neuer User
Mitglied seit
25 Feb 2007
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
Kleiner Tipp, für alle die es interessiert.
Die Funktion S() bzw. L() läuft nicht stabil und darauf ist kein Verlass!
Eine kleine Unstimmigkeit im Callfile o.ä. reicht aus, dass der Anruf nicht nach der angegebenen Zeit abbricht!
 

kabelman

Neuer User
Mitglied seit
25 Feb 2007
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
Nicht parat...
Aber wenn ich heute Abend zuhause bin, werde ich das ganze mal laufen lassen.
Wenn wieder ein Fehler auftritt, werde ich mal meine Scripte + Log hochladen..

Ist wirklich unschön die Sache... da ich einen SIP Anbieter habe, bei dessen Festnetzflat ein Limit von 1 Std. besteht. Anrufe die eine Sekunde länger sind, werden komplett sekundengenau abgerechnet... :(


///

Also hier erstmal die entsprechende Extension:
Code:
[newautocall]
exten => _X.,1,Dial(SIP/${EXTEN}@${ltg},,L(3300000))
exten => s,1,Answer
exten => s,n,Set(TIMEOUT(absolute)=3300)
exten => s,n,Wait(3)
exten => s,n,SendDTMF(${pin})
exten => s,n,NoOp(Leitung:${ltg})
exten => s,n,NoOp(Position:${nr})
exten => s,n,NoOp(Nummer:${numnow})
exten => s,n,Set(i=1)
exten => s,n,While($[${i} < 80])
exten => s,n,NoOp(Runde:${i})
exten => s,n,Background(1minute)
exten => s,n,Set(i=$[${i} + 1])
exten => s,n,EndWhile()
exten => s,n,Hangup()

exten => h,1,System(/etc/asterisk/neu.sh ${ltg} ${nr}+1)

;exten => t,1,System(/etc/asterisk/neu.sh ${ltg} ${nr}+1)
exten => T,1,System(/etc/asterisk/neu.sh ${ltg} ${nr}+1)
und hier noch die shell datei:

Code:
ltg=$1
declare -i nummer=$2

anummern=( 
0466xxx 
0570xxx 
0712xxx
usw.
)

apins=( 
9xxx 
5xxx
6xxx 
usw.
)

declare -i nummer_neu=${#anummern[*]}

echo 'MaxRetries: 5' >> /var/spool/asterisk/tempcall/neuerAnruf$ltg.call
echo 'RetryTime: 10' >> /var/spool/asterisk/tempcall/neuerAnruf$ltg.call
echo 'WaitTime: 30' >> /var/spool/asterisk/tempcall/neuerAnruf$ltg.call
echo 'Context: newautocall' >> /var/spool/asterisk/tempcall/neuerAnruf$ltg.call
echo 'Extension: s' >> /var/spool/asterisk/tempcall/neuerAnruf$ltg.call
echo 'Priority: 1' >> /var/spool/asterisk/tempcall/neuerAnruf$ltg.call
echo 'Set: nr='$nummer >> /var/spool/asterisk/tempcall/neuerAnruf$ltg.call
echo 'Set: ltg='$ltg >> /var/spool/asterisk/tempcall/neuerAnruf$ltg.call

echo 'Set: numnow='${anummern[$nummer]} >> /var/spool/asterisk/tempcall/neuerAnruf$ltg.call
#
#if [$nummer -gt 8]
#then echo 'Set: numnow=1' >> /var/spool/asterisk/tempcall/neuerAnruf$ltg.call
#else echo 'Set: numnow='${anummern[$nummer]} >> /var/spool/asterisk/tempcall/neuerAnruf$ltg.call
#
echo 'Set: pin='${apins[$nummer]} >> /var/spool/asterisk/tempcall/neuerAnruf$ltg.call
echo 'Channel: LOCAL/'${anummern[$nummer]}'@newautocall' >> /var/spool/asterisk/tempcall/neuerAnruf$ltg.call

touch -d "10 seconds" /var/spool/asterisk/tempcall/neuerAnruf$ltg.call
mv /var/spool/asterisk/tempcall/neuerAnruf$ltg.call /var/spool/asterisk/outgoing/
Das Script läuft jetzt erstmal... sobald Fehler auftreten schreibe ich sie noch hier hin.

Bisher jedoch nichts bis auf:
WARNING[24392] res_rtp_asterisk.c: RTP Read too short


danke ;)
 
Zuletzt bearbeitet:

kabelman

Neuer User
Mitglied seit
25 Feb 2007
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
Also wie es der teufel will... heute kommt natürlich kein Fehler... wenn das mal immer so wäre :(

Aber eine andere Sache...
Kann mir jemand einen Tipp für die T bzw. h extension geben?

Wenn eine dieser beiden ausgelöst wird, möchte ich ein shell script ausführen, welches ein neues callfile erstellt.
Wie ich mir das gedacht habe, seht ihr oben im code...
das Problem ist nur, dass der Channel scheinbar noch besetzt ist...
Ich habe es auch schon so probiert:
Code:
exten => h,1,Wait(5)
exten => h,2,System(/etc/asterisk/neu.sh ${ltg} ${nr}+1)

exten => T,1,Wait(5)
exten => T,2,Hangup()
Aber das funktioniert auch nicht...

Würde mich freuen ;)
 
3CX

Neueste Beiträge

Statistik des Forums

Themen
235,932
Beiträge
2,067,976
Mitglieder
356,991
Neuestes Mitglied
Hflgk GB ja x