VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Yeastar TG800 разбивка входящих по нужным транкам

Вопросы по использованию и настройке IP телефонов, шлюзов и всего прочего

Модераторы: april22, Zavr2008

Ответить
dendroid
Сообщения: 19
Зарегистрирован: 08 ноя 2013, 14:34

Yeastar TG800 разбивка входящих по нужным транкам

Сообщение dendroid »

Приветствую!

Имеется:
GSM Шлюз Yeastar TG800
FreePBX Distro STABLE 10.13.66-64bit (Asterisk 13)

На шлюзе настроены транки к Asterisk (8 шт по числу SIM карт). Настроены входящие маршруты по DID и исходящие по транкам.

SIP Транк в GSM:
Изображение

Входящий маршрут:
Изображение

Исходящий маршрут:
Изображение

Так соответственно для всех остальных SIM карт (8шт).

Проблема в том что все входящие звонки шлюз делает через рандомный транк. Т.е. например звонок пришёл на первую SIM карту, а в Asterisk он приходит на второй транк (к примеру). А когда делаем исходящий звонок, то FreePBX считает, что первая SIM карта свободна (так как звонок пришел на второй транк), пытается сделать иходящий, а шлюз ему отвечает 603 ошибкой (Got SIP response 603 "Declined" back) и всё, FreePBX не перебирает остальные транки для исходящих. Получается если клиент позвонил на SIM карту по которой делаются исходящие звонки, то совершить исходящий звонок на это направление нельзя, так как не перебираются дальше транки по исходящим.

Можно конечно настроить группу для исходящих звонков на GSM шлюзе и звонки делать вообще все через один транк, но тогда не удобно менять приоритеты по исходящим (например закончились деньги на одной из SIM, чтобы её убрать из потока, придётся идти на шлюз, вместо того чтобы просто убрать транки из исходящих в FreePBX).

Подскажите пожалуйста как решить данную проблему. Может у кого-то есть какой-нибудь гайд по настройкам Yeastar TG с разбивкой по каналам.

Заранее спасибо!
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: Yeastar TG800 разбивка входящих по нужным транкам

Сообщение ded »

сначала определитесь в терминах: транк - это (условная) труба. В сторону Yeastar TG800 эта труба у вас всего одна, имея ввиду параметры трубы - как ИП адрес : порт.
То что Вы сделали их 8 штук сути не меняет, для Астериск это 8 отражений в зеркалах одной и той же ИП трубки.
Входящий из Yeastar идентифицируется по ИП адресу, поэтому вам кажется что рандомно. Хотели распределять их разным абонентам? Надо это делать по DID = Hotline.
Пропишите в качестве Hotline на каждом канале моб. номер симки, сделайте один пир (транк, с контекстом = from-trunk) и распределяйте во входящей маршрутизации, указыва DID => внутренний абонент или группа.
dendroid
Сообщения: 19
Зарегистрирован: 08 ноя 2013, 14:34

Re: Yeastar TG800 разбивка входящих по нужным транкам

Сообщение dendroid »

В том то и дело, что у меня прописан DID на входящих маршрутах в Asterisk.
Вот немного другой пример:
В шлюзе установлено 4 SIM карты, на каждую по транку как в Asterisk так и на самом шлюзе. DID номера прописаны на входящем маршруте в GSM Шлюзе и соответственно в входящем на Asterisk.
Изображение
Изображение

Звоню на 3ю SIM карту в шлюзе (соответственно транк будет под номером 3 и DID с номером 3). Но шлюз кидает звонок по 4му транку (последнему) с верным DID.

Лог входящего звонка на Asterisk:
Имя транка: g4s04 (НЕ верный, должен быть g4s03)
DID: 100403 (верный, звоним на 3ю SIM)

