Предположим, у меня есть Freeswitch, на котором настроен шлюз SIP. Таким образом, локальные пользователи этого Freeswitch могут звонить извне через
<extension name="russia">
<condition field="destination_number" expression="^(7\d{10})$">
<action application="bridge" data="sofia/gateway/sipnet.ru/$1"/>
<action application="hangup"/>
</condition>
</extension>
где sipnet.ru
- имя шлюза провайдера SIP.
Теперь я хочу, чтобы пользователи извне могли звонить местным клиентам.
Как этого добиться? Как удаленный пользователь SIP-телефона может ввести дополнительные номера к основному номеру sip-провайдера? Как эти дополнительные числа могут быть извлечены с помощью Freeswitch?
Например, мой номер для sip-звонка - 55512345. Поэтому, чтобы позвонить мне, звонящий должен ввести этот номер. Но теперь я подключаю Freeswitch к этому номеру, и у пользователя Freeswitch есть местный номер 1000. Как его можно вызвать? Можно ли ему позвонить с 555123451000?
Можно ли дополнительно передавать не цифры, а буквы?
Можно ли передать дополнительные номера со стационарного или мобильного телефона?
(На самом деле я использую Sipnet и Zadarma на моем сервере FreeSWITCH)
Sipnet.ru позволяет перенаправлять все входящие звонки на SIP URI. Также он позволяет создавать субаккаунты. Итак, вы создаете столько субаккаунтов, сколько вам нужно, и настраиваете переадресацию всех вызовов на некоторый уникальный URI, например vasya-pupkin@yourdomain.com
Затем в конфигурации FreeSWITCH вы создаете новое общедоступное расширение:
File: conf/dialplan/public/50_users.xml
<include>
<extension name="pub_vasya-pupkin">
<condition field="destination_number" expression="^vasya-pupkin$">
<action application="transfer" data="1007 XML default"/>
</condition>
</extension>
поэтому все звонки на vasya-pupkin@yourdomain.com будут переведены на внутренний добавочный номер 1007.
Другой SIP-провайдер, который не поддерживает пересылку (например, zadarma.com), вы создаете профиль SIP и используете параметр «extension», чтобы указать, какое расширение в вашем общедоступном профиле следует использовать:
File: conf/sip_profiles/external/zadarma.xml
<gateway name="zadarma_59555">
<param name="username" value="59555"/>
<param name="password" value="*******"/>
<param name="extension" value="vasya-pupkin"/>
<param name="expire-seconds" value="125"/>
<param name="register" value="true"/>
<param name="register-transport" value="udp"/>
<param name="proxy" value="sip.zadarma.com"/>
<param name="retry-seconds" value="30"/>
<param name="caller-id-in-from" value="false"/>
<param name="ping" value="27"/>
</gateway>
На всякий случай у меня в блоге есть еще несколько практических примеров.