< meta name="referrer" content="origin">
Home » Asterisk » Звонок в Asterisk через 8, +7 или 7, замена +7 на 8

Звонок в Asterisk через 8, +7 или 7, замена +7 на 8

В последнее время несколько раз ко мне обращались с просьбой настроить возможность звонить в asterisk не только через 8, но и используя префикс 7 или +7. Чаще всего такая просьба связана с использованием sip клиентов на мобильных телефонах, где часто в записной книге номера записаны через +7. Но при этом некоторые sip провайдеры принимают звонки только начинающиеся с 8, либо только с 7. В таком случае нам нужно самим настроить замену 7 на 8 в астериск или наоборот.

Я возьму за основу dialplan из моей статьи про настройку asterisk. Но в целом это не принципиально, вы легко сможете изменить нужные строки и подстроить под свой план набора. Главное — понять смысл.

Вы звоните в мир по следующему правилу:

exten => _XXX.,1,Dial(SIP/${EXTEN}@397945)

Если ваш провайдер принимает звонки в любых форматах, то вам ничего редактировать не надо. Маска XXX. допускает любой набор — 8, 7 или +7. Но часто бывает так, что провайдер принимает только один конкретный тип набора, а на остальные отвечает, что неправильно набран номер или просто не звонит. В таком случае нам нужно сделать замену неправильного набора на правильный у себя в астериске. Делается это так:

exten => _8XX.,1,Dial(SIP/${EXTEN}@397945)
exten => _7XX.,1,Dial(SIP/8${EXTEN:1}@397945)
exten => _+7X.,1,Dial(SIP/8${EXTEN:2}@397945)

Первой строкой мы звоним без изменения номера. Во второй строке мы убираем первый символ и добавляем в начало 8. В третьей — убираем 2 первых символа и добавляем 8.

Если вам необходимо наоборот, заменить в астериск 8 на 7, то можно воспользоваться такими правилами:

exten => _8XX.,1,Dial(SIP/7${EXTEN:1}@397945)
exten => _7XX.,1,Dial(SIP/${EXTEN}@397945)
exten => _+7X.,1,Dial(SIP/${EXTEN:1}@397945)

В первом случае заменяем 8 на 7, во втором ничего не делаем, в третьем просто убираем +.

7 комментариев

  1. Доброе.
    Попробуйте freepbx — http://schmoozecom.com/distro-download.php Отличное готовое решение.

    P.s. 13 Asterix — LTS . Рекомендую исп-ть его во freepbx.

    • С freepbx я хорошо знаком, но сам предпочитаю ванильный астериск. Мне с ним быстрее и проще.

  2. Добавил себе в dialplan следующие строки:

    ;Звонок на внешний номер

    exten => _XXX.,1,Dial(SIP/${EXTEN}@896145)
    exten => _8XX.,1,Dial(SIP/${EXTEN}@896145)
    exten => _7XX.,1,Dial(SIP/8${EXTEN:1}@896145)
    exten => _+7X.,1,Dial(SIP/8${EXTEN:2}@896145)

    Говорит что направление не существует, без разница ч\з 7 или 8 набирать номер. Когда оставляю одну строку:
    exten => _XXX.,1,Dial(SIP/${EXTEN}@896145)

    то нормально звонит на внешний номер но только ч\з 7 Не пойму где я накосячил.

    • Так вам надо менять на 7 в начале, а вы в диалплане все меняете на 8. Надо наоборот менять 8 на 7.

  3. Мне нужен выход через 8 получается я оставляю одну строку
    exten => _7XX.,1,Dial(SIP/8${EXTEN:1}@896145)

    • «то нормально звонит на внешний номер но только ч\з 7 Не пойму где я накосячил.»
      Из этой строки я делаю вывод, что провайдеру нужно отдавать номер с 7 в начале. Соответственно и все правила должны настроены на 7. То есть должно быть вот так:
      exten => _8XX.,1,Dial(SIP/7${EXTEN:1}@896145)
      exten => _7XX.,1,Dial(SIP/${EXTEN}@896145)
      exten => _+7X.,1,Dial(SIP/${EXTEN:1}@896145)

  4. Да действительно, работает. Спасибо!

Добавить комментарий

Ваш e-mail не будет опубликован.