Wie sende ich die Richtige Rufnummer

wuptal

Neuer User
Mitglied seit
30 Jan 2008
Beiträge
123
Punkte für Reaktionen
0
Punkte
0
Hallo,

wir haben einen Anlagenanschluss
und jeder Teilnehmer sollte seine rufnummer senden.
also wir haben 12345-0 bis 29
uns teilnemer 29
soll dir rufnummer 1234529 senden
dieser sendet aber wie alle anderen auch die 12345-0

misdn.conf

[general]
bridging=yes

[default]
echocancel=100
senddtmf=yes
rxgain=0
txgain=2
localdialplan=2
overlapdial=yes
immediate=no
language=de

;rufnummer anzeigen
presentation=-1
screen=-1
;use_callingpres=yes

;rufnummer anzeigen ende

[AnlagenAnschluss]
ports=1
context=eingehend
msns=*


sip.conf
[general]
port=5060
bindaddr=0.0.0.0
context=sonstige
disallow=all
allow=alaw
allow=ulaw
dtmfmode=rfc2833



[meine-telefone-template](!)
context=meine-telefone
type=friend
host=dynamic


[210](meine-telefone-template) ;Chef
CALLERID="Geschäftsführung"<210>
username=210

[212] (meine-telefone-template);Buchhaltung
CALLERID="Buchhaltung"<212>
username=212

[214](meine-telefone-template) ; Technik
CALLERID="Technik"<214>
username=214

[216](meine-telefone-template) ;3tes Büro
CALLERID="3tes Büro"<216>
username=216

[218](meine-telefone-template) ;Betrieb
CALLERID="Betrieb"<218>
username=218

[220](meine-telefone-template) ;Lager
CALLERID="Lager"<220>
username=220

extnsions.conf
[BLAXXX]

[meine-telefone]
exten=>_2XX,1,Dial(SIP/${EXTEN},20)
;TELERAUS=0
;TESTRAU=0
exten=>_0X.,1,SET(TELERAUS=${CALLERID(number)})
exten=>_0X.,n,SET(CALLERID(num)=<12345>)
exten=>_0X.,n,SET(TESTRAUS=12345)
exten=>_0X.,n,Dial(mISDN/g:AnlagenAnschluss/${EXTEN:1}/${TESTRAUS})

[eingehend]
TELENUMMER=0

;zentrale
exten=>_123450,1,SET(TELENUMMER=${CALLERID(number)})
exten=>_123450,n,SET(CALLERID(all)=0${TELENUMMER})
exten=>_123450,n,Dial(SIP/210,20)
 
Naja, was erwartest Du wenn du

Code:
exten=>_0X.,n,SET(TESTRAUS=12345)

angibst an magischen Dingen? Du musst in der TESTRAUS-Variablen schon irgendwie mitteilen, dass Du bei Absende-Rufnummer X die Anlagenanschlussnummer Y mitsenden willst.

Ich würde das über so eine Asterisk-interne Datenbank lösen. Dazu solltest Du Dir Einträge anlegen, die als Key die interne Kennung und als Value die Absenderufnummer enthält. Z.B. geht das in der Asterisk-Konsole so:

Code:
database put OUT 229 1234529

Analog dazu kannst Du die Nummer auch wieder da rausnehmen mit

Code:
database del OUT 229

Und im Wählplan-Teil für die abgehende Gespräche müsste dann stehen:

Code:
exten=>_0X.,1,GotoIf($[x${DB(OUT/${CALLERID(number)})} = x]?setdefault:setspecial)
exten=>_0X.,n(setspecial),Set(CALLERID(number)=${DB(OUT/${CALLERID(number)})})
exten=>_0X.,n(setspecial),Goto(dial)
exten=>_0X.,n(setdefault),Set(CALLERID(number)=123450)
exten=>_0X.,n(setdefault),Goto(dial)
exten=>_0X.,n(dial),Dial(mISDN/g:AnlagenAnschluss/${EXTEN:1})

Das besagt, dass als erstes geschaut wird, ob für die wählende Rufnummer so ein Datenbankeintrag vorhanden ist. Ist dies der Fall, wird die eingetragene Absende-Rufnummer verwendet. Ansonsten der Default der Anlage gesetzt. Dann wählt er ganz normal mit dem Dial-Kommando. Das mit dem / und der Rufnummer hinter dem misdn-Dial-Dings (wo Du die TESTRAUS-Variable verwendest) braucht man nicht wenn man die CALLERID(Number) setzt. So meine Beobachtung.
 
Danke für deine Schnelle antwort
Verstehe deine erste Zeile nicht könntest du mir die vielleicht noch mal etwas erläutern?


aber könnte ich nicht auch
TELERAUS=12345${EXTEN}

