Automatische Rufanahme von einer Fritzbox?

Das same gehört unter exten, weil same zu exten gehört und nicht umgekehrt...

exten => Die Definition
same => Gehört zur Definition

...schon Kaffee/Tee getrunken und meditiert?
:mrgreen:

Tipp: In der Asteriskkonsole auch mal den Wählplan checken...

Code:
dialplan reload
dialplan show 08154711@macro-check-caller-reputation

Nochwas...
Schau dir mal die Ausgaben genau an...
Das Set() für ${TLW_ANINUM} bleibt leer, es wird keine Nummer ans Makro übergeben.

Schau mal...
Code:
same => n,Set(TLW_ANINUM=[COLOR=red]${ARG1}[/COLOR])
Das bedeutet, dass du das Makro aus dem Kontext mit GoSub() aufrufen musst.
Eventuell muss es dafür inkludiert werden...
Code:
[KONTEXT]
include => macro-check-caller-reputation

exten => Deine Definition
...
same => n,GoSub(macro-check-caller-reputation,[COLOR=red]s[/COLOR],1(${CALLERID(ani)}))
...
Wird es das, dann solltest du das Skript unter dem Set() so aufrufen...
Code:
same => n,Verbose(SHELL(/bin/bash /var/lib/asterisk/agi-bin/callerlog.sh ${TLW_ANINUM}))
 
Zuletzt bearbeitet:
Ich habe es jetzt mal so eingetragen,

