Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

2 trunk'a не разделяются по context'ам

0

Есть 2 номера у одного провайдера, заведенные на 1 Asterisk.

[443613371]
  host
=sip.intertelecom.ua
  username
=443613371
  secret
=***
  trunkname
=intertelecom.ua
  context
=DID_443613371
  hasexten
=no
  hasiax
=no
  hassip
=yes
  registeriax
=no
  registersip
=yes
  trunkstyle
=voip
  fromdomain
=sip.intertelecom.ua
  fromuser
=443613371
  authuser
=443613371
  insecure
=port,invite
  disallow
=all
  allow
=ulaw,alaw,gsm,g726

[443836313]
  host
=sip.intertelecom.ua
  username
=443836313
  secret
=***
  trunkname
=itelecom313
  context
=DID_443836313
  hasexten
=no
  hasiax
=no
  hassip
=yes
  registeriax
=no
  registersip
=yes
  trunkstyle
=voip
  insecure
=port,invite
  fromdomain
=sip.intertelecom.ua
  authuser
=443836313
  fromuser
=443836313
  disallow
=all
  allow
=ulaw,alaw,gsm

Для каждого заведен свой contex, но при звонке на любой номер срабатывает только 1 из указанных contex'ов.

 -- Executing [443836313@DID_443836313:1] Goto("SIP/443836313-00000016", "default,6005,1") in new stack
   
-- Goto (default,6005,1)


 
-- Executing [443613371@DID_443836313:1] Goto("SIP/443836313-00000014", "default,6005,1") in new stack
-- Goto (default,6005,1)

Как правильно разделить вызовы, в зависимости от набранного номера? Кроме как подымать под каждый номер отдельный сервер.

спросил Feb 3 '12

dragomagic Gravatar dragomagic
1 1 1

обновил Feb 3 '12

zzuz Gravatar zzuz flag of Russian Federation
7174 2 6 75
http://line24.ru/

5 Ответов

2

я делаю так

[incoming]
exten
=> 1111111111,1,Goto(context1,s,1)
exten
=> 2222222222,1,Goto(context2,s,1)

[context1]
exten
=> s,1,Dial()

[context2]
exten
=> s,1,Dial()
ссылка удалить спам редактировать

ответил Feb 3 '12

godlike Gravatar godlike flag of Ukraine
814 92 24 62
1

астериск определяет транк по паре адрес+порт.

тоесть в вашем случае будет всегда ОДИН выбираться. тото который первый в конфиге.

поищите другой вариант разделения, например по номерам.

да, точно ничего сделать с этим нельзя. это очень глубоко в sip канале заложено.

ссылка удалить спам редактировать

ответил Feb 3 '12

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/
0

надо определить оба этих номера в один контекст (in_intertelecom например), а в нем обрабатывать их с помощью плана нумерации:

[in_intertelecom]
exten
=> 443613371,1,Dial(SIP/100)
exten
=> 443836313,1,Dial(SIP/101)
ссылка удалить спам редактировать

ответил Feb 3 '12

eyt5297 Gravatar eyt5297
61 12 1 10
https://t.me/chan_asteris...
0

Еще можно по имени канала маршрутизацию сделать.

[incoming]
exten
=> _.,1,GotoIf($["${CHANNEL:4:-9}" = "443613371"]?context1,s,1)
exten
=> _.,n,GotoIf($["${CHANNEL:4:-9}" = "443836313"]?context2,s,1)

[context1]
exten
=> s,1,Dial()

[context2]
exten
=> s,1,Dial()

ссылка удалить спам редактировать

ответил Feb 4 '12

bolshoy_plohish Gravatar bolshoy_plohish
1388 25 20 38

Comments

интересно. а чем это будет лучше чем по destination? и вообще почему вы решили что на всех системах в имени канал будет номер? у меня например нигде он так не светится.

meral (Feb 4 '12)edit

Вы прочитали, что я написал?! Там может и не номер быть. Все зависит, какое вы каналу имя присвоили.

bolshoy_plohish (Feb 5 '12)edit

м? а можно поподробнее. выложиет свой конфиг. еще раз говрю, то что вы написали не на одном сервере кроме какихто специфических не будет работать. а именно не будет тогда когда адрес сервера совпадает более чем в одном пире(как автор написал).

meral (Feb 5 '12)edit

давайте уточним вопрос. как с помощью того что вы описали разделить траффик иддущий с адреса 192.168.0.1 и 192.168.0.1 на один и тот же номер s?

meral (Feb 5 '12)edit

тоесть у вас нет ответа на мои вопросы? вы просто написали не читая вопроса и думаете что это нормально?

meral (Feb 6 '12)edit
0

Правильнее использовать SIP_HEADER(TO)

[incoming]
exten
=> _.,1,Set(DestN=${SIP_HEADER(TO):5})
exten
=> _.,n,Set(DestN=$CUT(DestN,@,1)})
exten
=> _.,n,Goto(${DestN},s,1)
#exten => _.,n,GotoIf($["DestN" = "443613371"]?context1,s,1)
#exten => _.,n,GotoIf($["DestN" = "443836313"]?context2,s,1)

[443613371]
exten
=> s,1,Dial()

[context1]

ну и так далее, смотря на Ваше усмотрение

ссылка удалить спам редактировать

ответил Feb 5 '12

varnar Gravatar varnar
11 3

Comments

а почему правильное? нет, не надо меня обвинять в том что я злой. мне инетерсно из каких соображений вы этопишете? в каких случаях поле to будет а extension - нет? я вот читал/писал chan_sip.c и такого както не припомню.

meral (Feb 5 '12)edit

Я сам пользуюсь DID-ом (freephoneline.ca) и всегда получал в поле TO как раз номер на который звонили клиенты. Да и на других серверах тоже, показывает номер(имя) на который пришел звонок из вне

Но только для SIP каналов

varnar (Feb 6 '12)edit

да, но в екстеншен вы тоже его получите. и зачем так извращенно его вытягивать из хеадеров?

meral (Feb 6 '12)edit

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку
2 закладки

подписаться на rss ленту новостей

Статистика

Задан: Feb 3 '12

Просмотрен: 2,520 раз

Обновлен: Aug 31 '14

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.