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

Странное поведение GSM-оператора при звонке в него через AddPac - производит переадресацию по состоянию "не доступен"

Asterisk IP PBX 3 сообщений -
#1

Проблема, которую представить даже сложно:

Приходит в астериск звонок с CallerID 2222, то есть внутреннего пира, звонок переводится на AddPac GS1004, например 89138888888@3333, где 3333 - его пир, но это даже не важно. AddPac успешно дозванивается, связь работает.

Заметим, что на номере 89138888888 стоит переадресация по состоянию "не доступен". МТС даёт такую услугу. То есть вместо "Телефон выключен или вне зоны обслуживания" на сервере МТС происходит перевод на указанный в переадресации номер - 89139999999. Очень удобно - если выключен первый мобильный телефон, МТС сам звонит на второй.

Так вот, когда звонок приходит в астериск с десятизначным CallerID, например 3812ХХХХХХ (городской номер, подключен через другой канал, не GSM), по абсолютно той же схеме, что и двумя абзацами выше, то МТС считает, что телефон 89138888888 выключен в 90% случаев, и производит переадресацию на 89139999999.

Фактически имеем: если в GSM-сеть через AddPac идёт звонок с пира 2222, то GSM-оператор нормально соединяет. Если звонок идёт абсолютно так же через AddPac, но с пира 3812ХХХХХХ, то GSM-оператор считает, что GSM-номер, который мы вызываем, вне зоны действия, и переводит звонок на следующий номер, указанный в настройках переадресации. Причём не всегда, а в 8-9 случаях из десяти.

Разумеется, пробовали разные варианты - использовали разные мобильные аппараты и разные сим-карты с разными номерами. Всё равно звонок до GSM-телефона доходит один-два раза из десяти, остальные случаи происходит переадресация внутри GSM-сети.

AddPac второй номер, на который происходит переадресация, просто не знает. Его знает только сам GSM-оператор, так что с его стороны таких фокусов быть не может.


Раньше вместо AddPac использовали программу Oktell SIP GSM Gateway с модемом, всё срабатывало нормально. Переадресация включалась только тогда, когда 89138888888 был реально выключен.

У нас единственная мысль, что может AddPac пытается CallerID передавать в GSM-сеть (такое вообще возможно?), и мобильный оператор его пытается принять, а правильно обработать не может, и на всякий случай не соединяет с 89138888888.
#2

а что, дебаг AddPac говорит?
_________________
http://zemlyakovmp.ru - Мой блог о VoIP, Linux, Asterisk.
#3

Удачная попытка звонка, звонили с пира 2222, звонок пришёл как и положено, на 89138888888, мобильный телефон зазвонил:
Цитата:

GS1004# 79 : ****** Call Created status(InitiatedByNet) ver(8.28:2006-02-06-00-00) time(1365792195) ****
80 : Receive INVITE Request
81 : Found inbound voip peer(10000) result(2) peer->fixedPatternSize(0) mostMatchingSize(-1)
82 : Found inbound voip peer by dest-pattern id(10000)
83 : From Net - calledParty(089138888888) callingParty(2222) используем префикс 0 для выбора порта, потом обрезаем
84 : MatchedAll
85 : MatchAllProcess After Sorted
id(4584) dest(0T) prefer(0) selected(6)
86 : Initiate callee with dial-peer(0T) status(CalleeDeterminedAll) id(00000000-0000-0000-0000-

000000000000)
87 : InitiateOutCall : calledNum(089138888888), callingNum(2222), callerPort(ffffffff) type(GSM)
88 : Outbound call to CEP callId(00000000-0000-0000-0000-000000000000) callNum(9)
89 : SetLocalAudioFormats : outbound(FALSE) hqaEnable(FALSE)
90 : SetLocalAudioFormats : myVoipPeer is NULL, 888
91 : Audio Count(1)
92 : rtpSessionId(1) Second Audio Port(-1)
93 : SetAlerting
94 : PreConnected from(10000)
95 : SetLocalAudioFormats : outbound(FALSE) hqaEnable(FALSE)
96 : SetLocalAudioFormats : myVoipPeer is NULL, 888
97 : Add Local Audio MediaFormat : 0
98 : Call Forwarding No Answer timer timeout.
99 : Receive CANCEL Request
100 : Cancel received
101 : Terminated from(fffffffe) this(Remote:CallClear) before((null)) forced(0) time(1365792210)
102 : DisconnectCall at Busy
103 : StopSignal
104 : Disconnect (0)
105 : Call FROM terminated reason(Remote:CallClear)
106 : Receive ACK Request
107 : Disconnected(16) at Disconnecting