Код: Выделить всё

  == Using SIP RTP TOS bits 184
  == Using SIP RTP CoS mark 5
    -- Executing [100403@from-trunk-sip-g4s04:1] Set("SIP/g4s04-0000212c", "GROUP()=OUT_65") in new stack
    -- Executing [100403@from-trunk-sip-g4s04:2] Goto("SIP/g4s04-0000212c", "from-trunk,100403,1") in new stack
    -- Goto (from-trunk,100403,1)
    -- Executing [100403@from-trunk:1] Set("SIP/g4s04-0000212c", "__DIRECTION=INBOUND") in new stack
    -- Executing [100403@from-trunk:2] Gosub("SIP/g4s04-0000212c", "app-blacklist-check,s,1()") in new stack
    -- Executing [s@app-blacklist-check:1] GotoIf("SIP/g4s04-0000212c", "0?blacklisted") in new stack
    -- Executing [s@app-blacklist-check:2] Set("SIP/g4s04-0000212c", "CALLED_BLACKLIST=1") in new stack
    -- Executing [s@app-blacklist-check:3] Return("SIP/g4s04-0000212c", "") in new stack
    -- Executing [100403@from-trunk:3] Set("SIP/g4s04-0000212c", "__FROM_DID=100403") in new stack
    -- Executing [100403@from-trunk:4] Set("SIP/g4s04-0000212c", "CDR(did)=100403") in new stack
    -- Executing [100403@from-trunk:5] ExecIf("SIP/g4s04-0000212c", "0 ?Set(CALLERID(name)=+375291234567)") in new stack
    -- Executing [100403@from-trunk:6] Set("SIP/g4s04-0000212c", "__MOHCLASS=") in new stack
    -- Executing [100403@from-trunk:7] Set("SIP/g4s04-0000212c", "__REVERSAL_REJECT=FALSE") in new stack
    -- Executing [100403@from-trunk:8] GotoIf("SIP/g4s04-0000212c", "1?post-reverse-charge") in new stack
    -- Goto (from-trunk,100403,10)
    -- Executing [100403@from-trunk:10] NoOp("SIP/g4s04-0000212c", "") in new stack
    -- Executing [100403@from-trunk:11] Set("SIP/g4s04-0000212c", "__CALLINGNAMEPRES_SV=allowed_not_screened") in new stack
    -- Executing [100403@from-trunk:12] Set("SIP/g4s04-0000212c", "__CALLINGNUMPRES_SV=allowed_not_screened") in new stack
    -- Executing [100403@from-trunk:13] Set("SIP/g4s04-0000212c", "CALLERID(name-pres)=allowed_not_screened") in new stack
    -- Executing [100403@from-trunk:14] Set("SIP/g4s04-0000212c", "CALLERID(num-pres)=allowed_not_screened") in new stack
    -- Executing [100403@from-trunk:15] NoOp("SIP/g4s04-0000212c", "CallerID Entry Point") in new stack
    -- Executing [100403@from-trunk:16] Goto("SIP/g4s04-0000212c", "timeconditions,1,1") in new stack
    -- Goto (timeconditions,1,1)
    -- Executing [1@timeconditions:1] Set("SIP/g4s04-0000212c", "DB(TC/1/INUSESTATE)=INUSE") in new stack
    -- Executing [1@timeconditions:2] Set("SIP/g4s04-0000212c", "DB(TC/1/NOT_INUSESTATE)=NOT_INUSE") in new stack
    -- Executing [1@timeconditions:3] GotoIfTime("SIP/g4s04-0000212c", "08:00-20:00,mon-fri,*,*,Europe/Minsk?truestate") in new stack
    -- Goto (timeconditions,1,14)
    -- Executing [1@timeconditions:14] GotoIf("SIP/g4s04-0000212c", "0?falsegoto") in new stack
    -- Executing [1@timeconditions:15] ExecIf("SIP/g4s04-0000212c", "0?Set(DB(TC/1)=)") in new stack
    -- Executing [1@timeconditions:16] Set("SIP/g4s04-0000212c", "DEVICE_STATE(Custom:TC1)=NOT_INUSE") in new stack
    -- Executing [1@timeconditions:17] ExecIf("SIP/g4s04-0000212c", "0?Set(DEVICE_STATE(Custom:TCSTICKY)=INUSE)") in new stack
    -- Executing [1@timeconditions:18] GotoIf("SIP/g4s04-0000212c", "1?app-announcement-2,s,1") in new stack
    -- Goto (app-announcement-2,s,1)
    -- Executing [s@app-announcement-2:1] GotoIf("SIP/g4s04-0000212c", "0?begin") in new stack
    -- Executing [s@app-announcement-2:2] Answer("SIP/g4s04-0000212c", "") in new stack
    -- Executing [s@app-announcement-2:3] Wait("SIP/g4s04-0000212c", "1") in new stack
    -- SIP/g3s02-0000212b is making progress passing it to SIP/206-0000212a

ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: Yeastar TG800 разбивка входящих по нужным транкам

Сообщение ded »

dendroid писал(а):Имя транка: g4s04 (НЕ верный, должен быть g4s03)
У вас не 4 транка, а один. И он единственно верный.
ded писал(а):Пропишите в качестве Hotline на каждом канале моб. номер симки,
а не мифический 100403
Читайте моё сообщение (выше) ещё раз, медленно, с пониманием.
dendroid
Сообщения: 19
Зарегистрирован: 08 ноя 2013, 14:34

Re: Yeastar TG800 разбивка входящих по нужным транкам

Сообщение dendroid »

вероятно смысл понял, но тогда встаёт вопрос как выбирать через что делать исходящий вызов в FreePBX:

Изображение
(выбор осуществляется перебором транков)

