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

не подставляет код города

Проблемы и их решения Asterisk как такового

Модератор: april22

не подставляет код города

Сообщение Elektronik » 25 янв 2020, 16:17

Добрый день форумчане!
Сменили провайдера, у предыдущего на его стороне было настроено, что бы можно было звонить на 495 без международного кода (т.е. вместо 74951234567 набираем просто 1234567 и соединяемся с 74951234567). У нового провайдера автоматом это не настроено, правильней прописать это в диалплане. Вроде прописал правильно, но номер не подставляется (в логах идет звонок на набранный номер (1234567), а не 74951234567).
Прошу помощи разобраться, почему правило не работает. При этом подмена 8 на 7 работает.
[Показать] Спойлер: Extensions.conf:
[number]
exten => _X.,1,Macro(recording,${CALLERID(num)},${EXTEN}) ;_X., означает, что для ЛЮБЫХ исходящих номеров начинает определятся название файла
exten => _[23]XX,2,Dial(SIP/gagarin/${EXTEN},30,Tt)
exten => 100,2,Dial(SIP/102&SIP/103,30,t&m)
exten => _xxx,2,Dial(SIP/${EXTEN},,t)
exten => _ZXXXXXX,2,Dial(SIP/7495${EXTEN}@number) ;звонок на 495 без кода города
exten => _8XX.,2,Dial(SIP/7${EXTEN:1}@number) ;преобразование 8 в наборе на 7
exten => _7XX.,2,Dial(SIP/${EXTEN}@number) ;без преобразования на россию
exten => _+7X.,2,Dial(SIP/${EXTEN:1}@number) ; преобразование с +7 на 7 (для мобильных)
exten => _X.,2,Dial(SIP/4951283939/${EXTEN})
exten => _X.,3,Hangup()

[Показать] Спойлер: лог звонка:
== Using SIP RTP CoS mark 5
> 0x7f02ec005520 -- Strict RTP learning after remote address set to: 10.0.10.20:5004
-- Executing [7755888@4951283939:1] Macro("SIP/102-00000085", "recording,102,7755888") in new stack
-- Executing [s@macro-recording:1] GotoIf("SIP/102-00000085", "1?mp3") in new stack
-- Goto (macro-recording,s,3)
-- Executing [s@macro-recording:3] Set("SIP/102-00000085", "fname=1579954477.1107-2020-01-25-15_14-102-7755888") in new stack
-- Executing [s@macro-recording:4] Set("SIP/102-00000085", "monopt=nice -n 19 /usr/bin/lame -b 32 --silent "/records/callrecords/1579954477.1107-2020-01-25-15_14-102-7755888.wav" "/records/callrecords/1579954477.1107-2020-01-25-15_14-102-7755888.mp3" && rm -f "/records/callrecords/1579954477.1107-2020-01-25-15_14-102-7755888.wav" && chmod o+r "/records/callrecords/1579954477.1107-2020-01-25-15_14-102-7755888.mp3"") in new stack
-- Executing [s@macro-recording:5] Set("SIP/102-00000085", "CDR(filename)=1579954477.1107-2020-01-25-15_14-102-7755888.mp3") in new stack
-- Executing [s@macro-recording:6] Set("SIP/102-00000085", "CDR(realdst)=7755888") in new stack
-- Executing [s@macro-recording:7] Set("SIP/102-00000085", "CDR(remoteip)=10.0.10.20") in new stack
-- Executing [s@macro-recording:8] MixMonitor("SIP/102-00000085", "/records/callrecords/1579954477.1107-2020-01-25-15_14-102-7755888.wav,b,nice -n 19 /usr/bin/lame -b 32 --silent "/records/callrecords/1579954477.1107-2020-01-25-15_14-102-7755888.wav" "/records/callrecords/1579954477.1107-2020-01-25-15_14-102-7755888.mp3" && rm -f "/records/callrecords/1579954477.1107-2020-01-25-15_14-102-7755888.wav" && chmod o+r "/records/callrecords/1579954477.1107-2020-01-25-15_14-102-7755888.mp3"") in new stack
== Begin MixMonitor Recording SIP/102-00000085
-- Executing [s@macro-recording:9] Goto("SIP/102-00000085", "no") in new stack
-- Goto (macro-recording,s,16)
-- Executing [s@macro-recording:16] Verbose("SIP/102-00000085", "Exit record") in new stack
Exit record
-- Executing [7755888@4951283939:2] Dial("SIP/102-00000085", "SIP/7755888@4951283939") in new stack
== Using SIP RTP CoS mark 5
-- Called SIP/7755888@4951283939
-- Got SIP response 486 "Busy" back from 185.45.152.161:5060
-- SIP/4951283939-00000086 is busy
== Everyone is busy/congested at this time (1:1/0/0)
-- Executing [7755888@4951283939:3] Hangup("SIP/102-00000085", "") in new stack
== Spawn extension (4951283939, 7755888, 3) exited non-zero on 'SIP/102-00000085'
== MixMonitor close filestream (mixed)
== Executing [nice -n 19 /usr/bin/lame -b 32 --silent "/records/callrecords/1579954477.1107-2020-01-25-15_14-102-7755888.wav" "/records/callrecords/1579954477.1107-2020-01-25-15_14-102-7755888.mp3" && rm -f "/records/callrecords/1579954477.1107-2020-01-25-15_14-102-7755888.wav" && chmod o+r "/records/callrecords/1579954477.1107-2020-01-25-15_14-102-7755888.mp3"]
== End MixMonitor Recording SIP/102-00000085

