Вывод транка вместе с номером звонящего в asterisk

У меня появилась задача вывести на экран телефона не только номер звонящего, но и транк, через который идет звонок. Эта задача актуальна, если у вас несколько входящих номеров и вы хотите видеть во время звонка на экране телефона не только номер звонящего, но и на какой номер он звонит. В asterisk это сделать совсем не сложно. Ниже я расскажу как.

Онлайн-курс по устройству компьютерных сетей

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Для отладки и тестирования работы voip я рекомендую сервис Zadarma. Плюс его в том, что после регистрации вы получите настройки пира для внутренней сети оператора. И внутри этой сети вы можете бесплатно звонить. Например, я одного пира регистрирую на sip клиенте смартфона и с него звоню на второй аккаунт, пир от которого настроен в астериске. Таким образом эмулирую внешний звонок. Удобно отлаживать различные конфигурации звонков, не требуя платного подключения.

Я для примера возьму конфигурацию из своей статьи по настройке asterisk. Допустим, у нас есть контекст call-in, в который приходит входящий звонок с одного из транков:

[call-in]
exten => 397945,1,Dial(SIP/100)

Здесь явно не задано, что отображать на экране аппарата, поэтому скорее всего мы увидим номер звонящего, хотя это будет зависеть от настроек провайдера, но чаще всего это так. В данном случае 397945 - транк провайдера zadarma. Теперь сделаем так, чтобы при звонке от провайдера, мы увидели его явно на экране телефона:

[call-in]
exten => 397945,1,Set(CALLERID(name)=Zadarma ${CALLERID(num)})
exten => 397945,n,Dial(SIP/100)

Вместо Zadarma вы можете вывести любую строку. Если полное название транка и номера звонящего не влезает на экран аппарата, то используйте не имена транков, а условные обозначения в виде цифр или буквенных сокращений. Перечитываем dialplan и проверяем:

Отображение на экране транка входящего звонка

В данном случае я позвонил с другого аккаунта задарма с номером 675393. На экране софтфона видно, что звонок идет с транка, который я обозвал Zadarma, и указан номер звонящего. Таким образом, вы можете пометить все необходимые транки в контексте входящих звонков. При входящем звонке будет явно видно, через какой канал позвонили.

Другие материалы по asterisk:

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

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

  1. Richard Faraday

    Помогите разобраться. У меня есть 2 астера, сединены iax2, разные номерные планы (1XX и 2XX) и второй может через первый выходить в город. Вопрос такой, если я звоню с одного на другой по внутренним номерам (например с номера 201 на 102), то я могу на принимающем телефоне видеть номер вызывающего, если : exten => _1XX,1,Set(CALLERID(all)=${CALLERID(num)}) и при этом могу перезвонить обратно. Как сделать так, чтобы при входящем показывало не просто номер, а например Office-2 201 т.е. номер с названием и чтобы можно было перезвонить назад (иначе он звонит не по номеру, а на asterisk и не находит такого). Может быть это от сипфона зависит?
    exten => _1XX,1,Set(CALLERID(all)=Ast-2 ${CALLERID(num)})

  2. Здравствуйте! А как увидеть транк в журнале звонков? На софтфонах Zoiper, CSipSimple номер транка не попадает в журнал звонков.

  3. Михаил

    Идею не озвучить? Чтобы было от чего оттолкнуться

    • Первое, что пришло в голову - при звонке сохранять пару звонивший/ответивший, а потом ее передавать при переадресации (это будет уже новый звонок), заменяя то, что будет в CALLERID нового звонка. Но надо еще понимать, что переадресация бывает условная и безусловная. Так что задача не простая, надо разбираться.

  4. Михаил

    Добрый день!
    Есть возможность провернуть похожий трюк при переводе звонка, чтобы показать кто перевел вызов?

    • А разве по-умолчанию не видно, от кого переводят? Я уже не помню таких подробностей, давно астериски не настраивал. Думаю, что можно вывести.

      • Михаил

        Вот совсем я не спец в астериске... У меня только переводимый номер светится (как-будто прямо мне и звонят), а хотелось бы ещё понимать кто перевел (при слепом переводе звонка)
        Есть идеи как настроить?

        • Идеи есть, но готового решения нет. Если вы не спец, вряд ли сами сделаете. Надо немного разбираться.

  5. Добрый день ! Не подскажите, как организовать транк Астериск и ATC SIS 3000?

  6. Добрый день! А как такую штуку во FreePBX 13 реализовать?

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar