Skript für telefonieren und Voicemail? Hilfe

Winterwolf

Neuer User
Mitglied seit
21 Okt 2004
Beiträge
30
Punkte für Reaktionen
0
Punkte
0
Hallo ich bin ganz neu in diesem Forum und habe da ein kleines Problem mit dem schreiben eines Skripts und ich denke ihr könnt mir da prima weiterhelfen.

Das Skript sollte so aussehen das es folgendes beinhaltet bzw. kann:

1. Wenn jemand von außen Anruft soll erst eine Willkommensmeldung zu hören sein.
2. Darauf soll er die Nummer (Durchwählen) die von außen gewählt worden ist.
3. Wenn dort keiner innerhalb 30 Sekunden keiner meldet, soll der User einen "Willkommen auf der Voicemail von X" Nachricht hören und diese in seinem Voicemailaccount (oder Box oder wie auch immer das am besten Bezeichnet wird) ablegen.
4. Soll die Verbindung getrennt werden.

Sobald aber der Angerufene (wiederkommt) und sein Telefon abhebt soll er ein Auswahl Menu erhalten, nach dem Motto "Sie haben Post".
Und zwar mit den folgenden Möglichkeiten.

1. Voicemail anhören
2. Voicemail löschen
3. Voicemail später anhören (falls nicht zu realisieren , dann später anhören wenn er eine bestimmte Nummer wählt)
4. Menu schließen (Und danach weiter telefonieren können)

Des weitern soll es Gruppen geben die nach dem gleichen Prinzip wie oben genannt funktionieren sollen. Auch mit Anrufen, Voicemail, Voicemail Menu.

Und Transfer und parken soll auch möglich sein (wenn der Anrufer geparkt wird soll eine Melodie erklingen evtl. auch beim parken oder halten vom Anruf).

Telefonie soll glaub ich über SIP laufen... falls das wichtig sein sollte ;)

Ich hoffe mir kann da einer helfen. Ich beschäftige mich erst seit 1-2 Tagen mit der Asterix und VOIP.

Achja und wenn ihr Tips haben solltet in Punkto Forumpost's, immer her damit :lol:
 
Winterwolf schrieb:
Hallo ich bin ganz neu in diesem Forum und habe da ein kleines Problem mit dem schreiben eines Skripts und ich denke ihr könnt mir da prima weiterhelfen.

Das Skript sollte so aussehen das es folgendes beinhaltet bzw. kann:

Hallo und Willkommen im Forum.

Für das was Du machen möchtest braucht es eigentlich keine Skripte, das kann der Rufnummernplan (extensions.conf) schon so.

1. Wenn jemand von außen Anruft soll erst eine Willkommensmeldung zu hören sein.

mit
exten => rufnummer,1,Playback(Datei) kannst Du was abspielen

2. Darauf soll er die Nummer (Durchwählen) die von außen gewählt worden ist.
das erledigt
exten => rufnummer,2,Dial(wohindannauchimmer)

3. Wenn dort keiner innerhalb 30 Sekunden keiner meldet, soll der User einen "Willkommen auf der Voicemail von X" Nachricht hören und diese in seinem Voicemailaccount (oder Box oder wie auch immer das am besten Bezeichnet wird) ablegen.

Das macht
exten => rufnummer,2,Dial(ziel,30)
exten => rufnummer,3,Voicemail(umailboxnr) (das u davor steht für "unavailable" d.h. spielt eine Nachricht "Der Anrufer xy...." ab)

4. Soll die Verbindung getrennt werden.
exten => rufnummer,4,Hangup

Sobald aber der Angerufene (wiederkommt) und sein Telefon abhebt soll er ein Auswahl Menu erhalten, nach dem Motto "Sie haben Post".
Und zwar mit den folgenden Möglichkeiten.

Da Du eh SIP-Endgeräte verwenden willst kannst Du Dir das eigentlich sparen da eigentlich alle Endgeräte irgendwo eine Lampe/Symbol im Display haben das bei eingetroffenen Voicemails aufleuchtet. Ausserdem kann Asterisk auch noch parallel die Voicemails als Datei per e-mail vesenden.

Ich hoffe mir kann da einer helfen. Ich beschäftige mich erst seit 1-2 Tagen mit der Asterix und VOIP.

Am besten schaust Du mal in die FAQ und suchst ein wenig durchs Forum, denn für vieles existiert schon eine (oder sogar mehrere) Lösungen :)

Gruss,
rajo
 
Vielen lieben Dank, also so schnell und Kompetent ist mir noch in keinem Forum geholfen worden ^^.

Eine Frage hast du jetzt in mir geweckt....

Wenn ich =

exten => rufnummer,2,Dial(ziel,30)
exten => rufnummer,3,Voicemail(umailboxnr) (das u davor steht für "unavailable" d.h. spielt eine Nachricht "Der Anrufer xy...." ab)

Kann ich das Ziel irgendwie dynamisch einbinden? Ansonsten muss ich ja für jeden User wohl die exten anlegen. Und das ist ein ziemlicher Administrations aufwand.

Ich dachte da so an ein Macro oder sowas in der art.
Das ich Quasi ein Bereich in der extensions.conf habe der sich um die User verwaltung kümmert.

z.B.

[var]
GRUPPE1=SIP/gruppe1 ; Erstellen einer globalen variable namens ${GRUPPE1}
USER1=SIP/user1 ; Erstellen einer globalen variable namens ${USER1}
USER2=SIP/user2 ; Erstellen einer globalen variable namens ${USER2}

[intern]
exten => 1,1,Dial(SIP/user1)
exten => 2,1,Dial(SIP/user2)
exten => 3,1,Dial(SIP/gruppe1)

Also was auch noch schön wäre... wenn er sich die Telefonnummer merken würde und die dann falls der Anruf fehl schlägt diese automatisch in exten => rufnummer,2,Dial(ziel,30) als Ziel einfügen könnte.
 
Winterwolf schrieb:
Kann ich das Ziel irgendwie dynamisch einbinden? Ansonsten muss ich ja für jeden User wohl die exten anlegen. Und das ist ein ziemlicher Administrations aufwand.

Klar :)

schau Dir mal die extensions.conf an und ggf. das ein oder andere Beispiel hier im Forum oder auf voip-info.org

Prinzipiell ist es so, dass man zum einen nicht jeder Rufnummer explitzit mit exten => 1234,1,.... angeben muss, sondern reguläre Ausdrücke der Form exten => _123.,1 (irgendwas was mit 123 beginnt) oder exten => _.,1, etc. verwenden. Weiterhin merkt sich Asterisk die aktuell gewählte Rufnummer in der Variable ${EXTEN}