По идее строка "exten => _ZXXXXXX,2,Dial(SIP/7495${EXTEN}@number) ;звонок на 495 без кода города" должна подставлять к набранному номеру 7495, но этого не происходит :( Где то я допустил ошибку, а где понять не могу. Прошу помощи.
Спасибо!
Аватар пользователя
Elektronik
 
Сообщений: 56
Зарегистрирован: 16 окт 2017, 13:42
Откуда: Москва

Re: не подставляет код города

Сообщение ded » 25 янв 2020, 19:08

Elektronik писал(а):строка "exten => _ZXXXXXX,2,Dial(SIP/7495${EXTEN}@number)
чушь.
Учите синтаксис.
Справедливо будет LOCAL/7495${EXTEN}@number
или
exten => _ZXXXXXX,2,Dial(SIP/4951283939/7495/${EXTEN})
Elektronik писал(а):exten => _8XX.,2,Dial(SIP/7${EXTEN:1}@number) ;преобразование 8 в наборе на 7
exten => _7XX.,2,Dial(SIP/${EXTEN}@number) ;без преобразования на россию

В России точная размерность - 11-тизнак. Поэтому (точность - признак мастерства):
exten => _7XXXXXXXXXX,2,Dial(SIP/4951283939/${EXTEN})
exten => _8XXXXXXXXXX,2,Goto(7${EXTEN:1})
ded
 
Сообщений: 14617
Зарегистрирован: 26 авг 2010, 19:00

Re: не подставляет код города

Сообщение Zavr2008 » 27 янв 2020, 14:33

ТС, Мало кто пользуется вот такой фишкой CLI Asterisk как проверка матчинга диалплана по конкретному экстену:

Код: выделить все
dialplan show 7755888@number


Покажет что реально попадает для набираемого семизнака на выход из той галиматьи что нарисовали..
вопрос почему - следующий, и синтаксис и понимание должно быть, как уважаемый ded уже растолковал выше.
SIP/E1 шлюзы Alvis. Форумчанам - скидки, Asterisk/FreePBX/MikoPBX + TDA/LDK/Avaya/HiPath/NEC и др. + Bitrix24/1C CRM! COVID-19: Помогаем переводу телефонии на удаленку !!!
Аватар пользователя
Zavr2008
 
Сообщений: 1632
Зарегистрирован: 27 янв 2011, 01:35

Re: не подставляет код города

Сообщение Elektronik » 29 янв 2020, 12:37

Уважаемый Ded, я знаю синтаксис и пользуюсь им, но Будущее телефонии, которое переведено, не панацея. Ведь куда то двигается Asterisk и что то меняется... могу ошибаться, но мб что то изменилось в синтаксисе?
Видимо я что то не так тестировал, мои конструкции все работают.

Этот синтаксис ( exten => _XXXXXXX,2,Dial(SIP/7495${EXTEN}@4951283939) ) нарыт в интернетиках, в т.ч. на сайте провайдера ( https://zadarma.com/ru/support/instructions/asterisk/

На самом деле конструкция работает, косяк не в плане набора, а во мне, точнее невнимательности. Есть одна лишняя строка, которой может и не быть:
exten => _7XX.,2,Dial(SIP/${EXTEN}@4951283939)

А номер, на котором тестировал, начинается на 7... Короче сам виноват и поделом мне.

По поводу точности и вежливости... Это было бы справедливо, если бы были прописаны жесткие планы наборов с ограничением звонков куда то, но строка "exten => _X.,2,Dial(SIP/4951283939/${EXTEN} " все это упраздняет. А т.к. мы звоним по всему миру, ограничения на какие то страны прописать не могу.

Уважаемый Zavr, спасибо, записал себе в шпаргалку полезную команду. Но она показывает только строки диалплана, которые относятся к набираемому номеру, но не показывает результат (преобразованный правилом номер):
CLI> dialplan show 1234567@4951283939
[Показать] Спойлер: CLI> dialplan show 1234567@4951283939
[ Context '4951283939' created by 'pbx_config' ]
'_XXXXXXX' => 2. Dial(SIP/7495${EXTEN}@4951283939) [pbx_config]
'_X.' => 1. Macro(recording,${CALLERID(num)},${EXTEN}) [pbx_config]
2. Dial(SIP/4951283939/${EXTEN}) [pbx_config]
3. Hangup() [pbx_config]


Но все равно полезно в дебаге. Спасибо.

Уважаемый Ded, как видим обе конструкции работают:
1. exten => _X.,2,Dial(SIP/4951283939/${EXTEN}
2. exten => _XXXXXXX,2,Dial(SIP/7495${EXTEN}@4951283939)
из этого следует вопрос, почему нельзя использовать конструкцию? В Asterisk я слаб, но по камешку все таки собираю диалпланы, не удивительно, если чего то не знаю...
Аватар пользователя
Elektronik
 
Сообщений: 56
Зарегистрирован: 16 окт 2017, 13:42
Откуда: Москва

Re: не подставляет код города

Сообщение Zavr2008 » 29 янв 2020, 13:14

она показывает только строки диалплана, которые относятся к набираемому номеру, но не показывает результат

Да, и это очень полезно - экономит время значительно для поиска как раз всяких опечаток без необходимости делать лишний раз пробные звонки. Сразу смотришь какие варианты у Астера есть..
SIP/E1 шлюзы Alvis. Форумчанам - скидки, Asterisk/FreePBX/MikoPBX + TDA/LDK/Avaya/HiPath/NEC и др. + Bitrix24/1C CRM! COVID-19: Помогаем переводу телефонии на удаленку !!!
Аватар пользователя
Zavr2008
 
Сообщений: 1632
Зарегистрирован: 27 янв 2011, 01:35

Re: не подставляет код города

Сообщение Elektronik » 29 янв 2020, 13:16

Еще раз спасибо.

Осталось понять почему нельзя, или как правильно, использовать конструкцию exten => _x.,2,Dial(SIP/${EXTEN}@trunk)
Аватар пользователя
Elektronik
 
Сообщений: 56
Зарегистрирован: 16 окт 2017, 13:42
Откуда: Москва

Re: не подставляет код города

Сообщение ded » 29 янв 2020, 14:43

Нет возможности много объяснить. В двух словах - формула кто-то@где-то называется URI и является унифицированной адресацией чего угодно (в том числе эл. почты). Посылая ИП посылку куда-то предполагается что правая часть URI превращается в ИП адрес ресурса, куда направляется посылка, и тот ресурс знает кому её там доставить. В этой упрощённой формуле много плюсов и минусов. Например если
Dial(SIP/${EXTEN}@10.11.12.13) то передать специфические параметры canreinvite или directmedia или allow=g726 туда никак.
Поэтому начиная с версии Астериск 1.6 Создатели пишут - используйте формулу
Технология/Ресурс/номер, то есть
SIP/proxyserver/+71234567890 или
IAX2/provider/89012345678
ded
 
Сообщений: 14617
Зарегистрирован: 26 авг 2010, 19:00

Re: не подставляет код города

Сообщение Elektronik » 29 янв 2020, 15:15

Спасибо Ded, почитаю по этой теме на досуге.
еще раз спасибо за точность и вежливость. только что звонил на прямой номер, который начинается с 8, естественно по моему диалплану не дозвонился, сразу вспомнил тебя и корил себя за узколобость. исправил на правильное (exten => _8XXXXXXXXXX,2,Dial(SIP/7${EXTEN:1}@4951283939) ) и звонок пошел.
Аватар пользователя
Elektronik
 
Сообщений: 56
Зарегистрирован: 16 окт 2017, 13:42
Откуда: Москва


Вернуться в Конфигурация и настройка Asterisk

Кто сейчас на форуме

Сейчас этот форум просматривают: Google Adsense [Bot] и гости: 9

© 2008 — 2020 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH