Тонкая настройка плана нумерации
На таких телефонах как X-Lite при входящем звонке отображается SIP адрес того кто звонит. Аналогично адресу электронной почты он состоит из имени пользователя и доменной части разделенных символом @. Если номер звонящего пользователя совпадает с доменным именем вашего SIP адреса, то телефон выводит SIP адрес звонящего без доменной части.
Для меня было неожиданным увидеть что когда звонок обрабатывается FreeSwtich, то доменная часть моего SIP адреса заменяется IP адресом FreeSwitch. Для того чтобы данный момент поправить, необходимо в секцию конфигурационного файла приведенную ниже внести изменения:
<extension name="Local_Extension">
<condition field="destination_number" expression="^(10[01][0-9])$">
<action application="set" data="dialed_extension=$1"/>
<action application="export" data="dialed_extension=$1"/>
<!-- bind_meta_app can have these args <key> [a|b|ab] [a|b|o|s] <app> -->
<action application="bind_meta_app" data="1 b s execute_extension::dx XML features"/>
<action application="bind_meta_app" data="2 b s record_session::$${base_dir}/recordings/${caller_id_number}.${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/>
<action application="bind_meta_app" data="3 b s execute_extension::cf XML features"/>
<action application="set" data="ringback=${us-ring}"/>
<action application="set" data="transfer_ringback=$${hold_music}"/>
<action application="set" data="call_timeout=30"/>
<!-- <action application="set" data="sip_exclude_contact=${network_addr}"/> -->
<action application="set" data="hangup_after_bridge=true"/>
<!--<action application="set" data="continue_on_fail=NORMAL_TEMPORARY_FAILURE,USER_BUSY,NO_ANSWER,TIMEOUT,NO_ROUTE_DESTINATION"/> -->
<action application="set" data="continue_on_fail=true"/>
<action application="hash" data="insert/${domain_name}-call_return/${dialed_extension}/${caller_id_number}"/>
<action application="hash" data="insert/${domain_name}-last_dial_ext/${dialed_extension}/${uuid}"/>
<action application="set" data="called_party_callgroup=${user_data(${dialed_extension}@${domain_name} var callgroup)}"/>
<!--<action application="export" data="nolocal:sip_secure_media=${user_data(${dialed_extension}@${domain_name} var sip_secure_media)}"/>-->
<action application="hash" data="insert/${domain_name}-last_dial/${called_party_callgroup}/${uuid}"/>
<action application="bridge" data="{sip_invite_domain=${domain_name}}user/${dialed_extension}@${domain_name}"/>
<action application="answer"/>
<action application="sleep" data="1000"/>
<action application="voicemail" data="default ${domain_name} ${dialed_extension}"/>
</condition>
</extension>
В данном блоке редактируется следующая строка:
<action application="bridge" data="{sip_invite_domain=${domain_name}}user/${dialed_extension}@${domain_name}"/>
Все рекомендации приведенные выше применяются к файлам располагаемым в папке freeswitch/conf/dialplan. Для лучшего понимания примем, что дальнейшую настройку выполняем над планом нумерации которым пользуются клиентские устройства, что по-умолчанию имеет имя default.xml.
Все примеры приводятся для версии 1.0.4 FreeSwitch.