Ich dachte da so an ein Macro oder sowas in der art.
Das ich Quasi ein Bereich in der extensions.conf habe der sich um die User verwaltung kümmert.

Genau sowas kann man basteln: Du machst ein Makro das alle Rufnummern akzeptiert und mit denen eben was generisches abarbeitet. Dieses Makro kannst Du dann von allen beliebigen Stellen des Rufnummernplanes aufrufen.
 
Also sollte das ungefähr so aussehn?

include => var
include => user

[var]

exten => _,1,Playback(welcome)
exten => _,2,Dial(${EXTEN},30)
exten => _,3,Voicemail(u1${EXTEN})
exten => _,4,Hangup

[user]

exten => 111,1,Dial(SIP/user1,,tT)
exten => 112,1,Dial(SIP/user2,,tT)
 
naaa, wenn Du mit Makros arbeiten willst sieht das eher so aus:


Code:
[macro-var];
exten => s,1,Playback(welcome) 
exten => s,2,Dial(${EXTEN},30) 
exten => s,3,Voicemail(u1${EXTEN}) 
exten => s,4,Hangup

; dann kommt die eigentliche extensions.conf

[default]
exten => 111,1,Macro(stdexten,SIP/user1,,tT)
exten => 112,1,Macro(stdexten,SIP/user2,,tT)


abgesehen davon bei Pattern nich exten => _,1 sonder exten => _.,1

_ leitet eine Regexp ein und der . steht für "alles" (quasi *)
 
Irgendwas mache ich wohl falsch, weil wenn ich das so eintrage... dann schreibt mir mein SJphone = 404 Not Found :(

Aber mit so Sachen hab ich eigentlich immer pech :(
 
joo... mein fehler... copy&paste ;)

probiers mal hiermit:

Code:
[macro-var]; 
exten => s,1,Playback(welcome) 
exten => s,2,Dial(${EXTEN},30) 
exten => s,3,Voicemail(u1${EXTEN}) 
exten => s,4,Hangup 

; dann kommt die eigentliche extensions.conf 

[default] 
exten => 111,1,Macro(var,SIP/user1,,tT) 
exten => 112,1,Macro(var,SIP/user2,,tT)
 
Hmm also irgendwie ist bei mir hier wo der Wurm drinne....
Ich kann in Asterisk auch nicht den Dial Befehl in der Asterisk Console benutzen und die Telefonnummern kann ich auch nicht anrufen.
Ich bekomme dann den Fehler 403 Forbidden :cry:

Ich poste einfach mal meine extensions.conf *man hat das ja mal das man sowas schnell übersieht*

Code:
[general]
static=yes
writeprotect=no

[globals]
CONSOLE=Console/dsp				; Console interface for demo
;CONSOLE=Zap/1
;CONSOLE=Phone/phone0
IAXINFO=guest					; IAXtel username/password
;IAXINFO=myuser:mypass
TRUNK=Zap/g2					; Trunk interface
TRUNKMSD=1					; MSD digits to strip (usually 1 or 0)
;TRUNK=IAX2/user:pass@provider

;[context]
;exten => someexten,priority,application(arg1,arg2,...)
;exten => someexten,priority,application,arg1|arg2...
;include => daytime|9:00-17:00|mon-fri|*|*

[iaxtel700]
exten => _91700XXXXXXX,1,Dial(IAX2/${IAXINFO}@iaxtel.com/${EXTEN:1}@iaxtel)
[iaxprovider]
;switch => IAX2/user:[key]@myserver/mycontext

[trunkint]
exten => _9011.,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _9011.,2,Congestion

[trunkld]
exten => _91NXXNXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91NXXNXXXXXX,2,Congestion

[trunklocal]
exten => _9NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _9NXXXXXX,2,Congestion

[trunktollfree]
exten => _91800NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91800NXXXXXX,2,Congestion
exten => _91888NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91888NXXXXXX,2,Congestion
exten => _91877NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91877NXXXXXX,2,Congestion
exten => _91866NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91866NXXXXXX,2,Congestion

[international]
ignorepat => 9
include => longdistance
include => trunkint

[longdistance]
ignorepat => 9
include => local
include => trunkld

[local]
ignorepat => 9
include => default
include => parkedcalls
include => trunklocal
include => iaxtel700
include => trunktollfree
include => iaxprovider
include => user

[macro-stdexten];
exten => s,1,Dial(${ARG2},20)					; Ring the interface, 20 seconds maximum
exten => s,2,Goto(s-${DIALSTATUS},1)				; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)

exten => s-NOANSWER,1,Voicemail(u${ARG1})		; If unavailable, send to voicemail w/ unavail announce
exten => s-NOANSWER,2,Goto(default,s,1)			; If they press #, return to start

exten => s-BUSY,1,Voicemail(b${ARG1})			; If busy, send to voicemail w/ busy announce
exten => s-BUSY,2,Goto(default,s,1)				; If they press #, return to start

exten => s-.,1,Goto(s-NOANSWER,1)				; Treat anything else as no answer

exten => a,1,VoicemailMain(${ARG1})				; If they press *, send the user into VoicemailMain

[demo]
;
; We start with what to do when a call first comes in.
;
exten => s,1,Wait,1			; Wait a second, just for fun
exten => s,2,Answer			; Answer the line
exten => s,3,DigitTimeout,5		; Set Digit Timeout to 5 seconds
exten => s,4,ResponseTimeout,10		; Set Response Timeout to 10 seconds
exten => s,5,BackGround(demo-congrats)	; Play a congratulatory message
exten => s,6,BackGround(demo-instruct)	; Play some instructions

exten => 2,1,BackGround(demo-moreinfo)	; Give some more information.
exten => 2,2,Goto(s,6)

exten => 3,1,SetLanguage(fr)		; Set language to french
exten => 3,2,Goto(s,5)			; Start with the congratulations

exten => 1000,1,Goto(default,s,1)
exten => 1234,1,Playback(transfer,skip)		; "Please hold while..." 
					; (but skip if channel is not up)
exten => 1234,2,Macro(stdexten,1234,${CONSOLE})

exten => 1235,1,Voicemail(u1234)		; Right to voicemail

exten => 1236,1,Dial(Console/dsp)		; Ring forever
exten => 1236,2,Voicemail(u1234)		; Unless busy

exten => #,1,Playback(demo-thanks)		; "Thanks for trying the demo"
exten => #,2,Hangup			; Hang them up.

