.titleBar { margin-bottom: 5px!important; }

Statt Besetztzeichen Fehlermeldung

Dieses Thema im Forum "Asterisk Allgemein" wurde erstellt von VOIPdani, 20 Jan. 2006.

  1. VOIPdani

    VOIPdani Mitglied

    Registriert seit:
    8 Aug. 2005
    Beiträge:
    432
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo!

    Ich benutze das SJphone-289a und wenn ich mit dem an meinem * angemeldeten SJPhone jemanden anrufe, der gerade telefoniert, höre ich kein Besetztzeichen sondern das SJPhone spuckt eine Fehlermeldung ("Busy Call rejected: 486 Busy") aus. Ich versorge bereits 25 Teilnehmer mit Softphones und ich bin es leid immer und immer wieder erklären zu müssen, dass diese Fehlermeldung für ein Besetzt steht.

    Besteht die Möglichkeit mittels Asterisk einen Besetztton zu simulieren und somit diese Fehlermeldung zu unterdrücken?

    lg Dani
     
  2. chaos2000

    chaos2000 Aktives Mitglied

    Registriert seit:
    22 Aug. 2004
    Beiträge:
    2,028
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    LE
    Probier es mal mit dem Befehl Busy ;)

    exten => _X.,1,Busy
     
  3. VOIPdani

    VOIPdani Mitglied

    Registriert seit:
    8 Aug. 2005
    Beiträge:
    432
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ist dann nicht jede Extension die in das Pattern _X. fällt gerade Busy??

    Mein Ziel ist es ja bereits während des Gesprächs abzufragen ob eine Nummer besetzt ist oder nicht. Drum hilft mir auch die Variable DIALSTATUS da nicht wirklich weiter. Eigentlich möchte ich es so haben wie man es vom Handy bzw. Festnetz gewohnt ist. Ist der gewünschte Teilnehmer besetzt, will ich ein Besetztzeichen hören und keine Fehlermeldung sehen.

    lg Dani
     
  4. chaos2000

    chaos2000 Aktives Mitglied

    Registriert seit:
    22 Aug. 2004
    Beiträge:
    2,028
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    LE
    warum hilft dir dann aber die variable DIALSTATUS nicht?
    Das wäre mir neu. Ich habe nach dem Dial-befehl ein macro das mir den dialstatus auswertet - wie z.B. busy

    ... und der obige Post war ein Bsp ...
     
  5. VOIPdani

    VOIPdani Mitglied

    Registriert seit:
    8 Aug. 2005
    Beiträge:
    432
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Weil ich DIALSTATUS erst nach einem Call abfragen kann. Ich will aber die Infos bereits während des Telefonats!
     
  6. chaos2000

    chaos2000 Aktives Mitglied

    Registriert seit:
    22 Aug. 2004
    Beiträge:
    2,028
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    LE
    Das die auswertung erst nach dem dial erfolgt ist ja auch vollkommen richtig. Wie soll sonst * ermitteln ob besetzt ist oder nicht, ohne zuvor zu wählen?
    Sobald der channel vom dialbefehl besetzt ist springt asterisk in die n+1 Prio, wo dann auch die variable DIALSTATUS gesetzt ist.

    Bsp:

    exten => _X.,1,Dial(SIP/0815)
    exten => _X.,2,GotoIf($["${DIALSTATUS}" = "BUSY"]?103)
    exten => _X.,3,Hangup

    exten => _X.,103,Busy
     
  7. VOIPdani

    VOIPdani Mitglied

    Registriert seit:
    8 Aug. 2005
    Beiträge:
    432
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Danke für dein Beispiel, das erfüllt so halbwegs meine Anforderungen.

    Das einzige Problem, dass ich noch habe, ist dass das SJPhone 3 (oder mehr?) eigehende Anrufe zulässt, dh. ich muss den Anrufer wegklicken damit ich zu 103 komme. Ist das mit X-Lite bzw. anderen Endgeräten auch so?
     
  8. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Warum müßt Ihr das alles so kompliziert machen :?:

     
  9. chaos2000

    chaos2000 Aktives Mitglied

    Registriert seit:
    22 Aug. 2004
    Beiträge:
    2,028
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    LE
    dann versuch doch mal in der sip.conf:

    incominglimit=1

    http://www.voip-info.org/wiki-Asterisk+config+sip.conf


    @betateilchen

    ja, so geht es natürlich auch. ;)
     
  10. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
  11. chaos2000

    chaos2000 Aktives Mitglied

    Registriert seit:
    22 Aug. 2004
    Beiträge:
    2,028
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    LE
    ok, dann hätte ich mal alles durchlesen sollen *ascheaufmeinhaupt*

    @VOIPdani

    dann vesuche es mal mit
    CheckGroup(1)
     
  12. VOIPdani

    VOIPdani Mitglied

    Registriert seit:
    8 Aug. 2005
    Beiträge:
    432
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Versteh ich das richtig dass mir CheckGroup(1) überprüft ob der Zähler für eine Gruppe mehr als 1 ist?

    Wie muss dann mein SetGroup(??) bzw. Set(GROUP()=??) aussehen. Muss ich statt ?? die Variable EXTEN eintragen??
     
  13. chaos2000

    chaos2000 Aktives Mitglied

    Registriert seit:
    22 Aug. 2004
    Beiträge:
    2,028
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    LE
  14. VOIPdani

    VOIPdani Mitglied

    Registriert seit:
    8 Aug. 2005
    Beiträge:
    432
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Nachdem ich das mit dem SetGroup und CheckGroup nicht wirklich sinnvoll zum Einsatz bringen konnte, hab ich mir folgendes überlegt:

    Code:
    exten => 8888,1,SetGlobalVar(${CALLS}=${CALLS}+1)
    exten => 8888,2,NoOp(${CALLS})
    exten => 8888,3,GotoIf($[${CALLS}>=1]?104)  
    exten => 8888,4,Dial(SIP/ZelC)
    exten => 8888,5,SetGlobalVar(${CALLS}=0)
    exten => 8888,6,GotoIf($["${DIALSTATUS}" = "BUSY"]?104)
    exten => 8888,7,Hangup
    exten => 8888,104,Playtones(busy)
    
    In der globalen Variable CALLS speichere ich ab wieviele Anrufe eingehen. Von der Logik her müsste es passen, aber an der Umsetzung haperts:

    Code:
        -- Executing SetGlobalVar("SIP/LetD-0b06", "0=0+1") in new stack
      == Setting global variable '0' to '0+1'
        -- Executing NoOp("SIP/LetD-0b06", "0") in new stack
    
    Wie kann ich die Variable CALLS bei jedem eingehenden Anruf um 1 erhöhen??
     
  15. chaos2000

    chaos2000 Aktives Mitglied

    Registriert seit:
    22 Aug. 2004
    Beiträge:
    2,028
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    LE
    ...das ist nichts anderes als mit SetGroup
    addition wird http://www.voip-info.org/wiki-Asterisk+variables (ganz unten) erklärt.

    was hindert dich aber an:
    Code:
    exten => 8888,1,SetGroup(8888) 
    exten => 8888,2,CheckGroup(1)
    exten => 8888,3,Dial(SIP/ZelC)
    exten => 8888,4,Goto,r-${DIALSTATUS}|103
    
    exten => 8888,r-BUSY,103,Busy
    exten => 8888,r-BUSY,104,Congestion
    
    
     
  16. VOIPdani

    VOIPdani Mitglied

    Registriert seit:
    8 Aug. 2005
    Beiträge:
    432
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    So, hab mein Problem jetzt wie folgt gelöst:
    Code:
    ;Test: Besetztzeichen simulieren
    exten => 8888,1,SetGlobalVar(CALLS=$[${CALLS}+1])
    exten => 8888,2,NoOp(${CALLS})
    exten => 8888,3,GotoIf($[${CALLS}=1]?104)  
    exten => 8888,4,Dial(SIP/ZelC)
    exten => 8888,5,SetGlobalVar(CALLS=$[${CALLS}-1])
    exten => 8888,6,GotoIf($["${DIALSTATUS}" = "BUSY"]?104)
    exten => 8888,7,Hangup
    exten => 8888,104,Playtones(busy)
    
    Das mit dem SetGroup() und CheckGroup() funkt bei mir irgendwie nicht so ganz.

    lg Dani
     
  17. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Falls Du das auf deinem Testsystem mit dem 1.0.9 Asterisk (lt. Deiner Signatur) getestet hast, ist das nicht weiter verwunderlich.
     
  18. thorsten.gehrig

    thorsten.gehrig Mitglied

    Registriert seit:
    14 Juni 2004
    Beiträge:
    490
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi
    die lösung mit playtones busy ist natürlich "nur" die nachbildung des normalen telefons.
    ich habe bei mir nach dem dial
    exten => xx,9,goto,hangup|${HANGUPCAUSE}|1

    und dann
    Code:
    [hangup]
    ;http://networking.ringofsaturn.com/RemoteAccess/isdncausecodes.php
    ;Normal beendet!?
    exten => 0,1,congestion()
    
    exten => 17,1,Playback(Teilnehmer_besetzt)
    exten => 17,2,congestion()
    
    exten => 19,1,Playback(Teilnehmer_antwortet_nicht)
    exten => 19,1,congestion()
    
    Dabei sind (besetzt) und 19 (Keine Antwort) nur ein paar beispiele. So bekommt man auch ein Gassenbesetzt anders mit als ein Besetzt.
    Unter dem Link ;http://networking.ringofsaturn.com/RemoteAccess/isdncausecodes.php gibt es eine Aufstellung der ISDN-Fehlercodes. Allerdings muss man bei SIP-Anbietern schauen ob die die selben Codes verwenden...

    Ich habe einfach alle Codes von 1 bis 99 mit "Ansage der Fehlernummer" quittiert und kann bei "neuen Fehlernummern" im Log nachschauen und die entsprechende Ansage (für den nächsten identischen Fehlerfall) Aufschalten...

    0 = Normal beendet
    1 = Nummer nicht vergeben
    16 = Normal beendet
    17 = Besetzt

    Gruß
    Thorsten Gehrig
     
  19. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Damit wird aber auch ein erfolgloser Anruf für den Anrufer kostenpflichtig :!: Denn das PlayBack (und auch das PlayTones) beinhaltet per default ein Answer, durch das Gebühren entstehen.
     
  20. thorsten.gehrig

    thorsten.gehrig Mitglied

    Registriert seit:
    14 Juni 2004
    Beiträge:
    490
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ähm - ging es hier um Signalisierungen bei abgehenden Gesprächen - oder von ankommenden? (hab den thread nicht so genau gelesen...).

    Aber: wenn der Anschluss ein SIP-Anschluss ist gibt es ja auch Playback(blabla,noanswer) - damit gehen KOSTENLOSE ansagen!
    (Nachweisslich per Prepaid-Telefon getestet!)

    Gruß
    Thorsten