dann müsste ich doch auch zu meinem Erfolg kommen da EXTEN doch
meinen Teilnehmer enthält also die 29

dann müsste die TELERAUS =1234529 eigentlich sein oder?

bzw.

wenn ich die TELERAUS mit 1234529 manuell festlege egal wer rausruft bekomme ich trotzdem 123450 angezeigt.
 
Die Variable $EXTEN bezieht sich immer auf die Nummer, die angerufen wird. Und also wenn Mitarbeiter X die 44771111 anruft würdest Du mit deinem TESTRAUS-String als Absenderufnummer die 1234544771111 setzen. Das dürfte nicht gehen und ist sicherlich auch nicht von Dir gewünscht.

Du könntest aber (wenn deine internen SIP-Nummern immer deckungsgleich sind) noch folgendes machen (nicht tiefgreifend getestet):

Code:
TELERAUS=12345${CALLERID(number):1}

Demzufolge wird die erste Nummer der SIP-Kennung weggeschmissen und der Rest für die Absendekennung verwendet. Also bei SIP-Kennung 220 würde das die 1234520 ergeben. Dann kann der aber nicht unter einer "anderen" Anruferkennung raustelefonieren, sondern immer nur mit seiner richtigen Durchwahl. Mach ich in "meinen" Anlagen eher niucht, da nicht alle Durchwahlen nach aussen bekanntwerden müssen, bzw. der Chef idealerweise mit der Zentral-, bzw. Sekretärinnen-Kennung raustelefoniert. Aber das ist Auslegungssache.


Die Erklärung für die erste Zeile
Code:
exten=>_0X.,1,GotoIf($[x${DB(OUT/${CALLERID(number)})} = x]?setdefault:setspecial)

Dazu muss man wissen, dass Datenbank-Lookups nach dem Schema
Code:
DB(<Datenbankname>/<Key>)
erfolgen. Mit dem obigen String suche ich also in der Datenbank "OUT" nach dem Key CALLERID(number) - also der SIP-Anruferkennung. Das "x" vor der Abfrage ist nur ein Stilmittel. Das ziehe ich als Überprüfung heran, wenn der Lookup leer ist (sprich: wurde nichts gefunden). Dann ist das Resultat mit dem obigen Query einfach nur "x". Die eckigen Klammern leiten diese Überprüfung ein, die Geschweiften braucht man bei Variablen und die Runden sind bei Funktionen, bzw. Untervariablen vonnöten. Aber zurück zum GotoIf. Ist der Test also nur "x" springt er im aktuellen Wählplanpattern zum Label "setdefault" und setzt die Anlagenrufnummer, ansonsten (wenn er was gefunden hat) zu "setspecial" und setzt die gesonderte Absendenummer.
 
Danke für deine schnellen Antworten.
Habe aber immer noch keinen Erfolg
habe es erst mal mit der einfacheren Lsg.
versucht, aber leider ohne Erfolg
Auszug aus der Extensions.conf
;TELERAUS=0
;TESTRAU=0
exten=>_0X.,1,SET(TELERAUS=12345${CALLERID(number):1})
exten=>_0X.,n,SET(CALLERID(num)=${TELERAUS})
exten=>_0X.,n,Dial(mISDN/g:AnlagenAnschluss/${EXTEN:1}/${TELERAUS})

Was mache ich falsch?
oder muss man noch irgendwas in den anderen Dateien berücksichtigen?

gruß Wuptal
 
Völlig schleierhaft ist mir ehrlich gesagt, was Du mit dem "/${TELERAUS}"-Statement im Dial-Kommando bezwecken willst. Die abgehende Rufnummer wird über die Variable "CALLERID(number)" oder "CALLERID(num)" festgelegt, im Dialstring kenn ich das garnicht.


Ah, und nochne Idee: ich habe bei einem Telekom-Anlagenanschluss das Problem gehabt, dass er die abgehende Nummer erst korrekt eingesetzt hat, als ich die komplette Nummer mit Vorwahl angegeben habe. Könnte es das vielleicht auch sein?
 
nun ja dachte dass man die rufnummer dahinter setzten muss
aber wenn das falsc ist nehme ich es mal raus?
hast du denn eine Idee, warum ich die rufnummer nicht senden kann?
 
Hm, wenn es immernochnicht geht, mal ganz profan gefragt: hat es denn je (z.B. mit einer anderen Telefonanlage) funktioniert?

Und für den Anschluß ist auch das Setzen der Absenderufnummer (CLIP-noscreening) providerseitig erlaubt? Mystique.
 
Und für den Anschluß ist auch das Setzen der Absenderufnummer (CLIP-noscreening) providerseitig erlaubt? Mystique.