и не совсем понял смысла в качестве DID указывать именно номер SIM карты, ведь шлюзом он не передаётся да и SIM может быть вставлена другая. Просто чтобы не запутаться?
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: Yeastar TG800 разбивка входящих по нужным транкам

Сообщение ded »

Если ваш Yeastar на исходящих правильно отруливает по

Код: Выделить всё

Dial(SIP/g4s04/${EXTEN})
то оставьте всё как есть. В последовательности выбора транков укажите по порядку все 4. При этом первая будет ощутимо больше нагружаться. Чтобы это не происходило - найдите и установите модуль для FreePBX - Trunk balance, но он непростой. Зато учитывает даже бесплатные минуты в месяц на симках (если они есть).

Рулить исходящими, выбирая нужные симки - задача, которую успешно/неуспешно решают многие-многие пользователи.
Очень зависит от производителя шлюзов и прошивки.
В идеале - можно легко добиться нужного результата, если шлюз позволяет регистрировать каждую симку на Астериске с разными портми. Таким образом, что 4 симки видны были бы в Астериск как разные устройства на одном ИП адлресе.

Код: Выделить всё

CLI> sip show peers
790121000401   192.168.1.101  5060   ОК
790121000402   192.168.1.101  5061   ОК
790121000403   192.168.1.101  5062   ОК
790121000404   192.168.1.101  5063   ОК
имея ввиду что 192.168.1.101 это Yeastar

Если этого нельзя добиться - то используют схему с префиксами: при оригинации добавляютпрефикс
Dial(SIP/Yeastar/11${EXTEN})
Dial(SIP/Yeastar/22${EXTEN})
Dial(SIP/Yeastar/33${EXTEN})
Dial(SIP/Yeastar/44${EXTEN})
а на шлюзе отламывают. Имея ввиду, что с префиксом 11 хотят звонить через 1-ю симку, ч префиксом 22 - через 2-ю, и так далее.
dendroid
Сообщения: 19
Зарегистрирован: 08 ноя 2013, 14:34

Re: Yeastar TG800 разбивка входящих по нужным транкам

Сообщение dendroid »

большое спасибо за ответы и советы, про порты тоже подумал, в настройках ведь можно его указать (как на шлюзе так и port в транке Freepbx). В ближайшее время попробую и отпишусь (может пригодится кому)
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: Yeastar TG800 разбивка входящих по нужным транкам

Сообщение ded »

dendroid писал(а):про порты тоже подумал, в настройках ведь можно его указать (как на шлюзе так и port в транке Freepbx).
На шлюзе - да, но не на транке Freepbx. Там указываем
host=dynamic
и с какого ИП адреса:порта регистрируется - туда и отправляем.
dendroid
Сообщения: 19
Зарегистрирован: 08 ноя 2013, 14:34

Re: Yeastar TG800 разбивка входящих по нужным транкам

Сообщение dendroid »

К сожалению настроить подключение транков по портам не удалось.
Повторюсь, проблем с распределением по исходящим как таковой не было, была проблема (она можно сказать и осталась), что при входящем звонке на какую-либо SIM карту, Asterisk (FreePBX) не знал что данное направление "занято" и при попытке в тоже время другим пользователем совершить исходящий звонок, FreePBX спокойно пробовал это сделать с того-же направления, на котором сейчас висит звонок (входящий). Шлюз понятное дело не давал совершить звонок с этой же SIM и отдавал 603 ошибку (хотя мог и чего-нибудь нормальное сказать). Долго не стал разбираться почему-же и решил вернуться к теории. Наткнувшись вот на эту справочную страницу: https://asterisk-pbx.ru/wiki/freepbx/sip_trunk перечитал еще раз про транки в FreePBX 13, и о чудо! Нашелся вот такой параметр (функция):

Изображение
В старых версиях FreePBX такой фишки не было (или такой функционал был по умолчанию).

Вот такое описание идёт в самом FreePBX:
"Обычно попытка использовать следующие транки возникает при некоторых видах перегрузки или недоступности транка. Установка галочки заставит всегда продолжать вызов через следующий сконфигурированный транк или назначение даже если канал возвращает статус Занято или Неверный номер."

Так что после включения данной функции проблема решилась. Конечно не совсем так как хотелось бы.
dendroid
Сообщения: 19
Зарегистрирован: 08 ноя 2013, 14:34

Re: Yeastar TG800 разбивка входящих по нужным транкам

Сообщение dendroid »

Минус использования "Continue if Busy" (во всяком случае конкретно в моем случае с шлюзом Yeastar TG800). При исходящем звонке, если клиент сбрасывает звонок, то шлюз пробует ему набрать с следующей SIM (транка) :) и так пока не переберет все свободные исходящие по этому направлению.
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH