Подготовил шаблон для звонка из FreeSWITCH на его зарегистрированного пользователя.
Подобная задача часто может возникнуть, если FXO шлюз (в моем случае linksys spa3102) регистрируется на FreeSWITCH, а вам необходимо через него набрать номер. Конфигурация самого FXO шлюза тривиальна и статей в сети на эту тему много. Для меня нетривиальным был подход в реализации вызова, решил унифицировать найденные решения в сети.
Вам потребуется установить переменные:
dialed_domain - домен, в котором зарегистрирован пользователь от spa3102
regedext - имя пользователя, под которым зарегистрирован пользователь от spa3102
numtodial - номер, который будет набираться в канал
Строка
<action application="log" data="info +++++++++++++ {absolute_codec_string='PCMA,PCMU'}${regex(${sofia_contact(${regedext}@${dialed_domain})}|(^\w+/\w+)/|%1)}/sip:${numtodial}@${regex(${sofia_contact(${regedext}@${dialed_domain})}|(\d+.\d+.\d+.\d+:\d+.*)|%1)} +++++++++++"/> удобна для самоконтроля и отладки, в целом она не должна понадобиться.
Теоритически в строке
<action application="bridge" data="{absolute_codec_string='PCMA,PCMU'}${regex(${sofia_contact(${regedext}@${dialed_domain})}|(^\w+/\w+)/|%1)}/sip:${numtodial}@${regex(${sofia_contact(${regedext}@${dialed_domain})}|(\d+.\d+.\d+.\d+:\d+.*)|%1)}"/> ничего менять не нужно, но, возможно, кому-то нужно будет что-то добавить или поменять кодеки, например.
Код:
<extension name="public_ext_thru_spa3102">
<condition field="destination_number" expression="^8(\d{10})$">
<action application="log" data="INFO ====TO(spa3102)==== $1"/>
<action application="set" data="dialed_domain=somedomain.ru"/>
<action application="set" data="regedext=usernameofspa3102"/>
<action application="set" data="numtodial=8$1"/>
<action application="log" data="info +++++++++++++ {absolute_codec_string='PCMA,PCMU'}${regex(${sofia_contact(${regedext}@${dialed_domain})}|(^\w+/\w+)/|%1)}/sip:${numtodial}@${regex(${sofia_contact(${regedext}@${dialed_domain})}|(\d+.\d+.\d+.\d+:\d+.*)|%1)} +++++++++++"/>
<action application="bridge" data="{absolute_codec_string='PCMA,PCMU'}${regex(${sofia_contact(${regedext}@${dialed_domain})}|(^\w+/\w+)/|%1)}/sip:${numtodial}@${regex(${sofia_contact(${regedext}@${dialed_domain})}|(\d+.\d+.\d+.\d+:\d+.*)|%1)}"/>
</condition>
</extension>
Замечания, добавления, комментарии приветствуются
