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...
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
*
Code:
osmc*CLI> !whoami
asterisk
osmc*CLI> !ls /var/log/asterisk/cdr-custom
Master.csv Simple.csv