FreeSWITCH dialplan snippets
[video]
El módulo de dialplan nos permite configurar diferentes reglas para el tratamiento de las llamadas entrantes y salientes. A continuación se muestran algunos de los casos mas comunes que pueden servir como referencia y punto de partida para casos mas complejos en el manejo de traslaciones / plan de marcación.
Expresión regular para número marcado
<extension name="by-dialed">
<condition field="destination_number" expression="^(+52)(\d+)$">
<action application="bridge" data="{}sofia/external/1000@2.2.2.2"/>
</condition>
</extension>
Horario de marcación
<extension name="by-hour" continue="true">
<condition wday="1-7" minute-of-day="560-1261" break="never">
<action application="set" data="status=open" inline="true"/>
<anti-action application="set" data="status=closed" inline="true"/>
</condition>
</extension>
<extension name="inbound">
<condition field="destination_number" expression="^(2020)$">
<action application="execute_extension" data="2020_${status}"/>
</condition>
</extension>
<extension name="open-office">
<condition field="destination_number" expression="^(2020)_open$">
<action application="answer"/>
<action application="playback" data="/audio/welcome.wav"/>
</condition>
</extension>
<extension name="closed-office">
<condition field="destination_number" expression="^(2020)_closed$">
<action application="hangup" data="GATEWAY_DOWN"/>
</condition>
</extension>
Validación de IP origen
<extension name="moh long calll duration">
<condition field="network_addr" expression="^2\.2\.2\.2$"/>
<condition field="destination_number" expression="^2021(\d+)$">
<action application="answer"/>
<action application="park"/>
</condition>
</extension>
Forzar número de origen
<action application="bridge" data="{sip_invite_from_uri=<sip:+525553259000@2.2.2.2>}sofia/external/$1@2.2.2.2"/>
Forzar la lista de codecs
<action application="bridge" data="{absolute_codec_string='PCMU,PCMA,G729'}sofia/external/$1@2.2.2.2"/>
Grabación de llamadas
<extension name="Grabar llamada">
<condition field="destination_number" expression="^2022(\d+)$">
<action application="set" data="RECORD_TITLE=Titulo"/>
<action application="set" data="RECORD_SOFTWARE=FreeSWITCH"/>
<action application="set" data="RECORD_STEREO=true"/>
<action application="record_session" data="/recordings/${strftime(%Y-%m-%d-%H-%M-%S)}_${destination_number}_${caller_id_number}.wav"/>
</condition>
</extension>
Ejecución de scripts (otros lenguajes)
<extension name="script-execution">
<condition field="destination_number" expression="^(2023)(\d+)$">
<action application="set" data="variable=valor"/>
<action application="lua" data="/scripts/example.lua $1 $2 "/>
</condition>
</extension>
Conclusión
Estos son algunos ejemplos de lo que se puede lograr configurando el dialplan, para mas información se recomienda consultar la documentacion oficial de freeswitch.
Julio Carranza