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

Проблема с INVITE через a2billing

Биллинг 12 сообщений 25.10.2010 20:41 - 28.10.2010 22:25
#1 25.10.2010 20:41

Проблема с INVITE через a2billing


Приветствую господа.

Прошу помочь в решении проблемы, которая заключается в следующем:
поставил Asterisk 1.6, настроил. Все работает.
Прикрутил к нему A2Billing 1.7.1 (Larch). Перестали работать исходящие.
После анализа логов сигнализации выяснилось, что при INVITE через a2billing в поле From вставляется SIP-URI локального юзера, а не юзера транка. Соответственно, авторизация не проходит.
Выглядит это так:
Код:
INVITE sip:322XXXXXXXX@sip.poivy.com SIP/2.0
Via: SIP/2.0/UDP 85.X.X.X:5060;branch=z9hG4bK0bc9ad92;rport
Max-Forwards: 70
---> From: "AsteriskUSER" ;
#2 25.10.2010 23:46

у вас в каждом посте разная версия билинга, так всеже - какая именно? 1.6, 1.7 или 1.8??
Код:
exten => _32.,1,AGI(a2billing.php,1)

откуда вы взяли этот пример? при использовании AGI билинг не будет правильно считать, это давно известно всем. В инструкции написано использовать DeadAGI, почему ей не следуете?
кстати даже на форуме a2b пытались обратить ваше внимание на этот момент но вы проигнорировали.
ps: у провайдеров обычно регистрируются через
Код:
register => user[:secret[:authuser]]@host[:port][/extension]

_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
#3 26.10.2010 09:36

Спасибо за ответ.
Да, каюсь. Перепробовал все версии, Отсюда и путаница

На данный момент стоит версия 1.7.

Сначала DeadAGI был исправлен на AGI, так как увидел "совет" в логах. Затем было исправлено на DeadAGI.
Вечером перепощу актуальную на данный момент кнфигурацию. извиняюсь за сумбур в ранее данной информации
#4 26.10.2010 20:25

Итак, что имеем на данный момент:
* PBX in a Flash Version : 1.7.5.5
* FreePBX Version : 2.6.0.2
* Running Asterisk Version : Asterisk 1.4.21.2
* A2Billing 1.7.1

additional_a2billing_sip.conf


Код:


[1112152488]
accountcode=1112152488
regexten=1112152488
amaflags=billing
context=a2billing
dtmfmode=RFC2833
host=dynamic
nat=yes
qualify=no
secret=
type=friend
username=1112152488
allow=ulaw
allow=alaw
allow=gsm
allow=g729
regseconds=0
cancallforward=yes


[sipnet]
disallow=all
host=sipnet.ru
username=2555555
secret=
type=peer
callerid=
hasexten=no
hassip=yes
hasiax=no
registeriax=
registersip=yes
context=a2billing
insecure=invite
fromuser=2555555
fromdomain=sipnet.ru
contact=2555555
allow=alaw
allow=ulaw
allow=g729
nat=no
canreinvite=nonat
dtmfmode=info



extensions_a2billing.conf
Код:
[a2billing]
exten => _X.,1,Answer
exten => _X.,n,Wait(1)
exten => _X.,n,deadAGI(a2billing.php,1)
exten => _X.,n,Hangup


Далее делаем звонок:
Код:
[2010-10-26 20:56:11] VERBOSE[13763] logger.c: Reliably Transmitting (no NAT) to 212.53.40.40:5060:
INVITE sip:32XXXXXXXX@sipnet.ru SIP/2.0
Via: SIP/2.0/UDP 192.168.123.191:5060;branch=z9hG4bK4094b0da;rport
From: "1112152488" ;tag=as5b9192ce
To:
Contact:
Call-ID: 1c82bc053b9e9cc117bb665e624934f2@192.168.123.191
CSeq: 102 INVITE
User-Agent: Asterisk PBX
Max-Forwards: 70
Date: Tue, 26 Oct 2010 18:56:11 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces
Content-Type: application/sdp
Content-Length: 291

v=0
o=root 3468 3468 IN IP4 192.168.123.191
s=session
c=IN IP4 192.168.123.191
t=0 0
m=audio 14822 RTP/AVP 8 0 3 101
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv


Уже видим что From неверный

далее идет
SIP/2.0 100 Trying
затем
SIP/2.0 401 Authentication required

в ответ же вместо INVITE с авторизацией шлем
ACK sip:32XXXXXXXX@sipnet.ru
.....
....

От провайдера получаем
[2010-10-26 20:56:11] NOTICE[3481] chan_sip.c: Failed to authenticate on INVITE to '"1112152488" ;tag=as5b9192ce'


