There isn&#39;t a &quot;gotoif&quot; construct in the FS dialplan. Any time you need a fair amount of logic in your dialplan then you should consider using a dialplan script. You can write them in Lua, Perl, or Javascript. Personally, the FS devs prefer Lua for dialplan scripting because it is pretty easy. I recommend getting our book and looking at chapter 7. It&#39;s a gentle introduction to writing simple dialplan scripts in Lua. <div>
<br></div><div>Remember this rule about the FreeSWITCH XML dialplan: it can do a lot but it isn&#39;t a scripting language - it&#39;s a routing &quot;language&quot;. Tony designed it that way. You *can* do some logic-type constructs but I wouldn&#39;t go there when you&#39;re still just learning everything. </div>
<div><br></div><div>The first thing you should do in translating your Asterisk dialplan to FreeSWITCH is to write out the call flow outline. From there you can define what aspects can be done in the XML dialplan and what can be done in your Lua script. </div>
<div><br></div><div>The other thing I&#39;d recommend doing is joining the #freeswitch channel on <a href="http://irc.freenode.net">irc.freenode.net</a>. You can talk to people in realtime and they can help answer specific questions.</div>
<div><br></div><div>-MC<br><br><div class="gmail_quote">On Mon, Feb 7, 2011 at 3:32 AM, Thomas Hoellriegel <span dir="ltr">&lt;<a href="mailto:admin@blindi.net">admin@blindi.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi all, i like to replace my asterisk to fs. FS is very nice.<br>
I hanging:<br>
my problem is: i don.t find a Gotoif command from fs to replace, my asterisk dialplan.<br>
<br>
my simply dialplan in asterisk is:<br>
<br>
;;Callforwarding to a phonenumber from dialplan<br>
;;from: thomas Hoellriegel <a href="mailto:blindi@gmx.net" target="_blank">blindi@gmx.net</a><br>
<br>
;;maimenu for callforwarding<br>
;;anfang is in english: beginn<br>
[callforwarding-only]<br>
exten =&gt; s,1,Answer()<br>
exten =&gt; s,n,Set(TIMEOUT(response)=10)<br>
exten =&gt; s,n,Background(callforwarding-anfang1&amp;callforwarding-anfang2&amp;callforwarding-anfang3&amp;callforwarding-anfang4&amp;callforwarding-anfang5&amp;callforwarding-anfang6&amp;callforwarding-anfang7&amp;callforwarding-anfang8&amp;mit-stern-exit)<br>

