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

HasNewVoicemail geht mit asterisk-1.2.1 nicht mehr

Dieses Thema im Forum "Asterisk Rufnummernplan" wurde erstellt von lo4dro, 13 Jan. 2006.

  1. lo4dro

    lo4dro Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo Leute.

    Ich nutz für die V-Box abfrage noch den Befehl "HasNewVoicemail" damit ich im Display des Telefons sehe wie viel Nachrichten ich im gesamten habe.
    Nach meinem Update auf 1.2.1 geht das nicht mehr.

    Code:
     exten => 99,1,HasNewVoiceMail(71234@default:INBOX|ANZAHL)
     exten => 99,2,Goto(102)
     exten => 99,3,SendText(keine m-Box)
     exten => 99,4,VoiceMailMain(s71234)
     exten => 99,5,Hangup
     exten => 99,102,HasNewVoiceMail(71234@default:Old|OLDZAHL)
     exten => 99,103,Goto(203)
     exten => 99,203,SendText(${ANZAHL} Neue ${OLDZAHL} Alte)
     exten => 99,204,VoiceMailMain(s71234)
     exten => 99,205,Hangup
    
    Früher stand im Display: "5 Neue 3 Alte"
    seit dem Update steht nur noch: "Neue Alte"
     
  2. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Ich teste das heute abend mal.

    BTW: Deine prios 3-5 werden eigentlich nie erreicht :wink:
     
  3. lo4dro

    lo4dro Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Toll, super von dir.
    Das mit den Prios weis ich. Sind noch so ein paar Leichen.

    Ich hab heute noch herausgefunden, das sich der Aufruf geändert hat.
    Nun funktionierts ein wenig besser aber immer noch net so wie ich will.

    Code:
     exten => 99,1,HasNewVoicemail(71234/INBOX@default)
     exten => 99,n,Goto(102)
     exten => 99,102,SetVar(NEWZAHL=${HASVMSTATUS})
     exten => 99,103,HasNewVoiceMail(71234/Old@default)
     exten => 99,104,Goto(204)
     exten => 99,204,SetVar(OLDZAHL=${HASVMSTATUS})
     exten => 99,n,SendText(${NEWZAHL} Neue ${OLDZAHL} Alte)
     exten => 99,n,VoiceMailMain(s71234)
     exten => 99,n,Hangup
    
    So wie es aussieht steht imm Rückgabewert entweder 0 = keine Nachricht oder 1 = Nachricht vorhanden.
     
  4. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    #4 betateilchen, 13 Jan. 2006
    Zuletzt bearbeitet: 14 Jan. 2006
    Das ist auch Sinn und Zweck der aktuellen Version dieser Applikation ! Es geht nur noch darum, zu entscheiden, ob der Peer Nachrichten hat oder nicht. Die Anzahl spielt keine Rolle mehr.

    Das soll dazu verwendet werden, z.B. im Dialplan zu prüfen, ob schon ungelesene Nachrichten vorhanden sind, um weitere Anrufer sofort auf die Mailbox zu leiten, da man davon ausgehen kann, daß der Angerufene immer noch nicht erreichbar ist (weil er seine Mailbox noch nicht abgefragt hat ...)

    [hr]x[/hr]

    Lösung: Verwende HasVoicemail anstelle von HasNewVoicemail :!:

    Das war leider nicht die Lösung - aber weiter unten kommt eine :wink:
     
  5. lo4dro

    lo4dro Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    So, hab das ganze mal getestet.
    Leider kein Unterschied.

    Es gibt auch in den Sourcen nur ein Applikation.
    ../asterisk-1.2.1/apps/app_hasnewvoicemail.c

    Dort im Quelltest stehen beide Befehle drinnen, kann keinen Unterschied feststellen.
     
  6. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    OK - das ist dann das was ich (ungeprüft) befürchtet hatte. In der Doku auf voip-info.org steht nämlich, daß die beiden Befehle "gleichgesetzt" wurden, ich hatte nicht in die Sourcen geschaut.

    Die Variabele ${HASVMSTATUS} gibt es dann wohl auch nicht mehr ?

    - EDIT -

    In den Sourcen steht aber folgendes:

    Code:
    ast_log(LOG_WARNING, "The applications HasVoicemail and HasNewVoicemail have been deprecated.  Please use the VMCOUNT() function instead.\n");
    Dann müssen wir wohl mal nach der Funktion VMCOUNT() suchen :wink:
     
  7. lo4dro

    lo4dro Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Also die Variabele ${HASVMSTATUS} gibt es noch.

    Das mit dem VMCOUNT() hab ich gelesen, nur wie nutze ich das?
    So gehts nicht:
    Code:
    ..
    exten => 99,102,SetVar(NEWZAHL=${VMCOUNT})
    ..
    [/code9
     
  8. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Bekommst Du denn mit der Variablen ${HASVMSTATUS} nun das gewünschte Ergebnis ?

    Bezüglich VMCOUNT() bin ich noch am Suchen. Das ist lauf Beschreibung ja auf jeden Fall eine Funktion und keine Variable. Hinweise auf die Funktion gibt es in app_hasnewvoicemal und app_voicemail. Aber da ja sowohl hasnewvoicemail als auch hasvoicemail "zum Abschuß" freigegeben sind, werde ich wohl mal in app_voicemail weitersuchen.
     
  9. lo4dro

    lo4dro Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    exten => 99,102,SetVar(NEWZAHL=${HASVMSTATUS})

    Liefert aber nur 1 oder 0 zurück.

    Das bedeutet die zwei Applikatonen werden ersetzt bzw. abgeschaft.
     
  10. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    wenn alle Stricke reißen, muß man über ein AGI Skript eben die Anzahl der VM-Dateien in den entsprechenden Ordnern zählen. Aber für AGI bin ich der falsche Ansprechpartner - da gibt es eine Menge Leute hier im Forum, die davon mehr Ahnung haben als ich.
     
  11. lo4dro

    lo4dro Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Klar, per AGI kann man viel machen.
    Ist halt schade das das nicht mehr geht, ist ja ein richtiger Rückschritt :-(

    Danke für die Hilfe
     
  12. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    #12 betateilchen, 13 Jan. 2006
    Zuletzt bearbeitet: 13 Jan. 2006
    So. Nun bin ich einen Schritt weiter.

    Der von Dir beschriebene Effekt, daß Du nur 0 oder 1 zurückbekommst, beruht auf einem BUG in dieser Applikation in 1.2.1 Die Anwendung hört nach 1 einfach auf zu zählen :mrgreen:

    Dazu gibt es einen Eintrag im Bugtracker und auch schon einen entsprechenden Patch. Es besteht also Hoffnung, daß das in der nächsten Release von Asterisk behoben sein wird.

    Der Patch ist ganz einfach - ich habe ihn grade erfolgreich getestet :

    In der Datei /apps/app_hasnewvoicemail.c die Zeile 93

    Code:
     break; 
    löschen, danach neu kompilieren, und schon klappts auch mit dem Nachrichtenzähler !

    Code:
        -- Executing HasNewVoicemail("SIP/70-48b7", "70/INBOX@default") in new stack
        -- Executing SetVar("SIP/70-48b7", "NEWZAHL=2") in new stack
        -- Executing HasNewVoicemail("SIP/70-48b7", "70/Old@default") in new stack
        -- Executing Goto("SIP/70-48b7", "204") in new stack
        -- Goto (monsterhase,*05,204)
        -- Executing SetVar("SIP/70-48b7", "OLDZAHL=0") in new stack
        -- Executing SendText("SIP/70-48b7", "2 Neue 0 Alte") in new stack
        -- Executing VoiceMailMain("SIP/70-48b7", "s70") in new stack
        -- Playing 'vm-youhave' (language 'de')
        -- Playing 'digits/2' (language 'de')
        -- Playing 'vm-INBOX' (language 'de')
        -- Playing 'vm-messages' (language 'de')
      == Spawn extension (monsterhase, *05, 206) exited non-zero on 'SIP/70-48b7'
    
     
  13. lo4dro

    lo4dro Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Super klasse.
    Wenn man jeden Bug so einfach lösen könnte.
     
  14. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Der Fehler ist in Asterisk 1.2.2 behoben:

     
  15. lo4dro

    lo4dro Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Asterisk 1.2.1 Ablösung für HasVoicemail

    So wie ich die Statusinformationen am Asterisk-Prompt deute, sagt uns, Asterisk welche Wert man wie ändern muss.

    Zum Thema HasVoicemail bekomme ich von Asterisk die Info:

    Code:
    Jan 18 17:28:18 WARNING[5286]: app_hasnewvoicemail.c:117 hasvoicemail_exec: The applications HasVoicemail and HasNewVoicemail have been deprecated.  Please use the VMCOUNT() function instead.
    
    Also hab ich mal auf die Suche nach der neuen Applikation gemacht.

    mit einem :"show function VMCOUNT" bekomme ich folgene Info:
    Code:
    vdr-pbx*CLI> show function VMCOUNT
    vdr-pbx*CLI> 
      -= Info about function 'VMCOUNT' =- 
    
    [Syntax]
    VMCOUNT(vmbox[@context][|folder])
    
    [Synopsis]
    Counts the voicemail in a specified mailbox
    
    [Description]
      context - defaults to "default"
      folder  - defaults to "INBOX"
    
    Die Applikation kann ich allerdings nirgens finden.
    Da ich nicht sicher war, das die Funktion inzwischen zum Asterisk selber gehört, hab ich versucht die Abfrage passend umzustellen.
    Ergebniss:
    Code:
    Jan 18 17:34:43 WARNING[5331]: pbx.c:1691 pbx_extension_helper: No application 'VMCOUNT' for extension (user-71111, 99, 103)
    
    Gibts nun die Funktion, oder gibts die noch nicht?
     
  16. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Eine Funktion ist keine Applikation. Insofern dürfte die Funktion im Zusammenhang mit einer Set Anweisung für eine Variablen-Zuweisung zu verwenden sein. Aber ich habe das zwischenzeitlich noch nicht weiter getestet, zumal ja die "alte" Applikation noch funktioniert. (die verwendet intern übrigens auch nur diese Funktion)
     
  17. lo4dro

    lo4dro Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Könntest du mir das etwas genauer erklären?
    Ich stehe gerade etwas auf dem Schlauch :-(
     
  18. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Schonmal in der Form probiert ? Wie gesagt - ich hab im Moment keine Zeit, das tiefer zu testen.

    Code:
    exten => xyz, n, Set(ergebnis=VMCOUNT(vmbox[@context][|folder]))