Spezielle Wahlregel für einzelne Nebenstelle

ciscllc

Neuer User
Mitglied seit
19 Aug 2008
Beiträge
31
Punkte für Reaktionen
0
Punkte
6
Hallo!

Ich würde gerne einer einzelnen Nebenstelle eine spezielle Wahlregel für ausgehende Anrufe geben.
Diese soll dann die angerufene Nummer + Anrufzeit + Dauer als CSV Datei abspeichern und eine eigene Nummer anzeigen (also nicht Hauptnummer + Durchwahl). Mein VOIP Provider erlaubt CLIP.

Wie soll ich das angehen? Würde gerne ohne einer speziellen Vorwahl für ausgehende Anrufe arbeiten.

Danke!
 

koyaanisqatsi

IPPF-Urgestein
Mitglied seit
24 Jan 2013
Beiträge
12,560
Punkte für Reaktionen
330
Punkte
83
Moinsen


Das geht im Dialplan mit:
Rich (BBCode):
exten => 0/_100[0-9],1,answer(250)
exten => 0/_100[0-9],2,waitexten(7200,m)
Übersetzung: Nur die Peers 1000 bis 1009 kommen mit Wahl von 0 ins Menü
 

ciscllc

Neuer User
Mitglied seit
19 Aug 2008
Beiträge
31
Punkte für Reaktionen
0
Punkte
6
Hey,

das versteh ich leider jetzt nicht.
Ich will ja nicht in ein Menü sondern nach draußen wählen. Und es sollen alle nach draußen wählen können, nur eine Nebenstelle soll geloggt werden und eine andere CallerID angezeigt bekommen.

Derzeit mache ich folgendes:

Code:
exten => _XXX.,1,Log(NOTICE, Dialing out from ${CALLERID(all)} to ${EXTEN} through Provider)
exten => _XXX.,n,GotoIf($["${CALLERID(num)}" = "335"]?dial2)
exten => _XXX.,n,GotoIf($["${CALLERID(num)}" != "335"]?dial1)
exten => _XXX.,n(dial1),Dial(SIP/${EXTEN}@9123456789)
exten => _XXX.,n,Goto(ende)
exten => _XXX.,n(dial2),Set(CALLERID(all)="Name" <43123456789>)
exten => _XXX.,n,Dial(SIP/${EXTEN}@9123456789)
exten => _XXX.,n(ende),Hangup()
Aber da wird es noch nicht geloggt, bzw. wird die Durchwahl 335 in dem Fall, nicht korrekt erkannt und die CallerID nicht gesetzt.

LG
 

koyaanisqatsi

IPPF-Urgestein
Mitglied seit
24 Jan 2013
Beiträge
12,560
Punkte für Reaktionen
330
Punkte
83
Das Menü ( waitexten() ) ist doch nur ein Beispiel um das Beispiel kurz zu halten.
Es geht erstmal ums filtern, dass nur gewisse Peers das machen dürfen.

Eine CSV hast du wahrscheinlich schon, siehe...
/var/log/asterisk/cdr-csv
/var/log/asterisk/cdr-custom
...die passenden Einträge können z.B. mit "grep" ausgelesen und abgespeichert zur Verfügung gestellt werden.
Das kann innerhalb des Dialplans mit system() gemacht werden.

Wenn du die CallerID änderst wäre es nicht von Vorteil einen zusätzlichen Header zu haben, der P-Asserted-Identity setzt?
Denn wenn du dann vor dem Dial() die ${CALLERID(all)} änderst, änderst du auch automatisch den P-Asserted-Identity Header.

Ich weiss aber nicht ob du chan_pjsip oder chan_sip nutzt.
Für chan_sip werden dafür Einträge in der sip.conf benötigt...
Code:
[general]
; Aktiviere
trustrpid=yes
; Nimm P-Asserted-Identity dafür
sendrpid=pai
rpid_update=yes
Danach kann gesetzt werden und als Resultat wird auch P-Asserted-Identity geändert...
Code:
exten => 999,1,verbose(1,${CALLERID(all)})                
exten => 999,2,set(CALLERID(all)=EIERKOPF<1005>)          
exten => 999,3,verbose(1,${CALLERID(all)})                
exten => 999,4,goto(whitelist,${EXTEN},1)
Hier noch das Ziel...
Bildschirmfoto vom 2020-08-20 13-05-49.png
Und last but not least, das INVITE dazu aus den Support Daten der FRITZ!Box...
Code:
2020-08-20 12:55:13.314 - IN: my=192.168.188.1%12:5060 peer=192.168.188.9 port=5060 UDP, sipiface=none:
INVITE sip:[email protected];uniq=<hash> 2.0
Via: SIP/2.0/UDP 192.168.188.9:5060;branch=<hash>
From: "EIERKOPF" <sip:[email protected]>;tag=<hash>
To: <sip:[email protected];uniq=<hash>>
Call-ID: <hash>@192.168.188.9:5060
CSeq: 102 INVITE
Contact: <sip:[email protected]:5060>
Max-Forwards: 70
User-Agent: PiBX
Date: Thu, 20 Aug 2020 10:55:13 GMT
Supported: replaces
Supported: timer
P-Asserted-Identity: "EIERKOPF" <sip:[email protected]>
Allow: INVITE,  ACK,  CANCEL,  OPTIONS,  BYE,  REFER,  SUBSCRIBE,  NOTIFY,  INFO,  PUBLISH,  MESSAGE
Content-Type: application/sdp
Content-Length:   286