exten =&gt; s,n,WaitExten<br>
exten =&gt; *,1,Goto(adminmenu,s,1)<br>
<br>
;;drop all user errors<br>
exten =&gt; i,1,Goto(s,1)<br>
<br>
;;menuselection<br>
exten =&gt; 1,1,Goto(callforwarding-db,s,1)<br>
<br>
<br>
exten =&gt; t,1,Playback(vm-goodbye)<br>
exten =&gt; t,n,Hangup()<br>
<br>
[callforwarding-db]<br>
exten =&gt; s,1,Answer()<br>
exten =&gt; s,n,Set(TIMEOUT(response)=10)<br>
<br>
;;status: ;;aus: (off)  goto: no number in database<br>
;;fwan: (on)  goto: then number is found<br>
exten =&gt; s,n,GotoIf($[&quot;${DB(CFtommystatus/0)}&quot; != &quot;&quot;]?fwan:fwaus)<br>
exten =&gt; s,n(fwan),Playback(all-callfw-is-on)<br>
exten =&gt; s,n,Goto(s,30)<br>
<br>
exten =&gt; s,n(fwaus),Playback(all-fw-ist-off)<br>
exten =&gt; s,n,Goto(s,30)<br>
<br>
exten =&gt; s,30,Background(callforwarding-main)<br>
exten =&gt; s,n,WaitExten<br>
exten =&gt; *,1,Goto(callforwarding-only,s,1)<br>
<br>
exten =&gt; i,1,Goto(s,1)<br>
<br>
;;nummer is: shortnumber for callforwarding<br>
exten =&gt; 1,1,Goto(nummer1,nr1,1)<br>
;;toggle<br>
;;ein aus in english: on off<br>
exten =&gt; 0,1,GotoIf($[&quot;${DB(CFtommystatus/0)}&quot; != &quot;&quot;]?ein:aus)<br>
exten =&gt; 0,n(ein),DBdeltree(CFtommystatus/0)<br>
exten =&gt; 0,n,Playback(all-fw-ist-off)<br>
exten =&gt; 0,n,Goto(callforwarding-only,s,1)<br>
<br>
exten =&gt; 0,n(aus),Set(DB(CFtommystatus/0)=p)<br>
exten =&gt; 0,n,Playback(alle-callfw-is-on)<br>
exten =&gt; 0,n,Goto(callforwarding-only,s,1)<br>
<br>
;;number 1<br>
;;kurzwahl is: shortnumber [nummer1]<br>
exten =&gt; nr1,1,Playback(kurzwahl)<br>
exten =&gt; nr1,n,SayDigits(1)<br>
exten =&gt; nr1,n,Background(callforwarding-opt)<br>
exten =&gt; nr1,n,WaitExten<br>
<br>
;;ja: say the existing number<br>
;;falsch:<br>
;;say no number in database found<br>
<br>
exten =&gt; 1,1,GotoIf($[&quot;${DB(CFtommy1/0)}&quot; != &quot;&quot;]?ja1:falsch1)<br>
exten =&gt; 1,n(ja1),SayDigits(${DB(CFtommy1/0)})<br>
exten =&gt; 1,n,Wait(0.2)<br>
exten =&gt; 1,n,Goto(nr1,1)<br>
exten =&gt; 1,n(falsch1),Playback(callforwarding-keine)<br>
exten =&gt; 1,n,Wait(0.2)<br>
exten =&gt; 1,n,Goto(nr1,1)<br>
<br>
;;2 to add a number<br>
exten =&gt; 2,1,Goto(nummer1-menu1,s,1)<br>
<br>
;;aus: deactivate callforwarding<br>
exten =&gt; 3,1,Goto(nummer1aus,s,1)<br>
exten =&gt; 4,1,SayDigits(${CALLERID(num):})<br>
exten =&gt; 4,n,Set(DB(CFtommy1/0)=${CALLERID(num):})<br>
exten =&gt; 4,n,Playback(callforwarding-on)<br>
exten =&gt; 4,n,Goto(callforwarding-only,s,1)<br>
<br>
exten =&gt; *,1,Goto(callforwarding-only,s,1)<br>
<br>
exten =&gt; i,1,Goto(nr1,1)<br>
<br>
;;aus:  deactivate<br>
[nummer1aus]<br>
exten =&gt; s,1,DBdeltree(CFtommy1/0)<br>
exten =&gt; s,n,Background(callforwarding-off)<br>
exten =&gt; s,n,Goto(callforwarding-only,s,1)<br>
<br>
;;menu for dtmf digits<br>
[nummer1-menu1]<br>
exten =&gt; s,1,Set(NR=)<br>
exten =&gt; s,n,Background(bitte-callforwarding-nummer)<br>
exten =&gt; s,n,Set(TIMEOUT(response)=10)<br>
exten =&gt; s,n,WaitExten<br>
exten =&gt; _X,1,Set(NR=${NR}${EXTEN})<br>
exten =&gt; _X,n,Goto(s,3)<br>
exten =&gt; *,1,Goto(s,1)<br>
<br>
exten =&gt; #,1,Playback(callforwardings-number-is)<br>
exten =&gt; #,n,SayDigits(${NR})<br>
<br>
;;check the number<br>
exten =&gt; #,n,Goto(nummer1-chk,${NR},1)<br>
<br>
exten =&gt; t,1,Playback(vm-goodbye)<br>
exten =&gt; t,n,Hangup()<br>
<br>
;;check the number for no allowed numbers [nummer1-chk]<br>
exten =&gt; i,1,NoOp(Undefined  Nummer ${INVALID_EXTEN}.)<br>
exten =&gt; i,n,Answer()<br>
exten =&gt; i,n,Playback(tt-somethingwrong)<br>
exten =&gt; i,n,Playback(tt-monkeysintro)<br>
exten =&gt; i,n,Hangup()<br>
<br>
;;forbidden numbers:<br>
;;neu is:  new<br>
exten =&gt; _911.,1,Playback(nummer-falsch)<br>
exten =&gt; _911.,n,Goto(callback-only-neu,s,1)<br>
<br>
exten =&gt; _#,1,Playback(notallow)<br>
exten =&gt; _#,n,Goto(nummer1-menu1,s,1)<br>
exten =&gt; _X,1,Playback(notallow)<br>
exten =&gt; _X,n,Goto(nummer1-menu1,s,1)<br>
exten =&gt; _X.,1,Goto(nummer1-confirm,s,1)<br>
<br>
;;confirmmenu<br>
[nummer1-confirm]<br>
exten =&gt; s,1,Background(ist-correct)<br>
exten =&gt; s,n,Set(TIMEOUT(response)=10)<br>
exten =&gt; s,n,WaitExten<br>
exten =&gt; 1,1,Set(DB(CFtommy1/0)=${NR})<br>
exten =&gt; 1,n,Playback(callforwarding-on)<br>
exten =&gt; 1,n,Goto(callforwarding-only,s,1)<br>
<br>
exten =&gt; 2,1,Goto(nummer1-menu1,s,1)<br>
<br>
exten =&gt; #,1,Playback(errormenu)              ; &quot;Thanks for trying the demo&quot;<br>
exten =&gt; #,n,Goto(nummer1-menu1,#,1)<br>
exten =&gt; t,1,Goto(nummer1-menu1,#,1)<br>
exten =&gt; i,1,Playback(conf-errormenu)          ; &quot;That&#39;s not valid, try again&quot;<br>
exten =&gt; i,n,Goto(nummer1-menu1,#,1)<br>
;;fw_outcontext<br>
[fw_out]<br>
include=trunk<br>
include=international<br>
<br>
[default]<br>
;;forwarding extension in defaultcontext<br>
<br>
;;read the db entry<br>
exten =&gt; answert1,1,GotoIf($[&quot;${DB(CFtommy1/0)}&quot; != &quot;&quot;]?yesfw1:nofw1)<br>
exten =&gt; answert1,n(yesfw1),Dial(Local/${DB(CFtommy1/0)}@fw_out,,)<br>
exten =&gt; answert1,n(nofw1),NoOp()<br>
<br>
can you help me please? thankx.<br>
<br>
<br>
<br>
---------------<br>
Du kannst mich jederzeit kostenlos per Festnetz erreichen unter:<br>
<a href="http://www.blindi.net/callback" target="_blank">http://www.blindi.net/callback</a><br>
homepage: <a href="http://www.blindi.net" target="_blank">http://www.blindi.net</a><br>
blinde-misc mailingliste für blinde. anmeldung unter:<br>
<a href="http://www.blindi.net/mailman/listinfo/blinde-misc" target="_blank">http://www.blindi.net/mailman/listinfo/blinde-misc</a><br>
<br>_______________________________________________<br>
FreeSWITCH-users mailing list<br>
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
<br></blockquote></div><br></div>