exten => t,1,Goto(#,1)			; If they take too long, give up
exten => i,1,Playback(invalid)		; "That's not valid, try again"

exten => 500,1,Playback(demo-abouttotry); Let them know what's going on
exten => 500,2,Dial(IAX2/[email protected]/s@default)	; Call the Asterisk demo
exten => 500,3,Playback(demo-nogo)	; Couldn't connect to the demo site
exten => 500,4,Goto(s,6)		; Return to the start over message.

exten => 600,1,Playback(demo-echotest)	; Let them know what's going on
exten => 600,2,Echo			; Do the echo test
exten => 600,3,Playback(demo-echodone)	; Let them know it's over
exten => 600,4,Goto(s,6)		; Start over

exten => 8500,1,VoicemailMain
exten => 8500,2,Goto(s,6)
;exten => 1265,1,Dial(Phone/phone0,15)
;exten => 1265,2,Goto(s,5)

;[mainmenu]
;exten => s,1,Answer
;exten => s,2,Background(thanks)		; "Thanks for calling press 1 for sales, 2 for support, ..."
;exten => 1,1,Goto(submenu,s,1)
;exten => 2,1,Hangup
include => default

;[submenu]
;exten => s,1,Ringing					; Make them comfortable with 2 seconds of ringback
;exten => s,2,Wait,2
;exten => s,3,Background(submenuopts)	; "Thanks for calling the sales department.  Press 1 for steve, 2 for..."
;exten => 1,1,Goto(default,steve,1)
;exten => 2,1,Goto(default,mark,2)

[default]
include => demo
;exten => _41X.,1,Dial(SIP/${EXTEN:2}@sipprovider,,r)
;exten => _42X.,1,Dial(SIP/user:passwd@${EXTEN:2}@otherprovider.net,30,rT)
;exten => 6245,1,Dial(SIP/Grandstream1,20,rt)	; permit transfer
;exten => 6245,1,Dial(SIP/Grandstream1&SIP/Xlite1,20,rtT)
;exten => 6361,1,Dial(IAX2/JaneDoe,,rm)		; ring without time limit
;exten => 6389,1,Dial(MGCP/aaln/[email protected])
;exten => 6394,1,Dial(Local/6275/n)		; this will dial ${MARK}
;exten => 6275,1,Macro(stdexten,6275,${MARK})	; assuming ${MARK} is something like Zap/2
;exten => mark,1,Goto(6275|1)			; alias mark to 6275
;exten => 6536,1,Macro(stdexten,6236,${WIL})	; Ditto for wil
;exten => wil,1,Goto(6236|1)
;exten => 8500,1,VoicemailMain
;exten => 8500,2,Hangup
;exten => 8600,1,Meetme(1234)
;exten = 8700,1,Dial(${MARK}cro-var]; 

; Advanced include
;
include => macro-var
include => user
;
; Advanced exten
;

[macro-var];
;exten => s,1,Playback(welcome)
exten => s,1,Dial(${EXTEN},30)
exten => s,2,Voicemail(u1${EXTEN})
exten => s,3,Hangup

[user]
exten => 111,1,Macro(var,SIP/user2,,tT)
exten => 112,1,Macro(var,SIP/user1,,tT) 
exten => 113,1,Macro(var,SIP/user3,,tT)
extem => 114,1,Macro(var,SIP/user4,,tT)

;exten => 111,1,Dial(SIP/user2,,tT)
;exten => 111,2,Congestion
;exten => 111,102,Busy
;exten => 111,103,Hangup

;exten => 112,1,Dial(SIP/ninah,,tT)
;exten => 112,2,Congestion
;exten => 112,102,Busy

;exten => 113,1,Dial(SIP/user3,,tT)
;exten => 113,2,Congestion
;exten => 113,102,Busy

;exten => 114,1,Dial(SIP/user4,,tT)
;exten => 114,2,Congestion
;exten => 114,102,Busy

----
edit rajo: bitte die code-funktion für lange configs benutzen :)
----
edit Winterwolf: Thx ;)

_________________________
Auf dem Asterisk Server erhalte ich folgende Meldung =

Code:
   -- Executing Macro("SIP/user4-acd6", "var|SIP/user2||tT") in new stack
    -- Executing Dial("SIP/user4-acd6", "s|30") in new stack
Oct 22 11:00:37 WARNING[1112767280]: app_dial.c:694 dial_exec: Dial argument takes format (technology1/[device:]number1&technology2/[device:]number2...|optional timeout)
  == Spawn extension (macro-var, s, 1) exited non-zero on 'SIP/user4-acd6' in macro 'var'
  == Spawn extension (default, 111, 1) exited non-zero on 'SIP/user-acd6
'
 
Wenn ich das Playback wieder anschalte dann wählt er nur kurz und das wars dann irgendwie... aber wenn ich die demo anwähle dann gehts auch so.

:(
 
mann.... ich sollte wirklich erstmal aufwachen ;)

[macro-var]
;exten => s,1,Playback(welcome)
exten => s,1,Dial(${ARG1},30)
exten => s,2,Voicemail(u1${ARG1})
exten => s,3,Hangup
 
Hmm ich wähle die Nummer 111 und er tut wieder nur so als würde er verbinden und legt dann irgendwie wieder auf. Ich weiss echt nicht wo der Fehler noch sein könnte. *verzweifel* :lamer: :bluescre:
 
Winterwolf schrieb:
Hmm ich wähle die Nummer 111 und er tut wieder nur so als würde er verbinden und legt dann irgendwie wieder auf. Ich weiss echt nicht wo der Fehler noch sein könnte.

naaa... keine Panik! Das kriegen wir schon hin :)

Poste mal die Ausgabe von Asterisk wenn du 111 anrufst.
 
Die Macht sei mit dir ;) *bg*

Also hier ist erstmal der Auszug aus Asterisk =

Code:
   -- Executing Macro("SIP/user4-1f92", "var|SIP/user1||tT") in new stack
    -- Executing Playback("SIP/user4-1f92", "welcome") in new stack
Oct 25 08:09:54 WARNING[1112767280]: file.c:475 ast_openstream: File welcome does not exist in any format
Oct 25 08:09:54 WARNING[1112767280]: file.c:779 ast_streamfile: Unable to open welcome (format ULAW): No such file or directory
Oct 25 08:09:54 WARNING[1112767280]: app_playback.c:83 playback_exec: ast_streamfile failed on SIP/user4-1f92 for welcome
    -- Executing Dial("SIP/user4-1f92", "s|30") in new stack
Oct 25 08:09:54 WARNING[1112767280]: app_dial.c:694 dial_exec: Dial argument takes format (technology1/[device:]number1&technology2/[device:]number2...|optional timeout)
  == Spawn extension (macro-var, s, 2) exited non-zero on 'SIP/user4-1f92' in macro 'var'
  == Spawn extension (default, 111, 1) exited non-zero on 'SIP/user4-1f92'

