Custom-Context

robinsonR

Mitglied
Mitglied seit
17 Apr 2006
Beiträge
560
Punkte für Reaktionen
0
Punkte
16
Ich habe zwar eine Trixbox am Start, aber ich glaube, das ist ein allgemeines Problem. Folgende Situation:

Ich möchte in einem automatisch erzeugten Context (hier ist es wohl spezifisch) einen Teil ersetzen. Darum habe ich alle Code-Zeilen bis zur unveränderten Stelle auskommentiert und die Änderungen in einen inkludierten Custom-Context gestellt.
Code:
[ext-did]
include => ext-did-custom
;exten => fax,1,Goto(ext-fax,in_fax,1)
;exten => 0xxxxxxx,1,Set(__FROM_DID=${EXTEN})
;exten => 0xxxxxxx,n,Gosub(cidlookup,cidlookup_2,1)
exten => 0xxxxxxx,n,Gosub(app-blacklist-check,s,1)
exten => 0xxxxxxx,n,GotoIf($[ "${CALLERID(name)}" != "" ] ?cidok)
exten => 0xxxxxxx,n,Set(CALLERID(name)=${CALLERID(num)})
exten => 0xxxxxxx,n(cidok),Noop(CallerID is ${CALLERID(all)})
exten => 0xxxxxxx,n,Set(__CALLINGPRES_SV=${CALLINGPRES_${CALLINGPRES}})
exten => 0xxxxxxx,n,SetCallerPres(allowed_not_screened)
exten => 0xxxxxxx,n,Goto(app-daynight,1,1)
; end of [ext-did]

Code:
[ext-did-custom]
exten => fax,1,Goto(ext-fax,in_fax,1)

exten => 0xxxxxxx/_00809NXXXXX.,1,Set(CALLERID(all)=001809${CALLERID(all):6})
exten => 0xxxxxxx/_00829NXXXXX.,1,Set(CALLERID(all)=001829${CALLERID(all):6})

exten => 0xxxxxxx,Set(__FROM_DID=${EXTEN})

exten => 0xxxxxxx,n,Gosub(cidlookup,cidlookup_2,1)

exten => 0xxxxxxx/anonymous,1,Set(CALLERID(name)="ohne Nummer") 
exten => 0xxxxxxx/gw01netvoip,1,Set(CALLERID(name)="ohne Nummer") 
exten => 0xxxxxxx/0,1,Set(CALLERID(all)="ohne Nummer") 

; end of [ext-did-custom]
0xxxxxxx entspricht der Telefonnummer.

Wenn ich nun über das Web-GUI eine Änderung vornehme, wird der auskommentierte Teil immer wieder durch das Original ersetzt und ich muss erneut die betreffenden Zeilen auskommentieren.
Gibt es dafür einen einfacheren Weg?
 
Hi,

wenn ich die Syntax der Asterisk Konfig richtig verstanden habe, sollte ein

exten => 0xxxxxxx,n,Goto(ext-did,${EXTEN},3)

oder so ähnlich ;-) am Ende der ext-did-custom das Problem lösen. Dann brauchst du die Zeilen nicht mehr auszukommentieren,
da du beim Zurückspringen zum ext-did Context direkt in Zeile 3 einsteigst.
 
Leider funktioniert das nicht. Anscheinend kann extensions_custom.conf nicht für diesen Zweck gebraucht werden. Es muss der gesamte [geänderte] Context in der extensions_override_freepbx.conf gespeichert werden. Oder aber in die entsprechende php-Datei eingebaut werden:
Code:
To perform insertion into the dialplan:
Create or copy and modify an existing FreePBX module to suit your needs
In the modules functions.inc.php, the dialplan generation is usually in {modulename}_get_config
You can utilize dialplan generation code from /var/www/html/admin/extensions.class.php
When overriding certain aspects of generated dialplan, I generally use the $ext->replace, $ext->splice and $ext->remove functions. By combining each of these at the right place you can adapt any FreePBX dialplan to suit your needs.
I recently commited two dialplan manipulation functions to the FreePBX project - replace() and remove(). In addition, I added a parameter to splice() to allow for the splicing in of dialplan with a new tag. You should use the latest version of FreePBX to have access to these functions.
Using this mechanism, I have found that I have 100% effectiveness in manipulating generated dialplan. I was able, for instance, to inject speech recognition dialplan (also part of my commit) to any existing IVR to speech enable it while still allowing for DTMF fallback.
It's not quick and dirty, but it is the only thing you can expect to work more long term. The nice thing is if you create a module that does that dialplan injection/replacement and FreePBX gets updated, your code still works.
Gemäss http://trixbox.org/forums/trixbox-forums/help/insert-code-context
 
Also bin jetzt wieder etwas schlauer... ;-)

Die Asterisk nimmt den Custom Context nur, wenn im "normalen" nichts matcht.
Soll heißen, auch wenn der include ganz oben im Context steht wird er nur beachtet, wenn der Rest aus diesem Context nicht greift.

Wenn du dir im CLI den Dialplan anschaust, wirst du genau das sehen.

Wenn du nun deinen eigenen Context nicht in einem Custom Context unterbringen kannst, dann schreib ihn einfach in die extension_override_freepbx.conf. So wie du es schon beschrieben hast.
Hab das selber gerade mit einer outbound route gemacht.
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,295
Beiträge
2,249,594
Mitglieder
373,893
Neuestes Mitglied
Kukkatto
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.