AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

[решено]Распределение звонков по номерам

Newbies/FAQ Forum 16 сообщений -
#1

Добрый день!
Система: elastix 2.0.0
Asterisk 1.6.2.13

Есть 3 многоканальных номера, заведённых по sip транку (по логину и паролю)

Стоит задача делать разные сценарии в зависимости от номера DID, сейчас все заведено через один сценарий, но дописано чтобы работало по префиксу, сейчас возникла мысль, прописать направление входящего вызова в настройках самого транка:


[78172765378]
secret=пароль
username=user79837265346
host = mangosip.ru
fromuser = user79837265346
fromdomain = mangosip.ru
dtmfmode=rfc2833
qualify=2000
insecure=invite
disallow=all
allow=alaw
nat=yes
context=inbound-rezinaNET
hasexten = no
hassip = yes
hasiax = no
registeriax = no
registersip = yes
canreinvite = nonat

[golden044_7777_1]
disallow=all
username=login
type=peer
secret=gfhjkm
insecure=invite
host=62.64.127.43
fromuser=login
context=inbound-rezina
allow=ulaw
allow=alaw
allow=g726

[golden044_7777_10]
disallow=all
username=login_2
type=peer
secret=gfhjkm2
insecure=invite
host=62.64.127.43
fromuser=login_2
context=inbound-rezina
allow=ulaw
allow=alaw
allow=g726

[golden044_5555]
disallow=all
username=login1
type=peer
secret=gfhjfkmeg
insecure=invite
host=62.64.127.43
fromuser=login1
context=inbound-220instrument
allow=ulaw
allow=alaw
allow=g726


как сейчас заведён сценарий:
[inbound-rezina]
exten => _.,1,Wait(1)
exten => _.,n,Wait(1)
exten => _номердид1,1,Read(select00,custom/Converted_Welcome_220,3,,,4)
exten => _номердид2,n,Read(select00,custom/welcome_rezina,3,,,4)
exten => _номердид3,2,Read(select00,custom/hellonet,3,,,4)
и т.д


Прописал в настройках транка направлять вызов на определённый inbound, а в файле диалплана создал три разных сценарий, но при вызове на любой из номеров срабатывает только 1 сценарий, который последним прописан в диалплане, помогите пожалуйста, где капать?


Последний раз редактировалось: Mixa87 (Чт Ноя 01, 2012 16:15)
#2

гм, Вы копировали или тут опечатка?

exten => _номердид1,1,Read(select00,custom/Converted_Welcome_220,3,,,4)
exten => _номердид2,n,Read(select00,custom/welcome_rezina,3,,,4)
exten => _номердид3,2,Read(select00,custom/hellonet,3,,,4)

Должно быть так

exten => номердид1,1,Read(select00,custom/Converted_Welcome_220,3,,,4)
exten => номердид2,1,Read(select00,custom/welcome_rezina,3,,,4)
exten => номердид3,1,Read(select00,custom/hellonet,3,,,4)

_________________
Мы всегда можем уметь...
#3

копировал, когда везде ставлю 1, звонок слетает, задача стоит разбить сценарии обработки вызовов на 3 части в зависимости от номера. Создать 3 отдельных плана обработки вызовов, как это сделать?
#4

2_Mixa87

Что в консоли? Какие ошибки!

Звонок может слетать потому как неверно прописан сам номер.

Давайте лог работы и там уже будет видно.

_________________
Мы всегда можем уметь...
#5

Даже не в этом суть: Хочу разбить все три номера на три разных диалплана, при принятии вызова вот такая лабуда получается:

-- Executing [444927777@inbound-rezina:1] Read("SIP/golden044_5555-000000a3", "select00,custom/welcome_rezina,3,,,4") in new stack
-- Accepting a maximum of 3 digits.
== Spawn extension (from-internal, 0970244180, 5) exited non-zero on 'SIP/113-00000085'
== MixMonitor close filestream
== End MixMonitor Recording SIP/113-00000085
-- Playing 'custom/welcome_rezina.slin' (language 'ru')
#6

Раздельно:

[inbound-rezina]
exten => s,1,Wait(1)
exten => s,n,тра-ля-ля

[inbound-rezinaNET]
exten => s,1,Wait(1)
exten => s,n,тра-ля-ля

[inbound-220instrument]
exten => s,1,Wait(1)
exten => s,n,тра-ля-ля

дальше если надо перекинуть на общую ветку, добвляете в конце

exten => s,n,Goto(zvono-dalee,s,1)

[zvono-dalee]
exten => s,1,NoOp(тра-ля-ля)
exten => s,n,тра-ля-ля
#7

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

А еще, все же почитайте книгу, все станет сразу проще и понятней.

_________________
Мы всегда можем уметь...
#8

Я так и сделал, разбил диалпланы, + написал в настройках транка направление на диалплан, но он не корретно отрабатывается, может что-то не правильно указываю непосредственно в настройках транка?
[78172765378]
secret=пароль
username=user79837265346
host = mangosip.ru
fromuser = user79837265346
fromdomain = mangosip.ru
dtmfmode=rfc2833
qualify=2000
insecure=invite
disallow=all
allow=alaw
nat=yes
context=inbound-rezinaNET
hasexten = no
hassip = yes
hasiax = no
registeriax = no
registersip = yes
canreinvite = nonat

[golden044_7777_1]
disallow=all
username=login
type=peer
secret=gfhjkm
insecure=invite
host=62.64.127.43
fromuser=login
context=inbound-rezina
allow=ulaw
allow=alaw
allow=g726