Das er Welcome nicht findet ist ok, weil die Datei gibts noch nicht ;) allerdings dürfte da auch kein Problem sein. *denke ich mal*

Weil wenn ich die Playback Regel raus nehme dann schreibt er mich immer noch das Problem ;)

Code:
   -- Executing Macro("SIP/user4-64ce", "var|SIP/user1||tT") in new stack
Oct 25 08:15:26 WARNING[1112767280]: app_macro.c:92 macro_exec: Context 'macro-var' for macro 'var' lacks 's' extension, priority 1

=D
 
[user]
exten => 111,1,Macro(var,SIP/user2) statt exten => 111,1,Macro(var,SIP/user2,,tT)

abgesehen davon: user2 existiert auch in der sip.conf?

Beim rausnehmen der Playback-Regel solltest Du auch die Priorität von exten => s,2,Dial .... von 2 auf 1 ändern damit Asterisk weiss, dass dies zuerst ausgeführt weden soll, also exten => s,1,Dial...

HTH
rajo

---
edit:
nochn Fehler (thx to betateilchen)

ersetze
exten => s,3,Voicemail(u1${ARG1})
exten => s,3,Voicemail(u${ARG1})

(die 1 hinter dem u ist völliger quatsch... hab ich beim kopieren übersehen ;) )
 
Hmm scheint immernoch nicht zu funktionieren...

Ich Poste mal am besten meine sip.conf und extension.conf komplett,
damit wir diese Fehler ausschliessen können.

extensions.conf
Code:
;
; Static extension configuration file, used by
; the pbx_config module. This is where you configure all your 
; inbound and outbound calls in Asterisk. 
; 

;
; The "General" category is for certain variables.  
;
[general]
;
; If static is set to no, or omitted, then the pbx_config will rewrite
; this file when extensions are modified.  Remember that all comments
; made in the file will be lost when that happens. 
;
; XXX Not yet implemented XXX
;
static=yes
;
; if static=yes and writeprotect=no, you can save dialplan by
; CLI command 'save dialplan' too
;
writeprotect=no

; You can include other config files, use the #include command (without the ';')
; Note that this is different from the "include" command that includes contexts within 
; other contexts. The #include command works in all asterisk configuration files.
;#include "filename.conf"

; The "Globals" category contains global variables that can be referenced
; in the dialplan with ${VARIABLE} or ${ENV(VARIABLE)} for Environmental variable
; ${${VARIABLE}} or ${text${VARIABLE}} or any hybrid
;
[globals]
CONSOLE=Console/dsp				; Console interface for demo
;CONSOLE=Zap/1
;CONSOLE=Phone/phone0
IAXINFO=guest					; IAXtel username/password
;IAXINFO=myuser:mypass
TRUNK=Zap/g2					; Trunk interface
TRUNKMSD=1					; MSD digits to strip (usually 1 or 0)
;TRUNK=IAX2/user:pass@provider

;
; Any category other than "General" and "Globals" represent 
; extension contexts, which are collections of extensions.  
;
; Extension names may be numbers, letters, or combinations
; thereof. If an extension name is prefixed by a '_'
; character, it is interpreted as a pattern rather than a
; literal.  In patterns, some characters have special meanings:
;
;   X - any digit from 0-9
;   Z - any digit from 1-9
;   N - any digit from 2-9
;   [1235-9] - any digit in the brackets (in this example, 1,2,3,5,6,7,8,9)
;   . - wildcard, matches anything remaining (e.g. _9011. matches 
;	anything starting with 9011 excluding 9011 itself)
;
; For example the extension _NXXXXXX would match normal 7 digit dialings, 
; while _1NXXNXXXXXX would represent an area code plus phone number
; preceeded by a one.
;
; Each step of an extension is ordered by priority, which must
; always start with 1 to be considered a valid extension.
;
; Contexts contain several lines, one for each step of each
; extension, which can take one of two forms as listed below,
; with the first form being preferred.  One may include another
; context in the current one as well, optionally with a
; date and time.  Included contexts are included in the order
; they are listed.
;
;[context]
;exten => someexten,priority,application(arg1,arg2,...)
;exten => someexten,priority,application,arg1|arg2...
;
; Timing list for includes is 
;
;   <time range>|<days of week>|<days of month>|<months>
;
;include => daytime|9:00-17:00|mon-fri|*|*
;
; ignorepat can be used to instruct drivers to not cancel dialtone upon
; receipt of a particular pattern.  The most commonly used example is
; of course '9' like this:
;
;ignorepat => 9
;
; so that dialtone remains even after dialing a 9.
;

;
; Here are the entries you need to participate in the IAXTEL
; call routing system.  Most IAXTEL numbers begin with 1-700, but
; there are exceptions.  For more information, and to sign
; up, please go to [url]www.gnophone.com[/url] or [url]www.iaxtel.com[/url]
;
[iaxtel700]
exten => _91700XXXXXXX,1,Dial(IAX2/${IAXINFO}@iaxtel.com/${EXTEN:1}@iaxtel)

;
; The SWITCH statement permits a server to share the dialplain with
; another server. Use with care: Reciprocal switch statements are not
; allowed (e.g. both A -> B and B -> A), and the switched server needs
; to be on-line or else dialing can be severly delayed.
;
[iaxprovider]
;switch => IAX2/user:[key]@myserver/mycontext

[trunkint]
;
; International long distance through trunk
;
exten => _9011.,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _9011.,2,Congestion

[trunkld]
;
; Long distance context accessed through trunk
;
exten => _91NXXNXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91NXXNXXXXXX,2,Congestion

[trunklocal]
;
; Local seven-digit dialing accessed through trunk interface
;
exten => _9NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _9NXXXXXX,2,Congestion

[trunktollfree]
;
; Long distance context accessed through trunk interface
;
exten => _91800NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91800NXXXXXX,2,Congestion
exten => _91888NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91888NXXXXXX,2,Congestion
exten => _91877NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91877NXXXXXX,2,Congestion
exten => _91866NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91866NXXXXXX,2,Congestion

[international]
;
; Master context for international long distance
;
ignorepat => 9
include => longdistance
include => trunkint

[longdistance]
;
; Master context for long distance
;
ignorepat => 9
include => local
include => trunkld

[local]
;
; Master context for local, toll-free, and iaxtel calls only
;
ignorepat => 9
include => default
include => parkedcalls
include => trunklocal
include => iaxtel700
include => trunktollfree
include => iaxprovider
include => user
;
; You can use an alternative switch type as well, to resolve
; extensions that are not known here, for example with remote 
; IAX switching you transparently get access to the remote
; Asterisk PBX
; 
; switch => IAX2/user:password@bigserver/local