CLIP sollte reichen, noscreening braucht man nur, wenn man eine Rufnummer signalisieren will, die nicht zum Anschluß gehört. Man sollte auch mal die Varianten mit Vorwahl, mit Vorwahl aber ohne die führende '0' und mit Länderkennung probieren, manche Provider sind da ein bischen komisch.
 
Hi Leute also von der Telekom aus ist alles richtig eingestellt.!
Wo liegt mein Fehler?!
finde ihn nicht?
 
so habe jetzt den Fehler gefunden!

Bei der Telekom muss man die Ortsvorwahl mitschreiben aber ohne führende Null!

ORT xyz 0123

Anschluss 12345

=> Callerid(num)=12312345

Danke
 
Siehe mein Link von oben... ;)
Setzt Du dann noch den Threadtitel auf "[Erledigt]"? (1. Posting -> Ändern -> Erweitert) Danke!


Gruß,
Wichard
 
sorry finde ich nicht
 
Die Lösung war zumindest bei mir.

Die CALLERID(number)=Vorwahlrufnummer
ACHTUNG VOrwahl ohne führende Null

(deutsche Telekom)
 
welchen Wert haben die Einträge der /etc/asterisk/misdn.conf von
  • dialplan=
  • localdialplan=
  • cpndialplan=
 
Folgeproblem..

@ senfomat:

danke für die gute Anleitung, hat sofort funktioniert. Wie sähe es denn aus, wenn ich die db nicht verwenden würde? Dann müsste ich doch für jede Nebenstelle einen Eintrag in der extensions.conf haben, ne?

Eine kleines Folgeproblem taucht allerdings auf: Nachdem die NebenstellenNr.- Übermittlung funktioniert, erreiche ich die Hälfte meiner Nebenstellen nicht mehr. Und zwar habe ich die Nebenstellen 1, 2, 3, 4, und dann geht es mit 51, 52, 53 etc weiter. die zweistelligen Rufnummern sind nach der Config von dir nicht mehr erreichbar. Es sind alles SIP (snom) phones.
@alle: Hat jemand eine Idee, was das sein könnte?

Hier meine extensions.conf:
Code:
[from-internal-custom]

include => from-internal-trixbox
# ruf picken
exten => _*8.,1,SET(GLOBAL(PICKUPMARK)=${EXTEN:2})
exten => _*8.,n,Pickup(${EXTEN:2}@PICKUPMARK)

# hint notify für pick
exten => 0,hint,SIP/3
exten => 1,hint,SIP/1
exten => 2,hint,SIP/2
exten => 3,hint,SIP/3
exten => 4,hint,SIP/4

# attach own extension to $OUTNUM
exten=>_X.,1,GotoIf($[x${DB(OUT/${CALLERID(num)})} = x]?setdefault:setspecial)
exten=>_X.,n(setspecial),Set(CALLERID(num)=${DB(OUT/${CALLERID(num)})})
exten=>_X.,n(setspecial),Goto(dial)
exten=>_X.,n(setdefault),Set(CALLERID(num)=571943)
exten=>_X.,n(setdefault),Goto(dial)
exten=>_X.,n(dial),Dial(mISDN/g:extern/${EXTEN:1})

;1234,1,Playback(demo-congrats)         ; extensions can dial 1234
;1234,2,Hangup()
;h,1,Hangup()
;include => custom-recordme                     ; extensions can also dial 5678

[custom-meetme3]
exten => s,1,Answer
exten => s,n,Wait(3)
exten => s,n,CBMysql()
exten => s,n,Hangup

[from-pstn-custom]
exten => _571943[5-9],1,Goto(from-pstn,5719430,1)
exten => _571943[0-4][0-9],1,Goto(from-pstn,5719430,1)
exten => _5719436[4-9],1,Goto(from-pstn,5719430,1)
exten => _571943[7-8][0-9],1,Goto(from-pstn,5719430,1)
exten => _5719435[4-9],1,Goto(from-pstn,5719430,1)
exten => _5719439[0-6],1,Goto(from-pstn,5719430,1)

Das Format der extensions.conf finde ich sowieso recht kryptisch. Wo kann ich denn mal etwas allgemein erhellendes dazu lesen?

Danke schon mal für eure Antworten..
 
@burman

meine komplette misdn konfig ist oben
habe sie also nicht angegeben
 
Meine Frage war eher als Anregung zu verstehen wo man nachschauen kann.
0 heist unknown. Also
dialplan=0
localdialplan=0
cpndialplan=0

heist es hängt davon ab was beim Provider als 'default' eingestellt ist - d.h. ausprobieren.

Die anderen Einstellungen National/International/Subscriber sind z.B hier erklärt.
 
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.