[golden044_7777_10]
disallow=all
username=login_2
type=peer
secret=gfhjkm2
insecure=invite
host=62.64.127.43
fromuser=login_2
context=inbound-rezina
allow=ulaw
allow=alaw
allow=g726

[golden044_5555]
disallow=all
username=login1
type=peer
secret=gfhjfkmeg
insecure=invite
host=62.64.127.43
fromuser=login1
context=inbound-220instrument
allow=ulaw
allow=alaw
allow=g726


Не нравится что во время определения звонка номер схватывается не корректно:
Executing [448327777@inbound-rezina:1] Read("SIP/golden044_5555-000000a3", "select00,custom/welcome_rezina,3,,,4")
#9

это частая проблема, когда несколько транков на одном провайдере.
пробуйте так:
Код:
; Localphone

exten => localphone,1,NoOp(Localphone call from ${CALLERID(all)} to ${SIP_HEADER(To)})
exten => localphone,n,GotoIf($["${SIP_HEADER(To):5:11}"="46123456789"]?swedish_did,1)
exten => localphone,n,GotoIf($["${SIP_HEADER(To):5:11}"="34912345678"]?spanish_did,1)
exten => localphone,n,GotoIf($["${SIP_HEADER(To):5:15}"="88351001234"]?skype_did,1)
; default processing
...
exten => localphone,n,Busy()
exten => localphone,n,Hangup
И вам хватит лишь одного контекста на вход
#10

Позвонил на Голдентелеком Украина, данный провайдер рекомендованных настроек для Asterisk не даёт Sad
#11

Дополнительно к моей рекомендации, кусок sip.conf:
Код:
; Localphone (Swedish, Spanish, Skype DID)
; +34xxx, +46xxx, +88351xxx
register => username:secret@localphone.com/localphone

[sip-provider-user](!)
context=incoming
type=user
progressinband=yes
insecure=port,invite
nat=no
qualify=8000
disallow=all
allow=gsm
allow=alaw

[sip-provider-peer](!)
context=incoming
type=peer
progressinband=yes
insecure=port,invite
nat=no
qualify=8000
disallow=all
allow=gsm
allow=alaw

[localphone](sip-provider-user)
defaultuser=username
fromuser=username
authuser=username
secret=secret
host=localphone.com
fromdomain=localphone.com
rfc2833compensate=yes

[localphone](sip-provider-peer)
defaultuser=username
fromuser=username
authuser=username
secret=secret
host=localphone.com
fromdomain=localphone.com
rfc2833compensate=yes

#12

[inbound]
; Localphone

exten => localphone,1,NoOp(Localphone call from ${CALLERID(all)} to ${SIP_HEADER(To)})
exten => localphone,n,GotoIf($["${SIP_HEADER(To):5:11}"="46123456789"]?swedish_did,1)
exten => localphone,n,GotoIf($["${SIP_HEADER(To):5:11}"="34912345678"]?spanish_did,1)
exten => localphone,n,GotoIf($["${SIP_HEADER(To):5:15}"="88351001234"]?skype_did,1)


А потом поставить метки:
exten => _.,1(swedish_did),Wait(2)
exten => _.,n,Read(select00,custom/welcome_rezina,3,,,4)
........

exten => _.,1(spanish_did),Wait(2)
exten => _.,n,Read(select00,custom/welcome_instrument,3,,,4)
............................
exten => _.,1(skype_did),Wait(2)
exten => _.,n,Read(select00,custom/welcome_books,3,,,4)

Так можно использовать?

Added after 4 minutes:

Ещё dialplan довольно таки большой и содержит очень много меток, а они как я понимаю, должны быть уникальными, поэтому и возникла мысль чтобы просто разделить context на всех транках, и чтобы в зависимости от номера звонок направлялся на определённых контекст.
#13

2_Mixa87

>>Так можно использовать?

Если Вы делаете
exten => localphone,n,GotoIf($["${SIP_HEADER(To):5:11}"="46123456789"]?swedish_did,1)

то Вы прыгните на екстеншен swedish_did и приоритет 1
exten => swedish_did,1,NoOp()
same => n,Hangup()

А вот если Вы напишите
exten => localphone,n,GotoIf($["${SIP_HEADER(To):5:11}"="46123456789"]?swedish_did)

То астер будет в данном екстеншене искать метку swedish_did
То есть

[inbound-rezina]
exten => localphone,n,GotoIf($["${SIP_HEADER(To):5:11}"="46123456789"]?swedish_did)
......
......
same =>n(swedish_did),NoOp()
......
same => n,Hangup()


Мало того, Вы можете прыгнуть на другой контекст в четко определенный екстеншенс с определенным приоритетом.
То будет

[inbound-rezina]
exten => localphone,n,GotoIf($["${SIP_HEADER(To):5:11}"="46123456789"]?inbound-220instrument,swedish_did,1)

[inbound-220instrument]
exten => swedish_did,1,NoOp()
same => n,Hangup()

Срочно тыц

_________________
Мы всегда можем уметь...
#14

спасибо

Последний раз редактировалось: Mixa87 (Чт Ноя 01, 2012 14:29)
#15

добавлю еще
Код:
exten => localphone,1,NoOp(Localphone call from ${CALLERID(all)} to ${SIP_HEADER(To)})
exten => localphone,n,GotoIf($["${SIP_HEADER(To):5:11}"="46123456789"]?46123456789,1)
exten => localphone,n,GotoIf($["${SIP_HEADER(To):5:11}"="34912345678"]?46123456789,1)

...


Код:
exten => 46123456789,1,Playback(congratulations-your-call-to-swedish-dhd-is-successful)[
#16

спасибо, нашёл решение.