[macro-stdexten];
;
; Standard extension macro:
;   ${ARG1} - Extension  (we could have used ${MACRO_EXTEN} here as well
;   ${ARG2} - Device(s) to ring
;
exten => s,1,Dial(${ARG2},20)					; Ring the interface, 20 seconds maximum
exten => s,2,Goto(s-${DIALSTATUS},1)				; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)

exten => s-NOANSWER,1,Voicemail(u${ARG1})		; If unavailable, send to voicemail w/ unavail announce
exten => s-NOANSWER,2,Goto(default,s,1)			; If they press #, return to start

exten => s-BUSY,1,Voicemail(b${ARG1})			; If busy, send to voicemail w/ busy announce
exten => s-BUSY,2,Goto(default,s,1)				; If they press #, return to start

exten => s-.,1,Goto(s-NOANSWER,1)				; Treat anything else as no answer

exten => a,1,VoicemailMain(${ARG1})				; If they press *, send the user into VoicemailMain

[demo]
;
; We start with what to do when a call first comes in.
;
exten => s,1,Wait,1			; Wait a second, just for fun
exten => s,2,Answer			; Answer the line
exten => s,3,DigitTimeout,5		; Set Digit Timeout to 5 seconds
exten => s,4,ResponseTimeout,10		; Set Response Timeout to 10 seconds
exten => s,5,BackGround(demo-congrats)	; Play a congratulatory message
exten => s,6,BackGround(demo-instruct)	; Play some instructions

exten => 2,1,BackGround(demo-moreinfo)	; Give some more information.
exten => 2,2,Goto(s,6)

exten => 3,1,SetLanguage(fr)		; Set language to french
exten => 3,2,Goto(s,5)			; Start with the congratulations

exten => 1000,1,Goto(default,s,1)
;
; We also create an example user, 1234, who is on the console and has
; voicemail, etc.
;
exten => 1234,1,Playback(transfer,skip)		; "Please hold while..." 
					; (but skip if channel is not up)
exten => 1234,2,Macro(stdexten,1234,${CONSOLE})

exten => 1235,1,Voicemail(u1234)		; Right to voicemail

exten => 1236,1,Dial(Console/dsp)		; Ring forever
exten => 1236,2,Voicemail(u1234)		; Unless busy

;
; # for when they're done with the demo
;
exten => #,1,Playback(demo-thanks)		; "Thanks for trying the demo"
exten => #,2,Hangup			; Hang them up.

