Назад | Перейти на главную страницу

Как передать / обработать добавочные номера при вызове Freeswitch извне SIP-шлюза?

Предположим, у меня есть 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>

На всякий случай у меня в блоге есть еще несколько практических примеров.