HasNewVoicemail geht mit asterisk-1.2.1 nicht mehr

lo4dro

Mitglied
Mitglied seit
14 Okt 2004
Beiträge
656
Punkte für Reaktionen
0
Punkte
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"
 
Ich teste das heute abend mal.

BTW: Deine prios 3-5 werden eigentlich nie erreicht :wink:
 
betateilchen schrieb:
Ich teste das heute abend mal.

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

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.
 
lo4dro schrieb:
So wie es aussieht steht imm Rückgabewert entweder 0 = keine Nachricht oder 1 = Nachricht vorhanden.

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 ...)


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

Das war leider nicht die Lösung - aber weiter unten kommt eine :wink:
 
Zuletzt bearbeitet:
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.
 
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:
 
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
 
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.
 
betateilchen schrieb:
Bekommst Du denn mit der Variablen ${HASVMSTATUS} nun das gewünschte Ergebnis ?

exten => 99,102,SetVar(NEWZAHL=${HASVMSTATUS})

Liefert aber nur 1 oder 0 zurück.

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.

Das bedeutet die zwei Applikatonen werden ersetzt bzw. abgeschaft.
 
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.
 
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
 
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'
 
Zuletzt bearbeitet:
Super klasse.
Wenn man jeden Bug so einfach lösen könnte.
 
Der Fehler ist in Asterisk 1.2.2 behoben:

ChangeLog schrieb:
2005-12-23 06:38 +0000 [r7608] Tilghman Lesher <[email protected]>

* apps/app_hasnewvoicemail.c: Bug 6051 - VMCOUNT should work as
documented and count all, not quit after finding 1
 
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?
 
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)
 
Könntest du mir das etwas genauer erklären?
Ich stehe gerade etwas auf dem Schlauch :-(
 
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]))
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.