Далее меняю extension a2billing на
exten => _X.,1,Dial(SIP/${EXTEN}@sipnet)

делаем звонок
(не буду утолять длинными логами)



Код:
[2010-10-26 21:13:57] VERBOSE[3481] logger.c: Reliably Transmitting (no NAT) to 212.53.40.40:5060:
INVITE sip:32XXXXXXXX@sipnet.ru SIP/2.0^M
Via: SIP/2.0/UDP 192.168.123.191:5060;branch=z9hG4bK7c9b686e;rport
From: "almor" ;tag=as57aabe5f
To:
Contact:
....


далее обычный SIP диалог без каких-либо отклонений
Звонок проходит без проблем

Как говорилось, до этого ставил систему с нуля с Asterisk 1.6 и A2billing 1.8
Проблема была аналогичная.
PIAF ставил с установочного диска разработчика.
#5 27.10.2010 04:22

вы невнимательны
anest писал(а):
ps: у провайдеров обычно регистрируются через
Код:
register => user[:secret[:authuser]]@host[:port][/extension]

релоадим астериск и далее смотрим прошла ли регистрация: sip show registry

_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
#6 27.10.2010 18:18

Извиняюсь, это не было игнорированием.
Регистрация делалась немного другим способом.
Но, разве регистрация влияет на возможность звонков? SIPNET регистрации не требует, достаточно авторизации при INVITE, но именно с ней и проблемы.
На всяких случай, выполнил Ваши рекомендации.
Host Username Refresh State Reg.Time
sipnet.ru:5060 2555555 99 Registered Wed, 27 Oct 2010 19:02:45

но проблему, к сожалению, это не решило.
#7 28.10.2010 02:41

ну значит кривые настройки на сипнет.

Added after 4 minutes:

Код:
[sipnet]
type=peer
username=2555555
secret={пароль}
trunkname=sipnet
callerid=
hasexten=no
hassip=yes
hasiax=no
registeriax=
registersip=yes
host=sipnet.ru
context=a2billing
insecure=invite
fromuser=2555555
fromdomain=sipnet.ru
disallow=all
allow=alaw
allow=ulaw
allow=g729
nat=yes
canreinvite=no
dtmfmode=rfc2833


Added after 3 minutes:

кстати
Код:
[a2billing]
exten => _X.,1,Answer

Answer делать не нужно, это задается в самом билинге уже - отвечать на звонок или нет. замените на exten => _X.,1,NoOp()

_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
#8 28.10.2010 19:27

Проверил. Тоже самое.
настройки транка здесь, скорее всего не причем. Ведь мимо биллинга звонки идут без проблем.
Extension брались с сайта A2B из мануалов.

Проблема точно в настройках а2b, либо в какой-то системной переменной, из-за которой а2b никак не хочет ставить в INVITE в поле From данные юзера из транка, несмотря на указанные fromdomain и fromuser

Помню, что на каком-то форуме натыкался на человека, который имел такие же проблемы. Решения указано не было, да и в то время биллинг не нужен был.
А сейчас, к сожалению, даже найти тот форум не могу.
#9 28.10.2010 20:58

я кажется понял в чем дело. как именно описан транк в самом биллинге? там не должно быть пароля и логина, только имя транка которое описано в конфиге астериска. другими словами в билинге не должно быть отдельно снова настроено на провайдера транк - он уже в астериске описан, его и юзать из билинга.
_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
#10 28.10.2010 21:28

>>там не должно быть пароля и логина, только имя транка которое описано в конфиге астериска.

Там нет такой возможности.
Но, благодаря Вашим советам, нашел это:
Поле PROVIDER IP. К нему пояснения: Set the IP or URL of the VoIP provider. Alternatively, put in the name of a previously defined trunk in Asterisk or FreePBX. (MyVoiPTrunk, ZAP4G etc.)

Я писал не имя транка, а адрес провайдера, то есть в нашем случае sipnet.ru, что в принципе и рекомендовано по умолчанию
Заменил на sipnet и все ЗАРАБОТАЛО!!!!!

Вы даже не представляете как я Вам благодарен. Beer 2
#11 28.10.2010 22:19

Вы меня не поняли. Обьясняю на пальцах: если у вас в sip.conf транк сипнета описан в секции [sipnet] то в билинге в том поле что вы нашли уже - пишем имя транка а именно "sipnet", без ковычек естестно. В этом случае билинг использует транк описанный в астериске, что собственно я и сказал в предыдущем своем посте.
То что заработало - это еще полдела, важно понять _почему_ это заработало.

_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
#12 28.10.2010 22:25

Еще раз спасибо. Я понял.