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