v=0
o=root 1439618647 1439618647 IN IP4 192.168.188.9
s=PiBX
c=IN IP4 192.168.188.9
t=0 0
m=audio 50020 RTP/AVP 9 8 0 101
a=rtpmap:9 G722/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=maxptime:150
a=sendrecv
Bevor ich es vergesse, hier noch das "grep"...
Code:
grep "EIERKOPF" Master.csv | tail -n1
"""EIERKOPF"" <1005>","1005","999","whitelist","SIP/1003-00000000","SIP/1002-00000001","Dial","SIP/1002,120,md","2020-08-20 12:55:13","","2020-08-20 12:55:21","8.258951","0.000000","BUSY","DOCUMENTATION","","1597920913.0","",0
( Holt den letzten/aktuellsten Eintrag ( tail -n1 ) aus der CSV )
...ich schätze, dass das "grep" mit system('grep "EIERKOPF" /var/log/asterisk/cdr-custom/Master.csv | tail -n1') im Dialplan nach dem Hangup() erfolgen muss.
Dafür würde sich die h Extension anbieten.
Wenn das gut klappt ( Darf der "asterisk" User in /var/log/asterisk lesen? )* eine Umleitung einbauen.
;) ( system('grep "EIERKOPF" /var/log/asterisk/cdr-custom/Master.csv | tail -n1 >>/pfad/zur/eierkopf.csv') )

Impression
Bildschirmfoto vom 2020-08-20 14-17-27.png

*
Code:
osmc*CLI> !whoami
asterisk
osmc*CLI> !ls /var/log/asterisk/cdr-custom
Master.csv  Simple.csv
 
Zuletzt bearbeitet:
  • Like
Reaktionen: ciscllc

ciscllc

Neuer User
Mitglied seit
19 Aug 2008
Beiträge
31
Punkte für Reaktionen
0
Punkte
6
Danke!

Ich werde es einmal mit der Grundlage versuchen!
 

koyaanisqatsi

IPPF-Urgestein
Mitglied seit
24 Jan 2013
Beiträge
12,560
Punkte für Reaktionen
330
Punkte
83
Einen Schönheitsfehler hat es aber noch ;)
Die h-Extension sollte schon ( mit ExecIf() ) auf ${CALLERID(name)} oder ${CALLERID(num)} prüfen ob "EIERKOPF" den Call getätigt hat.
Sonst hagelt es natürlich mehrfache Duplikate in eierkopf.csv wenn das nicht passiert.
Das könnte dann so aussehen...
Rich (BBCode):
exten => h,n,execif($["${CALLERID(name)}"="EIERKOPF"]?system('grep "EIERKOPF" /var/log/asterisk/cdr-custom/Master.csv | tail -n1 >>/etc/asterisk/eierkopf.csv'):verbose(1,'Kein EIERKOPF gefunden'))
( Nach dem Fragezeichen: True (1) und nach dem Doppelpunkt: False (0) )
Dann wird nach Hangup() nur das verbose() ...
Code:
[Aug 20 14:47:43]  'Kein EIERKOPF gefunden!'
...ausgegeben, wenns nicht der EIERKOPF war.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: ciscllc

ciscllc

Neuer User
Mitglied seit
19 Aug 2008
Beiträge
31
Punkte für Reaktionen
0
Punkte
6
Sehr fein!
Danke!
Muss mich noch etwas mit den CDR Einstellungen spielen, dann wird das schon was.
 

Zurzeit aktive Besucher

3CX

Statistik des Forums

Themen
235,885
Beiträge
2,067,230
Mitglieder
356,872
Neuestes Mitglied
Machsgut