;
; A timeout and "invalid extension rule"
;
exten => t,1,Goto(#,1)			; If they take too long, give up
exten => i,1,Playback(invalid)		; "That's not valid, try again"

;
; Create an extension, 500, for dialing the
; Asterisk demo.
;
exten => 500,1,Playback(demo-abouttotry); Let them know what's going on
exten => 500,2,Dial(IAX2/[email protected]/s@default)	; Call the Asterisk demo
exten => 500,3,Playback(demo-nogo)	; Couldn't connect to the demo site
exten => 500,4,Goto(s,6)		; Return to the start over message.

;
; Create an extension, 600, for evaulating echo latency.
;
exten => 600,1,Playback(demo-echotest)	; Let them know what's going on
exten => 600,2,Echo			; Do the echo test
exten => 600,3,Playback(demo-echodone)	; Let them know it's over
exten => 600,4,Goto(s,6)		; Start over

;
; Give voicemail at extension 8500
;
exten => 8500,1,VoicemailMain
exten => 8500,2,Goto(s,6)
;
; Here's what a phone entry would look like (IXJ for example)
;
;exten => 1265,1,Dial(Phone/phone0,15)
;exten => 1265,2,Goto(s,5)

;[mainmenu]
;
; Example "main menu" context with submenu
;
;exten => s,1,Answer
;exten => s,2,Background(thanks)		; "Thanks for calling press 1 for sales, 2 for support, ..."
;exten => 1,1,Goto(submenu,s,1)
;exten => 2,1,Hangup
include => default
;
;[submenu]
;exten => s,1,Ringing					; Make them comfortable with 2 seconds of ringback
;exten => s,2,Wait,2
;exten => s,3,Background(submenuopts)	; "Thanks for calling the sales department.  Press 1 for steve, 2 for..."
;exten => 1,1,Goto(default,steve,1)
;exten => 2,1,Goto(default,mark,2)

[default]
;
; By default we include the demo.  In a production system, you 
; probably don't want to have the demo there.
;
include => demo
;
; Extensions like the two below can be used for FWD, Nikotel, sipgate etc.
; Note that you must have a [sipprovider] section in sip.conf whereas
; the otherprovider.net example does not require such a peer definition
;
;exten => _41X.,1,Dial(SIP/${EXTEN:2}@sipprovider,,r)
;exten => _42X.,1,Dial(SIP/user:passwd@${EXTEN:2}@otherprovider.net,30,rT)

; Real extensions would go here. Generally you want real extensions to be 4 or 5
; digits long (although there is no such requirement) and start with a single
; digit that is fairly large (like 6 or 7) so that you have plenty of room to
; overlap extensions and menu options without conflict.  You can alias them with
; names, too and use global variables

;exten => 6245,1,Dial(SIP/Grandstream1,20,rt)	; permit transfer
;exten => 6245,1,Dial(SIP/Grandstream1&SIP/Xlite1,20,rtT)
;exten => 6361,1,Dial(IAX2/JaneDoe,,rm)		; ring without time limit
;exten => 6389,1,Dial(MGCP/aaln/[email protected])
;exten => 6394,1,Dial(Local/6275/n)		; this will dial ${MARK}

;exten => 6275,1,Macro(stdexten,6275,${MARK})	; assuming ${MARK} is something like Zap/2
;exten => mark,1,Goto(6275|1)			; alias mark to 6275
;exten => 6536,1,Macro(stdexten,6236,${WIL})	; Ditto for wil
;exten => wil,1,Goto(6236|1)
;
; Some other handy things are an extension for checking voicemail via
; voicemailmain
;
;exten => 8500,1,VoicemailMain
;exten => 8500,2,Hangup
;
; Or a conference room (you'll need to edit meetme.conf to enable this room)
;
;exten => 8600,1,Meetme(1234)
;
; Or playing an announcement to the called party, as soon it answers
;
;exten = 8700,1,Dial(${MARK}cro-var]; 
;
; For more information on applications, just type "show applications" at your
; friendly Asterisk CLI prompt.
;
; 'show application <command>' will show details of how you
; use that particular application in this file, the dial plan. 

;
; Advanced include
;
include => macro-var
include => user
;
; Advanced exten
;
[macro-var];
exten => s,1,Playback(welcome)
exten => s,2,Dial(${EXTEN},30)
exten => s,3,Voicemail(u1${EXTEN})
exten => s,4,Hangup

; dann kommt die eigentliche extensions.conf

[user]
exten => 111,1,Macro(var,SIP/ninah,,tT)
exten => 112,1,Macro(var,SIP/danielr,,tT) 
exten => 113,1,Macro(var,SIP/chris,,tT)
exten => 114,1,Macro(var,SIP/ben,,tT)

sip.conf
Code:
;
; SIP Configuration for Asterisk
;
; Syntax for specifying a SIP device in extensions.conf is
; SIP/devicename where devicename is defined in a section below.
;
; You may also use 
; SIP/username@domain to call any SIP user on the Internet
; (Don't forget to enable DNS SRV records if you want to use this)
; 
; If you define a SIP proxy as a peer below, you may call
; SIP/proxyhostname/user or SIP/user@proxyhostname 
; where the proxyhostname is defined in a section below 
; 
; Useful CLI commands to check peers/users:
;   sip show peers		Show all SIP peers (including friends)
;   sip show users		Show all SIP users (including friends)
;   sip show registry		Show status of hosts we register with
;
;   sip debug			Show all SIP messages
;

[general]
context=default			; Default context for incoming calls
;recordhistory=yes		; Record SIP history by default 
				; (see sip history / sip no history)
;realm=mydomain.tld		; Realm for digest authentication
				; defaults to "asterisk"
				; Realms MUST be globally unique according to RFC 3261
				; Set this to your host name or domain name
port=5060			; UDP Port to bind to (SIP standard port is 5060)
bindaddr=192.168.245.29		; IP address to bind to (0.0.0.0 binds to all)
srvlookup=yes			; Enable DNS SRV lookups on outbound calls
				; Note: Asterisk only uses the first host 
				; in SRV records
				; Disabling DNS SRV lookups disables the 
				; ability to place SIP calls based on domain 
				; names to some other SIP users on the Internet
				
;pedantic=yes			; Enable slow, pedantic checking for Pingtel
				; and multiline formatted headers for strict
				; SIP compatibility (defaults to "no")
tos=184                        ; Set IP QoS to either a keyword or numeric val
tos=lowdelay                   ; lowdelay,throughput,reliability,mincost,none
maxexpirey=3600		; Max length of incoming registration we allow
defaultexpirey=120		; Default length of incoming/outoing registration
;notifymimetype=text/plain	; Allow overriding of mime type in MWI NOTIFY
;videosupport=yes		; Turn on support for SIP video

;disallow=all			; First disallow all codecs
;allow=ulaw			; Allow codecs in order of preference
;allow=ilbc			; Note: codec order is respected only in [general]
allow=ilbc
;musicclass=default		; Sets the default music on hold class for all SIP calls
				; This may also be set for individual users/peers
;language=en			; Default language setting for all users/peers
language=de
				; This may also be set for individual users/peers
;relaxdtmf=yes			; Relax dtmf handling
;rtptimeout=60			; Terminate call if 60 seconds of no RTP activity
				; when we're not on hold
;rtpholdtimeout=300		; Terminate call if 300 seconds of no RTP activity
				; when we're on hold (must be > rtptimeout)
;trustrpid = no			; If Remote-Party-ID should be trusted
;progressinband=no		; If we should generate in-band ringing always
;useragent=Asterisk PBX		; Allows you to change the user agent string
;nat=no				; NAT settings 
                                ; yes = Always ignore info and assume NAT
                                ; no = Use NAT mode only according to RFC3581 
                                ; never = Never attempt NAT mode or RFC3581 support
;promiscredir = no      ; If yes, allows 302 or REDIR to non-local SIP address
; Asterisk can register as a SIP user agent to a SIP proxy (provider)
; Format for the register statement is:
;       register => user[:secret[:authuser]]@host[:port][/extension]
;
; If no extension is given, the 's' extension is used. The extension
; needs to be defined in extensions.conf to be able to accept calls
; from this SIP proxy (provider)
;
; host is either a host name defined in DNS or the name of a 
; section defined below.
;
; Examples:
;
;register => 1234:[email protected]	
;
;     This will pass incoming calls to the 's' extension
;
;
;register => 2345:password@sip_proxy/1234
;
;    Register 2345 at sip provider 'sip_proxy'.  Calls from this provider connect to local 
;    extension 1234 in extensions.conf default context, unless you define 
;    unless you configure a [sip_proxy] section below, and configure a context.
;	 Tip 1: Avoid assigning hostname to a sip.conf section like [provider.com]
;        Tip 2: Use separate type=peer and type=user sections for SIP providers
;                      (instead of type=friend) if you have calls in both directions
  

externip = 192.168.245.29	; Address that we're going to put in outbound SIP messages
				; if we're behind a NAT

				; The externip and localnet is used
				; when registering and communicating with other proxies
				; that we're registered with
				; You may add multiple local networks.  A reasonable set of defaults
				; are:
localnet=192.168.245.0/255.255.0.0; All RFC 1918 addresses are local networks
;localnet=10.0.0.0/255.0.0.0	; Also RFC1918
;localnet=172.16.0.0/12		; Another RFC1918 with CIDR notation
;localnet=169.254.0.0/255.255.0.0 ;Zero conf local network

;-----------------------------------------------------------------------------------
; Users and peers have different settings available. Friends have all settings,
; since a friend is both a peer and a user
;
; User config options:        Peer configuration:
; --------------------        -------------------
; context                     context
; permit                      permit
; deny                        deny
; auth                        auth
; secret                      secret
; md5secret                   md5secret
; dtmfmode                    dtmfmode
; canreinvite                 canreinvite
; nat                         nat
; callgroup                   callgroup
; pickupgroup                 pickupgroup
; language                    language
; allow                       allow
; disallow                    disallow
; insecure                    insecure
; trustrpid                   trustrpid
; progressinband              progressinband
; promiscredir                promiscredir
; callerid
; accountcode
; amaflags
; incominglimit
; restrictcid
;                             mailbox
;                             username
;                             template
;                             fromdomain
;                             fromuser
;                             host
;                             mask
;                             port
;                             qualify
;                             defaultip
;                             rtptimeout
;                             rtpholdtimeout
;[sip_proxy]
; For incoming calls only. Example: FWD (Free World Dialup)
;type=user
;context=from-fwd

;[sip_proxy-out]
;type=peer          		; we only want to call out, not be called
;secret=guessit
;username=yourusername		; Authentication user for outbound proxies
;fromuser=yourusername		; Many SIP providers require this!
;host=box.provider.com

;[grandstream1]
;type=friend 			; either "friend" (peer+user), "peer" or "user"
;context=from-sip
;fromuser=grandstream1		; overrides the callerid, e.g. required by FWD
;callerid=John Doe <1234>
;host=192.168.0.23		; we have a static but private IP address
;nat=no				; there is not NAT between phone and Asterisk
;canreinvite=yes		; allow RTP voice traffic to bypass Asterisk
dtmfmode=info			; either RFC2833 or INFO for the BudgeTone
;incominglimit=1		; permit only 1 outgoing call at a time
				; from the phone to asterisk
;mailbox=1234@default  ; mailbox 1234 in voicemail context "default"
;disallow=all			; need to disallow=all before we can use allow=
;allow=ulaw			; Note: In user sections the order of codecs
				; listed with allow= does NOT matter!
;allow=alaw
;allow=g723.1			; Asterisk only supports g723.1 pass-thru!
;allow=g729			; Pass-thru only unless g729 license obtained


;[xlite1]
;Turn off silence suppression in X-Lite ("Transmit Silence"=YES)!
;Note that Xlite sends NAT keep-alive packets, so qualify=yes is not needed
;type=friend
;username=xlite1
;callerid="Jane Smith" <5678>
;host=dynamic
;nat=yes                       ; X-Lite is behind a NAT router
;canreinvite=no                ; Typically set to NO if behind NAT
;disallow=all
;allow=gsm                     ; GSM consumes far less bandwidth than ulaw
;allow=ulaw
;allow=alaw


;[snom]
;type=friend			; Friends place calls and receive calls
;context=from-sip		; Context for incoming calls from this user
;secret=blah
;language=de			; Use German prompts for this user 
;host=dynamic			; This peer register with us
;dtmfmode=inband		; Choices are inband, rfc2833, or info
;defaultip=192.168.0.59		; IP used until peer registers
;username=snom			; Username to use in INVITE until peer registers
;mailbox=1234,2345		; Mailboxes for message waiting indicator
;restrictcid=yes		; To have the callerid restriced -> sent as ANI
;disallow=all
;allow=ulaw                     ; dtmfmode=inband only works with ulaw or alaw!
;mailbox=1234@context,2345      ; Mailbox(-es) for message waiting indicator


;[pingtel]
;type=friend
;username=pingtel
;secret=blah
;host=dynamic
;insecure=yes			; To match a peer based by IP address only and not peer
;insecure=very			; To allow registered hosts to call without re-authenticating
;qualify=1000			; Consider it down if it's 1 second to reply
				; Helps with NAT session
				; qualify=yes uses default value
;callgroup=1,3-4		; We are in caller groups 1,3,4
;pickupgroup=1,3-5		; We can do call pick-p for call group 1,3,4,5
;defaultip=192.168.0.60		; IP address to use if peer has not registred

;[cisco1]
;type=friend
;username=cisco1
;secret=blah
;qualify=200			; Qualify peer is no more than 200ms away
;nat=yes			; This phone may be natted
				; Send SIP and RTP to  IP address that packet is 
				; received from instead of trusting SIP headers 
;host=dynamic			; This device registers with us
;canreinvite=no			; Asterisk by default tries to redirect the
				; RTP media stream (audio) to go directly from
				; the caller to the callee.  Some devices do not
				; support this (especially if one of them is 
				; behind a NAT).
;defaultip=192.168.0.4

;[cisco2]
;type=friend
;username=cisco2
;fromuser=markster		; Specify user to put in "from" instead of callerid
;fromdomain=yourdomain.com	; Specify domain to put in "from" instead of callerid
				; fromuser and fromdomain are used when Asterisk
				; places calls to this account.  It is not used for
				; calls from this account.
;secret=blah
;host=dynamic
;defaultip=192.168.0.4
;amaflags=default		; Choices are default, omit, billing, documentation
;accountcode=markster		; Users may be associated with an accountcode to ease billing

[ninah]
type=friend
host=dynamic
;defaultip=192.168.245.162
callerid="ninah" <111>
secret=test1
context=default
dtmfmode=rfc2833
fromuser=ninah
username=ninah
canreinvite=yes
transfer=yes
quality=200
codec1=PCMU
codec2=PCMA
codec3=G727
codec4=G720

[danielr]
type=friend
host=dynamic
;defaultip=192.168.245.168
callerid="danielr" <112>
secret=test2
context=default
dtmfmode=rfc2833
fromuser=danielr
username=danielr
canreinvite=yes
transfer=yes
quality=200
codec1=PCMU
codec2=PCMA
codec3=G727
codec4=G720


[chris]
type=friend
host=dynamic
;defaultip=192.168.245.168
callerid="chris" <113>
secret=test3
context=default
dtmfmode=rfc2833
fromuser=chris
username=chris
canreinvite=yes
quality=200
codec1=PCMU
codec2=PCMA
codec3=G727
codec4=G720

[ben]
type=friend
host=dynamic
;defaultip=192.168.245.168
callerid="ben" <114>
secret=test4
context=default
dtmfmode=rfc2833
fromuser=ben
username=ben
canreinvite=yes
transfer=yes
ransfer=yes
quality=200
codec1=PCMU
codec2=PCMA
codec3=G727
codec4=G720

Folgende Fehlermeldungen erhalte ich

Code:
*CLI>     -- Executing Macro("SIP/ben-fc7e", "var|SIP/ninah") in new stack
    -- Executing Playback("SIP/ben-fc7e", "welcome") in new stack
Oct 25 09:30:55 WARNING[1112767280]: file.c:475 ast_openstream: File welcome does not exist in any format
Oct 25 09:30:55 WARNING[1112767280]: file.c:779 ast_streamfile: Unable to open welcome (format ULAW): No such file or directory
Oct 25 09:30:55 WARNING[1112767280]: app_playback.c:83 playback_exec: ast_streamfile failed on SIP/ben-fc7e for welcome
    -- Executing Dial("SIP/ben-fc7e", "s|30") in new stack
Oct 25 09:30:55 WARNING[1112767280]: app_dial.c:694 dial_exec: Dial argument takes format (technology1/[device:]number1&technology2/[device:]number2...|optional timeout)
  == Spawn extension (macro-var, s, 2) exited non-zero on 'SIP/ben-fc7e' in macro 'var'
  == Spawn extension (default, 111, 1) exited non-zero on 'SIP/ben-fc7e'
    -- Executing Macro("SIP/ninah-d93f", "var|SIP/danielr") in new stack
    -- Executing Playback("SIP/ninah-d93f", "welcome") in new stack
Oct 25 09:31:10 WARNING[1112767280]: file.c:475 ast_openstream: File welcome does not exist in any format
Oct 25 09:31:10 WARNING[1112767280]: file.c:779 ast_streamfile: Unable to open welcome (format ILBC): No such file or directory
Oct 25 09:31:10 WARNING[1112767280]: app_playback.c:83 playback_exec: ast_streamfile failed on SIP/ninah-d93f for welcome
    -- Executing Dial("SIP/ninah-d93f", "s|30") in new stack
Oct 25 09:31:10 WARNING[1112767280]: app_dial.c:694 dial_exec: Dial argument takes format (technology1/[device:]number1&technology2/[device:]number2...|optional timeout)
  == Spawn extension (macro-var, s, 2) exited non-zero on 'SIP/ninah-d93f' in macro 'var'
  == Spawn extension (default, 112, 1) exited non-zero on 'SIP/ninah-d93f'
    -- Executing Macro("SIP/ninah-62a8", "var|SIP/chris") in new stack
    -- Executing Playback("SIP/ninah-62a8", "welcome") in new stack
Oct 25 09:31:25 WARNING[1112767280]: file.c:475 ast_openstream: File welcome does not exist in any format
Oct 25 09:31:25 WARNING[1112767280]: file.c:779 ast_streamfile: Unable to open welcome (format ILBC): No such file or directory
Oct 25 09:31:25 WARNING[1112767280]: app_playback.c:83 playback_exec: ast_streamfile failed on SIP/ninah-62a8 for welcome
    -- Executing Dial("SIP/ninah-62a8", "s|30") in new stack
Oct 25 09:31:25 WARNING[1112767280]: app_dial.c:694 dial_exec: Dial argument takes format (technology1/[device:]number1&technology2/[device:]number2...|optional timeout)
  == Spawn extension (macro-var, s, 2) exited non-zero on 'SIP/ninah-62a8' in macro 'var'
  == Spawn extension (default, 113, 1) exited non-zero on 'SIP/ninah-62a8'

Das ist wahrscheinlich wieder so ein kleiner total schwachsinniger Fehler denn ich gemacht habe... :(

Aber naja man ist ja lern Fähig :D
 
1.) Du solltest mal das Playback der Datei "Welcome" einfach auskommentieren, solange Du noch gar keine Datei hast, die so heißt und eine WIllkommensnachricht enthält.

2.)
Du mußt Asterisk natürlich auch sagen, WIE er wählen soll - SIP IAX CAPI oder was auch immer !

Also schreib mal in den Makro folgendes:

exten => s,1,Dial(SIP/${EXTEN},30)
exten => s,2,Voicemail(u${EXTEN}) ; ACHTUNG ! Die 1 mußt Du weglassen !
exten => s,3,HangUp

-----------
Mach mal diese beiden Änderungen und poste dann entsprechende Fehlermeldungen

Ich habe mir gerade mal Deine SIP.conf und EXTENSIONS.conf vorgenommen und mir die mal "sortiert" - da war es ja schon ziemlich schwierig, durchzublicken.

Keine Sorge - das ist schon alles lösbar :wink:
 
Also das Macro habe ich jetzt so eingefügt =

Code:
;
; Advanced exten
;
[macro-var];
;exten => s,1,Playback(welcome)
exten => s,1,Dial(SIP/${EXTEN},30)
;exten => s,2,Dial(${EXTEN},30)
exten => s,3,Voicemail(u1${EXTEN})
exten => s,4,Hangup

; dann kommt die eigentliche extensions.conf

[user]
exten => 111,1,Macro(var,SIP/ninah)
exten => 112,1,Macro(var,SIP/danielr)
exten => 113,1,Macro(var,SIP/chris)
exten => 114,1,Macro(var,SIP/ben)

Und es kommt folgende Fehlermeldung =

Code:
*CLI> sip show registry
Host                            Username       Refresh State
*CLI>     -- Executing Macro("SIP/ben-883b", "var|SIP/ninah") in new stack
    -- Executing Dial("SIP/ben-883b", "SIP/s|30") in new stack
Oct 25 09:55:53 WARNING[1112767280]: chan_sip.c:1375 create_addr: No such host: s
Oct 25 09:55:53 NOTICE[1112767280]: app_dial.c:742 dial_exec: Unable to create channel of type 'SIP'
  == Everyone is busy/congested at this time
    -- Saved useragent "SJLabs-SJphone/1.30.248" for peer ben
 
Gut - Die Fehlermeldungen haben also rapide abgenommen.

Als nächstes nehmen wir uns Deine conf-Dateien vor - da ist auch noch manches im Argen.

1.) Wir ändern mal in der SIP.Conf die Namen auf die entsprechenden Rufnummern. Deine Tippfehler habe ich in Deiner SIP.conf auch schonmal soweit wie möglich entfernt.

Code:
; SIP.conf

[general]
context=default
port=5060
bindaddr=192.168.245.29
srvlookup=yes
tos=184
tos=lowdelay
maxexpirey=3600
defaultexpirey=120
disallow=all
allow=ulaw
allow=ilbc
language=de

externip = 192.168.245.29   ; Address that we're going to put in outbound SIP messages
localnet=192.168.245.0/255.255.0.0; All RFC 1918 addresses are local networks


[111]
type=friend
host=dynamic
;defaultip=192.168.245.162
callerid="ninah" <111>
secret=test1
context=default
dtmfmode=rfc2833
fromuser=ninah
username=ninah
canreinvite=yes
transfer=yes

[112]
type=friend
host=dynamic
;defaultip=192.168.245.168
callerid="danielr" <112>
secret=test2
context=default
dtmfmode=rfc2833
fromuser=danielr
username=danielr
canreinvite=yes
transfer=yes

[113]
type=friend
host=dynamic
;defaultip=192.168.245.168
callerid="chris" <113>
secret=test3
context=default
dtmfmode=rfc2833
fromuser=chris
username=chris
canreinvite=yes

[114]
type=friend
host=dynamic
;defaultip=192.168.245.168
callerid="ben" <114>
secret=test4
context=default
dtmfmode=rfc2833
fromuser=ben
username=ben
canreinvite=yes
transfer=yes


Dann habe ich mal versucht, Deine extensions.conf ein bißchen übersichtlicher zu machen.

Code:
[general]
static=yes
writeprotect=no

[globals]
CONSOLE=Console/dsp            ; Console interface for demo

[local]

[default]
include => macro-var
include => user

[macro-var];
exten => s,1,NoOp(Playback(welcome))
exten => s,2,Dial(${ARG1},30)
exten => s,3,Voicemail(u${ARG1})
exten => s,4,Hangup

[user]
exten => _.,1,Macro(var,${EXTEN})
 
Also wenn ich diese beiden Config's benutzte meldet mir mein SJphone = SIP = not registered
 
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.