Неудачная попытка звонка, звонили с пира 3812123456 (городской номер с кодом города), аппарат 89138888888 даже не пискнул. Оператор GSM сразу переадресовал звонок на номер 89139999999. Зазвонил соответственно 89139999999.
Цитата:
GS1004# 219 : ****** Call Created status(InitiatedByNet) ver(8.28:2006-02-06-00-00) time(1365792343) ****
220 : Receive INVITE Request
221 : Found inbound voip peer(10000) result(2) peer->fixedPatternSize(0) mostMatchingSize(-1)
222 : Found inbound voip peer by dest-pattern id(10000)
223 : From Net - calledParty(089138888888) callingParty(3812123456) тоже префикс 0 для выбора порта
224 : MatchedAll
225 : MatchAllProcess After Sorted
id(4584) dest(0T) prefer(0) selected(Cool
226 : Initiate callee with dial-peer(0T) status(CalleeDeterminedAll) id(00000000-0000-0000-0000-

000000000000)
227 : InitiateOutCall : calledNum(089138888888), callingNum(3812123456), callerPort(ffffffff) type(GSM)
228 : Outbound call to CEP callId(00000000-0000-0000-0000-000000000000) callNum(11)
229 : SetLocalAudioFormats : outbound(FALSE) hqaEnable(FALSE)
230 : SetLocalAudioFormats : myVoipPeer is NULL, 888
231 : Audio Count(1)
232 : rtpSessionId(1) Second Audio Port(-1)
233 : SetAlerting
234 : PreConnected from(10000)
235 : SetLocalAudioFormats : outbound(FALSE) hqaEnable(FALSE)
236 : SetLocalAudioFormats : myVoipPeer is NULL, 888
237 : Add Local Audio MediaFormat : 0
238 : Receive CANCEL Request
239 : Cancel received
240 : Terminated from(fffffffe) this(Remote:CallClear) before((null)) forced(0) time(1365792351)
241 : DisconnectCall at Busy
242 : StopSignal
243 : Disconnect (0)
244 : Call FROM terminated reason(Remote:CallClear)
245 : Receive ACK Request
246 : Disconnected(16) at Disconnecting


В обоих случаях звонок сбрасывали, цель была не поговорить, а проверить, какой GSM-аппарат зазвонит.

Мистика какая-то. Оба вызова в аддпак приходят с ip астериска, обслуживаются одним правилом. В аддпаке тоже проходят через один и тот же порт 1/0, тоже одно правило.
Вызов с 2222 коммутируется правильно всегда внутри МТС, приходит на 89138888888, на который и звоним. Вызов с 3812123456 иногда приходит на 89138888888, но в большинстве случаев переадресовывается на 89139999999, как будто вызываемый номер недоступен.

В личном кабинете на сайте МТС стоит:
Цитата:
Условие: если недоступен
Переадресовывается на: номер 89139999999.


Повторимся, что пробовали менять и сим-карту (ставили другие номера в телефоны), и сами аппараты. Разве что оператора не пробовали менять, но задача стоит сделать именно на этом операторе. И аддпак номер 89139999999 не знает, его знает только МТС.

Added after 27 minutes:

Да, предыдущий дебаг был получен командой debug voip call.
Сделали более подробный с gsm на этом порту: debug gsm 1 0 all, он ниже.

удачный звонок с 2222:
Цитата:

1185 : ****** Call Created status(InitiatedByNet) ver(8.28:2006-02-06-00-00) time(1365794232) ****
1186 : Receive INVITE Request
1187 : Found inbound voip peer(10000) result(2) peer->fixedPatternSize(0) mostMatchingSize(-1)
1188 : Found inbound voip peer by dest-pattern id(10000)
1189 : From Net - calledParty(089139999999) callingParty(2222)
1190 : MatchedAll
1191 : MatchAllProcess After Sorted
id(4584) dest(0T) prefer(0) selected(9)
1192 : Initiate callee with dial-peer(0T) status(CalleeDeterminedAll) id(00000000-0000-0000-0000-000000000000)
1193 : InitiateOutCall : calledNum(089139999999), callingNum(2222), callerPort(ffffffff) type(GSM)
[3998.878] GSM-1/0: RTA CALL REQUEST, 89139999999
[3998.878] GSM-1/0: GSM event(0x80000002), state(Cool
[3998.878] GSM-1/0-DEV: DIAL to 89139999999

[3998.878] GSM-1/0: CMD=atd89139999999;
1194 : Outbound call to CEP callId(00000000-0000-0000-0000-000000000000) callNum(12)
1195 : SetLocalAudioFormats : outbound(FALSE) hqaEnable(FALSE)
1196 : SetLocalAudioFormats : myVoipPeer is NULL, 888
1197 : Audio Count(1)
1198 : rtpSessionId(1) Second Audio Port(-1)
1199 : SetAlerting
1200 : PreConnected from(10000)
1201 : SetLocalAudioFormats : outbound(FALSE) hqaEnable(FALSE)
1202 : SetLocalAudioFormats : myVoipPeer is NULL, 888
1203 : Add Local Audio MediaFormat : 0
[3998.975] GSM-1/0-DEV: DIALING
[4004.375] GSM-1/0-DEV: REMOTE RINGING
1204 : SIP_TREGISTER timer timeout.
1205 : localPeer->registerStat(3)
1206 : ExistInRegList(localpeer) : TRUE
1207 : WriteREGISTER
1208 : Adding authentication information
1209 : Send REGISTER Request
1210 : Receive 100 Trying
1211 : Transaction (167 REGISTER) proceeding
1212 : Receive 401 Unauthorized
1213 : Transaction (167 REGISTER) completed
1214 : No opaque in authentication
1215 : WriteREGISTER
1216 : Adding authentication information
1217 : Send REGISTER Request
1218 : Receive 100 Trying
1219 : Transaction (168 REGISTER) proceeding
1220 : Receive 200 OK
1221 : Transaction (168 REGISTER) completed
1222 : localPeer->registerStat(0)
1223 : ExistInRegList(localpeer) : TRUE
1224 : localPeer->registerStat(0)
1225 : ExistInRegList(localpeer) : TRUE
1226 : Receive CANCEL Request
1227 : Cancel received
1228 : Terminated from(fffffffe) this(Remote:CallClear) before((null)) forced(0) time(1365794246)
1229 : DisconnectCall at Busy
1230 : StopSignal
1231 : Disconnect (0)
[4012.427] GSM-1/0: RTA CALL DISCONNECT
1232 : Call FROM terminated reason(Remote:CallClear)
1233 : Receive ACK Request
[4012.480] GSM-1/0: RSP[0]=+WIND: 5,1
[4012.480] GSM-1/0: RSP[1]=+WIND: 2
[4012.480] GSM-1/0-DEV: HOOK ON

[4012.480] GSM-1/0: CMD=ath
[4012.780] GSM-1/0: RSP[0]=OK
[4012.780] GSM-1/0: CALL REQUEST CANCEL
[4012.780] GSM-1/0: GSM event(0x80000004), state(Cool
[4012.780] GSM-1/0: CALL DISCONNECT
[4012.780] GSM-1/0-DEV: HOOK ON

[4012.780] GSM-1/0: CMD=ath
[4012.880] GSM-1/0: RSP[0]=OK
1234 : Disconnected(16) at Disconnecting
1235 : Set Terminated Success for 167 REGISTER
1236 : Set Terminated Success for 168 REGISTER



неудачный звонок с 3812123456:
Цитата:
1682 : ****** Call Created status(InitiatedByNet) ver(8.28:2006-02-06-00-00) time(1365795051) ****
1683 : Receive INVITE Request
1684 : Found inbound voip peer(10000) result(2) peer->fixedPatternSize(0) mostMatchingSize(-1)
1685 : Found inbound voip peer by dest-pattern id(10000)
1686 : From Net - calledParty(089139999999) callingParty(3812123456)
1687 : MatchedAll
1688 : MatchAllProcess After Sorted
id(4584) dest(0T) prefer(0) selected(12)
1689 : Initiate callee with dial-peer(0T) status(CalleeDeterminedAll) id(00000000-0000-0000-0000-000000000000)
1690 : InitiateOutCall : calledNum(089139999999), callingNum(3812123456), callerPort(ffffffff) type(GSM)
[4817.655] GSM-1/0: RTA CALL REQUEST, 89139999999
[4817.655] GSM-1/0: GSM event(0x80000002), state(Cool
[4817.655] GSM-1/0-DEV: DIAL to 89139999999

[4817.655] GSM-1/0: CMD=atd89139999999;
1691 : Outbound call to CEP callId(00000000-0000-0000-0000-000000000000) callNum(15)
1692 : SetLocalAudioFormats : outbound(FALSE) hqaEnable(FALSE)
1693 : SetLocalAudioFormats : myVoipPeer is NULL, 888
1694 : Audio Count(1)
1695 : rtpSessionId(1) Second Audio Port(-1)
1696 : SetAlerting
1697 : PreConnected from(10000)
1698 : SetLocalAudioFormats : outbound(FALSE) hqaEnable(FALSE)
1699 : SetLocalAudioFormats : myVoipPeer is NULL, 888
1700 : Add Local Audio MediaFormat : 0
[4817.752] GSM-1/0-DEV: DIALING
[4824.952] GSM-1/0-DEV: REMOTE RINGING
1701 : SIP_TREGISTER timer timeout.
1702 : localPeer->registerStat(3)
1703 : ExistInRegList(localpeer) : TRUE
1704 : WriteREGISTER
1705 : Adding authentication information
1706 : Send REGISTER Request
1707 : Receive 100 Trying
1708 : Transaction (201 REGISTER) proceeding
1709 : Receive 401 Unauthorized
1710 : Transaction (201 REGISTER) completed
1711 : No opaque in authentication
1712 : WriteREGISTER
1713 : Adding authentication information
1714 : Send REGISTER Request
1715 : Receive 100 Trying
1716 : Transaction (202 REGISTER) proceeding
1717 : Receive 200 OK
1718 : Transaction (202 REGISTER) completed
1719 : localPeer->registerStat(0)
1720 : ExistInRegList(localpeer) : TRUE
1721 : localPeer->registerStat(0)
1722 : ExistInRegList(localpeer) : TRUE
1723 : Set Terminated Success for 102 CANCEL
1724 : Receive CANCEL Request
1725 : Cancel received
1726 : Terminated from(fffffffe) this(Remote:CallClear) before((null)) forced(0) time(1365795061)
1727 : DisconnectCall at Busy
1728 : StopSignal
1729 : Disconnect (0)
[4827.435] GSM-1/0: RTA CALL DISCONNECT
1730 : Call FROM terminated reason(Remote:CallClear)
1731 : Receive ACK Request
[4827.452] GSM-1/0: RSP[0]=+WIND: 5,1
[4827.452] GSM-1/0: RSP[1]=+WIND: 2
[4827.452] GSM-1/0-DEV: HOOK ON

[4827.452] GSM-1/0: CMD=ath
[4827.752] GSM-1/0: RSP[0]=OK
[4827.752] GSM-1/0: CALL REQUEST CANCEL
[4827.752] GSM-1/0: GSM event(0x80000004), state(Cool
[4827.752] GSM-1/0: CALL DISCONNECT
[4827.752] GSM-1/0-DEV: HOOK ON

[4827.753] GSM-1/0: CMD=ath
[4827.852] GSM-1/0: RSP[0]=OK
1732 : Disconnected(16) at Disconnecting

[4829.402] GSM-1/0: CMD=at+creg?
[4829.502] GSM-1/0: RSP[0]=+CREG: 2,1,"03EA","0505"
[4829.502] GSM-1/0: RSP[1]=OK
GSM-1/0: MON, reg status = 1
1733 : Set Terminated Success for 201 REGISTER
1734 : Set Terminated Success for 202 REGISTER



В логи влазят всякие самоопросы, типа:
Цитата:
[4012.480] GSM-1/0: CMD=ath
[4012.780] GSM-1/0: RSP[0]=OK


Но от них не избавишься.

Added after 6 minutes:

И ещё одна особенность: сейчас несколько раз звонок с 2222 также переадресовался. Ничего не меняли.
Вывод: глюк не зависит от CallerID, просто при звонке с AppDac иногда получаем "Телефон выключен".....
Теперь ещё сложнее разобраться. Учитывая, что когда вместо аддпака стоял обычный модемчик хуавей E1550, всё соединялось на ура.

Added after 45 minutes:

И ещё дополнение:
Нашлась разница в логах удачных и неудачных звонков.

Когда включается переадресация, в логах появляются строчки:
Цитата:
Set Terminated Success for 102 CANCEL

Выше видно, где она выползает.

А в другом неудачном звонке, который здесь приводится, вообще вылезли между DIALING и RINGING:
Код:
[7949.477] GSM-1/0-DEV: DIALING
3616 : Set Terminated Success for 331 REGISTER
3617 : Set Terminated Success for 332 REGISTER
[7956.277] GSM-1/0-DEV: REMOTE RINGING

А ниже уже не вылезли.