Code:
[macro-check-caller-reputation]  
exten => _X.,1,NoOp(CALLER-REPUTATION)
same => n,Set(TLW_ANINUM=${ARG1})  
same => n,NoOp(Testing number ${TLW_ANINUM})  
same => n,AGI(tellowsagi.php
same => n,Verbose(SHELL(/bin/bash /var/lib/asterisk/agi-bin/callerlog.sh ${CALLERID(num)}))
same => n,NoOp(AGI Return ${TLW_REQUEST} with score ${TLW_SCORE})
.....

Es wird wohl auch aufgerufen und die Rufnummer übergeben,

Code:
Asterisk Ready.
  == Parsing '/etc/asterisk/cli.conf': Found
    -- Remote UNIX connection
  == Using SIP RTP CoS mark 5
    -- Executing [623@macro-check-caller-reputation:1] NoOp("SIP/fbfgateway-00000000", "CALLER-REPUTATION") in new stack
    -- Executing [623@macro-check-caller-reputation:2] Set("SIP/fbfgateway-00000000", "TLW_ANINUM=") in new stack
    -- Executing [623@macro-check-caller-reputation:3] NoOp("SIP/fbfgateway-00000000", "Testing number ") in new stack
    -- Executing [623@macro-check-caller-reputation:4] AGI("SIP/fbfgateway-00000000", "tellowsagi.php") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/tellowsagi.php
    -- <SIP/fbfgateway-00000000>AGI Script tellowsagi.php completed, returning 0
    -- Executing [623@macro-check-caller-reputation:5] Verbose("SIP/fbfgateway-00000000", "SHELL(/bin/bash /var/lib/asterisk/agi-bin/callerlog.sh 07123456789)") in new stack
SHELL(/bin/bash /var/lib/asterisk/agi-bin/callerlog.sh 07123456789
    -- Executing [623@macro-check-caller-reputation:6] NoOp("SIP/fbfgateway-00000000", "AGI Return ok with score 5") in new stack
    -- Executing [623@macro-check-caller-reputation:7] GotoIf("SIP/fbfgateway-00000000", "1?reqOK:exit") in new stack
    -- Goto (macro-check-caller-reputation,623,8)
    -- Executing [623@macro-check-caller-reputation:8] NoOp("SIP/fbfgateway-00000000", "") in new stack
    -- Executing [623@macro-check-caller-reputation:9] GotoIf("SIP/fbfgateway-00000000", "0?setType:setLoc") in new stack
    -- Goto (macro-check-caller-reputation,623,10)
    -- Executing [623@macro-check-caller-reputation:10] Set("SIP/fbfgateway-00000000", "CALLERID(name)=XXXXXXXXXXXX") in new stack
    -- Executing [623@macro-check-caller-reputation:11] Goto("SIP/fbfgateway-00000000", "exit") in new stack
    -- Goto (macro-check-caller-reputation,623,47)
    -- Executing [623@macro-check-caller-reputation:47] MacroExit("SIP/fbfgateway-00000000", "") in new stack
[Oct 16 10:22:49] WARNING[12329][C-00000000]: pbx.c:6862 __ast_pbx_run: Timeout, but no rule 't' or 'e' in context 'macro-check-caller-reputation'

aber ausgeführt wird es nicht und leider auch kein Fehler ausgegeben. :(

- - - Aktualisiert - - -

Nachtrag:

Mit,
Code:
same => n,Verbose(SHELL(/bin/bash /var/lib/asterisk/agi-bin/callerlog.sh ${TLW_ANINUM}))
wird das Script zwar ausgeführt, jedoch wird die Rufnummer nicht übergeben.

Code:
Asterisk Ready.
  == Parsing '/etc/asterisk/cli.conf': Found
  == Using SIP RTP CoS mark 5
    -- Executing [623@macro-check-caller-reputation:1] NoOp("SIP/fbfgateway-00000000", "CALLER-REPUTATION") in new stack
    -- Executing [623@macro-check-caller-reputation:2] Set("SIP/fbfgateway-00000000", "TLW_ANINUM=") in new stack
    -- Executing [623@macro-check-caller-reputation:3] NoOp("SIP/fbfgateway-00000000", "Testing number ") in new stack
    -- Executing [623@macro-check-caller-reputation:4] AGI("SIP/fbfgateway-00000000", "tellowsagi.php") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/tellowsagi.php
    -- <SIP/fbfgateway-00000000>AGI Script tellowsagi.php completed, returning 0
    -- Executing [623@macro-check-caller-reputation:5] Verbose("SIP/fbfgateway-00000000", "SHELL(/bin/bash /var/lib/asterisk/agi-bin/callerlog.sh )") in new stack
SHELL(/bin/bash /var/lib/asterisk/agi-bin/callerlog.sh )
    -- Executing [623@macro-check-caller-reputation:6] NoOp("SIP/fbfgateway-00000000", "AGI Return ok with score 5") in new stack
    -- Executing [623@macro-check-caller-reputation:7] GotoIf("SIP/fbfgateway-00000000", "1?reqOK:exit") in new stack
    -- Goto (macro-check-caller-reputation,623,8)
    -- Executing [623@macro-check-caller-reputation:8] NoOp("SIP/fbfgateway-00000000", "") in new stack
    -- Executing [623@macro-check-caller-reputation:9] GotoIf("SIP/fbfgateway-00000000", "0?setType:setLoc") in new stack
    -- Goto (macro-check-caller-reputation,623,10)
    -- Executing [623@macro-check-caller-reputation:10] Set("SIP/fbfgateway-00000000", "CALLERID(name)=xxxxxxxxxx") in new stack
    -- Executing [623@macro-check-caller-reputation:11] Goto("SIP/fbfgateway-00000000", "exit") in new stack
    -- Goto (macro-check-caller-reputation,623,47)
    -- Executing [623@macro-check-caller-reputation:47] MacroExit("SIP/fbfgateway-00000000", "") in new stack
[Oct 16 10:56:58] WARNING[19247][C-00000000]: pbx.c:6862 __ast_pbx_run: Timeout, but no rule 't' or 'e' in context 'macro-check-caller-reputation'
 
Lies bitte nochmal meinen vorangegangenen Beitrag, ich tu immer solange nacheditieren.

Die Nummer wird nicht übergeben...
Code:
 -- Executing [623@macro-check-caller-reputation:2] Set("SIP/fbfgateway-00000000", "[color=red]TLW_ANINUM="[/color]) in new stack
Wenn du das Makro inkludierst und mit GoSub() aufrufen tust, dann ändere im Makro...
exten => _X.,
...wieder in...
exten => s,
...da es sowieso nur mit Argument arbeitet und damit andere Extensions auch noch greifen.
Recall: _X. trifft auf alle Zahlen/Nummern zu
 
Zuletzt bearbeitet:
Also die letzten beiden Beiträge hättest Du genauso gut auch in Suaheli scheiben können ... :p


Sorry, aber ich befasse mich erst seit ein paar Tagen mit Asterisk und habe die Syntax noch nicht im Griff.


Ich bräuchte da eine Anleitung für Dummies. :)
 
Zuletzt bearbeitet:
1. Das Makro arbeitet mit Argument/Parameter ${ARG1}
2. Damit das funktioniert, musst du es so aufrufen...
Code:
same => n,GoSub(macro-check-caller-reputation,[color=red]s[/color],1(${CALLERID(ani)}))
( Im Makro wird CALLERID(ani) zu ${ARG1} )
...im Makro bitte auch _X. wieder durch s ersetzen.

Quelle: http://www.voip-info.org/wiki/view/Asterisk+cmd+Gosub
 
Zuletzt bearbeitet:
Und wo soll das "GoSub" hin?? :confused:
 
/etc/asterisk/extensions.conf
Code:
[Kontext-wo-der-Anruf-reinkommt]
; Beim include bin ich mir nicht sicher ob das nötig ist, ausprobieren!
include => macro-check-caller-reputation

exten => _X.,1,GoSub(macro-check-caller-reputation,s,1(${CALLERID(ani)}))

[macro-check-caller-reputation]
exten => s,1,NoOp(Makro: ${ARG1})
;....
same => n,Return()
 
Zuletzt bearbeitet:
Ich bin da wohl zu doof dafür! :(

Jetzt kommt wieder die Meldung:
Code:
[Oct 16 12:39:51] NOTICE[17309][C-00000000]: chan_sip.c:25872 handle_request_invite: Call from '623' (192.168.177.1:5060) to extension '623' rejected because extension not found in context 'macro-check-caller-reputation'.

Hier ist mal meine komplette extensions.conf:

https://paste.lugons.org/show/5vYnjoEORU5vKPNIwcrq/
 
Nun, vielleicht kommt der Anruf weiterhin im Makro an ?
:?: Welchen Kontext nutzen die User/Peers in der: sip.conf
 
Hier noch die sip.conf:

Code:
[general]
language=de
tonezone=de
register => 623:[email protected]:5060/623


[gateway](!)
description=Fritz!Box Registrar
context=macro-check-caller-reputation
call-limit=15
type=friend
insecure=invite
nat=force_rport,comedia
fromdomain=fritz.box
secret=asterisk623
host=192.168.177.1
canreinvite=yes
directmedia = no
dtmfmode=rfc2833
allow=!all,g722,alaw,ulaw
[fbfgateway](gateway)
defaultuser=623
fromuser=623


So langsam gebe ich auf, es muss doch möglich sein, bei jedem eingehenden Anruf ein simples Bash Script auszuführen!? ;)
 
Nix da

Check out
context=macro-check-caller-reputation

Check in
context=incoming

...verstehste?
 
Habe es gerade gemerkt und geändert, aber leider bin ich dann soweit wie vorher.

Das Script wird dann zwar aufgerufen, aber nicht ausgeführt:

Code:
....
Asterisk Ready.
  == Parsing '/etc/asterisk/cli.conf': Found
  == Using SIP RTP CoS mark 5
    -- Executing [623@incoming:1] Gosub("SIP/fbfgateway-00000000", "macro-check-caller-reputation,s,1(07123456789)") in new stack
    -- Executing [s@macro-check-caller-reputation:1] NoOp("SIP/fbfgateway-00000000", "") in new stack
    -- Executing [s@macro-check-caller-reputation:2] Set("SIP/fbfgateway-00000000", "TLW_ANINUM=07123456789") in new stack
    -- Executing [s@macro-check-caller-reputation:3] NoOp("SIP/fbfgateway-00000000", "Testing number 07123456789") in new stack
    -- Executing [s@macro-check-caller-reputation:4] AGI("SIP/fbfgateway-00000000", "tellowsagi.php") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/tellowsagi.php
    -- <SIP/fbfgateway-00000000>AGI Script tellowsagi.php completed, returning 0
    -- Executing [s@macro-check-caller-reputation:5] Verbose("SIP/fbfgateway-00000000", "SHELL(/bin/sh /var/lib/asterisk/agi-bin/callerlog.sh 07123456789)") in new stack
SHELL(/bin/sh /var/lib/asterisk/agi-bin/callerlog.sh 07123456789)
    -- Executing [s@macro-check-caller-reputation:6] NoOp("SIP/fbfgateway-00000000", "AGI Return ok with score 5") in new stack
    -- Executing [s@macro-check-caller-reputation:7] GotoIf("SIP/fbfgateway-00000000", "1?reqOK:exit") in new stack
    -- Goto (macro-check-caller-reputation,s,8)
    -- Executing [s@macro-check-caller-reputation:8] NoOp("SIP/fbfgateway-00000000", "") in new stack
    -- Executing [s@macro-check-caller-reputation:9] GotoIf("SIP/fbfgateway-00000000", "0?setType:setLoc") in new stack
    -- Goto (macro-check-caller-reputation,s,10)
    -- Executing [s@macro-check-caller-reputation:10] Set("SIP/fbfgateway-00000000", "CALLERID(name)=xxxxxxxxxxxxx") in new stack
    -- Executing [s@macro-check-caller-reputation:11] Goto("SIP/fbfgateway-00000000", "exit") in new stack
    -- Goto (macro-check-caller-reputation,s,47)
    -- Executing [s@macro-check-caller-reputation:47] MacroExit("SIP/fbfgateway-00000000", "") in new stack
[Oct 16 13:20:39] WARNING[31367][C-00000000]: pbx.c:6862 __ast_pbx_run: Timeout, but no rule 't' or 'e' in context 'macro-check-caller-reputation'
 
Nahe dran ;)

Verbose() gibt den Aufruf des Skriptes aus, mein Fehler.
Versuch es mal ohne Gänsefüßchen...
Beispielhaft
Code:
same => n,Verbose(Makro: ${SHELL(/bin/sh /etc/asterisk/cmdret ${ARG1})})

Auweia, Makros werden so aufgerufen...
Code:
same => n,Macro(check-caller-reputation,${CALLERID(ani)})
...wieder was gelernt :D

Quelle: http://www.voip-info.org/wiki/view/Asterisk+cmd+Macro
 
Zuletzt bearbeitet:
Jetzt geht es!!

1000DANK!

Der Vollständigkeit halber noch das Log dazu:

Code:
Asterisk Ready.
  == Parsing '/etc/asterisk/cli.conf': Found
  == Using SIP RTP CoS mark 5
    -- Executing [623@incoming:1] Gosub("SIP/fbfgateway-00000000", "macro-check-caller-reputation,s,1(07123456789)") in new stack
    -- Executing [s@macro-check-caller-reputation:1] NoOp("SIP/fbfgateway-00000000", "") in new stack
    -- Executing [s@macro-check-caller-reputation:2] Set("SIP/fbfgateway-00000000", "TLW_ANINUM=07123456789") in new stack
    -- Executing [s@macro-check-caller-reputation:3] NoOp("SIP/fbfgateway-00000000", "Testing number 07123456789") in new stack
    -- Executing [s@macro-check-caller-reputation:4] AGI("SIP/fbfgateway-00000000", "tellowsagi.php") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/tellowsagi.php
    -- <SIP/fbfgateway-00000000>AGI Script tellowsagi.php completed, returning 0
    -- Executing [s@macro-check-caller-reputation:5] Verbose("SIP/fbfgateway-00000000", "Makro: ") in new stack
Makro:
    -- Executing [s@macro-check-caller-reputation:6] NoOp("SIP/fbfgateway-00000000", "AGI Return ok with score 5") in new stack
    -- Executing [s@macro-check-caller-reputation:7] GotoIf("SIP/fbfgateway-00000000", "1?reqOK:exit") in new stack
    -- Goto (macro-check-caller-reputation,s,8)
    -- Executing [s@macro-check-caller-reputation:8] NoOp("SIP/fbfgateway-00000000", "") in new stack
    -- Executing [s@macro-check-caller-reputation:9] GotoIf("SIP/fbfgateway-00000000", "0?setType:setLoc") in new stack
    -- Goto (macro-check-caller-reputation,s,10)
    -- Executing [s@macro-check-caller-reputation:10] Set("SIP/fbfgateway-00000000", "CALLERID(name)=xxxxxxxx") in new stack
    -- Executing [s@macro-check-caller-reputation:11] Goto("SIP/fbfgateway-00000000", "exit") in new stack
    -- Goto (macro-check-caller-reputation,s,47)
    -- Executing [s@macro-check-caller-reputation:47] MacroExit("SIP/fbfgateway-00000000", "") in new stack
[Oct 16 13:57:30] WARNING[11833][C-00000000]: pbx.c:6862 __ast_pbx_run: Timeout, but no rule 't' or 'e' in context 'macro-check-caller-reputation'


Jetzt nur noch mal zum Verständnis:

Wenn ich mehrere "context" ausführen will, dann muss ich sie includieren?


Wäre es denn möglich, den Aufruf des Scriptes in einen extra "context" zu packen?

Und falls ja, wie müsste denn dann "[callerlog]" aussehen?

Code:
[general]
static=yes
writeprotect=no
clearglobalvars=no
;
[incoming]
include => callerlog
include => macro-check-caller-reputation
exten => _X.,1,GoSub(macro-check-caller-reputation,s,1(${CALLERID(ani)}))
;
[callerlog]
.....
.....
;
[macro-check-caller-reputation]  
;exten => _X.,1,NoOp(CALLER-REPUTATION)
.....
 
Die Inludes sind überflüssig, habs grad getestet, kannste also löschen.
Benenne [callerlog] um in [macro-callerlog]
...benutze in Makros immer...
exten => s,1,NoOp()
...und rufe sie so auf...
same => n,Macro(callerlog,${CALLERID(ani)})
...das "MacroExit()" hat mich stutzig gemacht, da hab ich nochmal genauer hingeschaut.
:rolleyes:

Beispiel extensions.conf
Code:
[macro-test]
exten => s,1(argumentausgabe),Verbose(Makro: ${ARG1})
same => n(argumentverarbeitung),Verbose(Makro: ${SHELL(/bin/sh /etc/asterisk/cmdret ${ARG1})})
same => n(beenden),MacroExit()
 
[incoming]
exten => _X.,1,Macro(test,${EPOCH})
same => n,Hangup()
 
Zuletzt bearbeitet:
Ich kapiere die Syntax nicht... :rolleyes:


Code:
[general]
static=yes
writeprotect=no
clearglobalvars=no
;
[macro-callerlog]
exten => s,1(argumentausgabe),Verbose(Makro: ${ARG1})
same => n(argumentverarbeitung),Verbose(Makro: ${SHELL(/bin/sh /var/lib/asterisk/agi-bin/callerlog.sh ${ARG1})})
same => n(beenden),MacroExit()
;
[incoming]
;exten => _X.,1,GoSub(macro-check-caller-reputation,s,1(${CALLERID(ani)}))
exten => _X.,1,Macro(macro-callerlog,macro-check-caller-reputation)
;
[macro-check-caller-reputation]  
;exten => _X.,1,NoOp(CALLER-REPUTATION)
exten => s,1,NoOp()
same => n,Set(TLW_ANINUM=${ARG1})  
same => n,NoOp(Testing number ${TLW_ANINUM})  
same => n,AGI(tellowsagi.php)
;same => n,Verbose(Makro: ${SHELL(/bin/sh /var/lib/asterisk/agi-bin/callerlog.sh ${ARG1})})
same => n,NoOp(AGI Return ${TLW_REQUEST} with score ${TLW_SCORE})
.....

Dann nörgelt Asterisk:

Code:
Asterisk Ready.
  == Parsing '/etc/asterisk/cli.conf': Found
  == Using SIP RTP CoS mark 5
    -- Executing [623@incoming:1] Macro("SIP/fbfgateway-00000000", "macro-callerlog,macro-check-caller-reputation") in new stack
[Oct 16 15:30:47] WARNING[22567][C-00000000]: app_macro.c:309 _macro_exec: No such context 'macro-macro-callerlog' for macro 'macro-callerlog'. Was called by 623@incoming
    -- Auto fallthrough, channel 'SIP/fbfgateway-00000000' status is 'UNKNOWN'

 
Syntax
Macro(callerlog) ruft [macro-callerlog] auf.
Macro(check-caller-reputation) ruft [macro-check-caller-reputation]
...schau dir die Fehlermeldung genau an...
Code:
No such context 'macro-macro-callerlog'
...was ist da zuviel?

Mit Macro() wird ein Makro mit, wenn gewünscht, einem oder mehreren Argumenten aufgerufen, jeweils mit Komma getrennt.

Also...
Code:
exten => _X.,1,NoOp(Anrufercheck)
same => n,Macro(callerlog,${CALLERID(ani)})
same => n,Macro(check-caller-reputation,${CALLERID(ani)})
 
Zuletzt bearbeitet:
OK, Danke!

So funktioniert es nun: ;)


Code:
[general]
static=yes
writeprotect=no
clearglobalvars=no
;
[macro-callerlog]
exten => s,1(argumentausgabe),Verbose(Makro: ${ARG1})
same => n(argumentverarbeitung),Verbose(Makro: ${SHELL(/bin/sh /var/lib/asterisk/agi-bin/callerlog.sh ${ARG1})})
same => n(beenden),MacroExit()
;
[incoming]
exten => _X.,1,NoOp(Anrufercheck)
same => n,Macro(callerlog,${CALLERID(ani)})
same => n,Macro(check-caller-reputation,${CALLERID(ani)})
;
[macro-check-caller-reputation]  
exten => s,1,NoOp()
same => n,Set(TLW_ANINUM=${ARG1})  
same => n,NoOp(Testing number ${TLW_ANINUM})  
same => n,AGI(tellowsagi.php)
....

Mir ist allerdings noch nicht klar was die Werte in den Klammern bedeuten?

exten => _X.,1,NoOp(Anrufercheck)
exten => s,1(argumentausgabe),Verbose(Makro: ${ARG1})

same => n(beenden),MacroExit()

Sind das Kommentare?
 
Sehr schön, hab dich neugierig gemacht. :D

NoOp(Aussagekräftiger Name)
Macht nix, ausser zu Informieren (Ausgabe), ähnlich Verbose().

Also...
exten => 110,1 <-PRIORITY
exten => 110,1(sprungmarke) <-PRIORITYLABEL

1. Aussagekräftige Prioritylabel machen denn Code lesbarer
2. ...viel wichtiger: Sie können mit GoTo() und/oder GoSub() und ähnlichen Sprungkommandos direkt angesprungen werden.

Beispiel:
same => n(springe),GoTo(110,sprungmarke("Hallo Welt"))
( "Hallo Welt" = "${ARG1}" (String) in Extension 110 )
 
Zuletzt bearbeitet:
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.