Dial nach "nicht erreichbar"?

alien

Neuer User
Mitglied seit
3 Aug 2004
Beiträge
71
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

bin gerade dabei, mir eine kleine Termin-DB zu bauen, die mich bei einem Termin anruft. Dabei will ich nicht das Gespräch am Handy abnehmen, sondern lediglich die Nummer am Display als verpassten Anruf haben.

Mein Problem ist jetzt folgendes:
wie kann ich abfangen, ob das Handy wirklich geläutet hat oder besetzt war oder das Handy gar nicht erreichbar? In letzteren Fällen soll der Anrufversuch nämlich erneut ausgeführt werden. Mit maxretries hab ich das Problem, dass der Anruf auch erneut ausgeführt wird, wenn das Gespräch zwar am Handy ankommt, aber nicht angenommen wird (so wie es ja eigentlich sein soll).

Hab das ganze schon über Call-Files oder das Manager API probiert, bin aber immer wieder auf das selbe Problem gestoßen. Googlen und extensives Suchen hat mich auch nicht wirklich weiter gebracht.

Hat von euch vielleicht irgendjemand die rettende Idee?

Danke schonmal und schönen Sonntag!
 
alien schrieb:
wie kann ich abfangen, ob das Handy wirklich geläutet hat oder besetzt war oder das Handy gar nicht erreichbar?

Ich weiß nicht, ob das alle Mobilnetz-Betreiber korrekt signalisieren. Aber prinzipiell würde man dafür die Variable ${DIALSTATUS} verwenden, die den Status nach einem Wählversuch enthält.

Da gibt es unterschiedliche mögliche INhalte:

NOANSWER = Anruf wurde erfolgreich durchgeführt aber nicht beantwortet
BUSY = es war besetzt

Das mit dem "Nicht erreichbar" dürfte die größte Schwierigkeit werden. Aber wenn Du die ersten beiden Fälle zuverlässig abgefangen hast, und diese nicht zutreffen, würde ich einfach die Nichterreichbarkeit annehmen und den Anrufversuch wiederholen.

Die entsprechende Stelle in AEL würde dann ungefähr so aussehen:

Code:
switch (${DIALSTATUS}) {
  case "NOANSWER":
    NoOp(Anruf wurde nicht angenommen);
    break;
  case "BUSY":
    NoOp(Es war besetzt);
    break;
  default:
    NoOp(In allen anderen Fällen wird der Anruf wiederholt);
};
 
Hm, mit der AEL hab ich mich bis jetzt noch gar nicht außeinander gesetzt. Danke auf jeden Fall schon mal für den Tipp, sieht auf den ersten Blick richtig gut aus. Hab mich jetzt noch nicht wirklich eingelesen, aber nur Verständnis halber: ich starte meinen Anruf per Callfile, wie springe ich dann zur Abfrage des Status in die AEL rein? Einem Context kann ich den Anruf ja nur nach erfolgreichem Anruf übergeben? Oder seh ich gerade irgendwas falsch und des ist eine wirklich dumme Frage? ;)
 
Du mußt nicht unbedingt AEL verwenden. Das ganze funktioniert auch in der extensions.conf. Ich habe das nur mal so geschrieben, da die Funktionsweise ein bißchen leichter verständlich wird.

Suche mal hier im Forum nach DIALSTATUS da findest Du ein paar Beiträge zu dem Thema.
 
Sorry, hab den Wald vor lauter Bäumen nicht gesehen :) Danke für die Hilfe! Werds mal ausprobieren und schauen wie weit ich komm. Denke aber, des ist genau des, was ich brauche!

Schönen Nachmittag!
 
Hilfe! Bin jetzt wirklich am Verzweifeln! Irgendwo hab ich noch einen (Denk?)Fehler drinnen:

Also, ich möchte einen Anruf per Skript (von PHP) initieren. Per Callfile und AMI wird zumindest bei mir (Asterisk 1.0.7) DIALSTATUS nicht gesetzt, ist leer.

Deswegen ruf ich per AIM einen lokalen Channel auf, der den Anruf dann auslöst:
Action: Originate
Channel: local/-NUMMER-@2on
Callerid: -ID-
Context: 2on
Priority: 1
MaxRetries: 0
Timeout: 15000

Der Anruf wird am Handy auch korrekt signalisiert, lediglich NACH dem Anruf, wenn es ans Auswerten des DIALSTATUS geht, springt mir Asterisk mit "Spawn extension (2on, -NUMMER-, 2) exited non-zero on 'Local/-NUMMER-@2on-a41c,2'" aus dem Dialplan raus. Hab schon alles probiert (auch hier und überall gesucht) und stundenlang jetzt gerätselt :(

Der entsprechende Eintrag in der sip.conf lautet
[sip2]
type=friend
secret=xxxxxx
username=yyyy
fromuser=yyyy
host=proxy.dus.net
fromdomain=proxy.dus.net
insecure=very
context=2on ;auch schon ohne context hier probiert
qualify=yes

Und der Dialplan in der extension.conf
[2on]
exten => _X.,1,NoOP(${EXTEN})
exten => _X.,2,Dial(SIP/${EXTEN}@sip2,20) ; auch schon mit 'g' versucht
exten => _X.,3,Goto(r-${DIALSTATUS},1) ;beide Möglichkeiten
exten => _X.,103,Goto(r-${DIALSTATUS},1) ;auch einzeln schon
;ausprobiert
exten => r-BUSY,1,NoOP("BUSY")
exten => r-ANSWER,1,NoOP("ANSWER")
exten => r-NOANSWER,1,NoOP("NOANSWER")
exten => r-CANCEL,1,NoOP("CANCEL")
exten => r-CONGESTION,1,NoOP("CONGESTION")
exten => r-CHANUNAVAIL,1,NoOP("CHANUNAVAIL")

exten => failed,1,NoOP("Fehler")

Die Eregnisse im Asterisk:
-- Executing NoOp("Local/-NUMMER-@2on-14c3,2", "-NUMMER-") in new stack
-- Executing Dial("Local/-NUMMER-@2on-14c3,2", "SIP/-NUMMER-@sip2|20") in new stack
-- Called -NUMMER-@sip2
-- SIP/sip2-634e is making progress passing it to Local/-NUMMER-@2on-14c3,2
== Spawn extension (2on, -NUMMER-, 2) exited non-zero on 'Local/-NUMMER-@2on-14c3,2'

Vielleicht ist des ja ein ganz trivialer Fehler, ich sehs auf jeden Fall im Moment nicht :( Bin für jede Hilfe dankbar, und wenns bloß ein kleiner Tipp ist!!
 

Neueste Beiträge

Statistik des Forums

Themen
244,695
Beiträge
2,216,690
Mitglieder
371,314
Neuestes Mitglied
Gjorstn
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.