Подключение SIP-транков RingCentral к Asterisk

Радио начала XX векаЕсть такой американский провайдер IP-телефонии RingCentral, который официально не поддерживает SIP-транки Asterisk. Говорит, что “for best user experience”. Возможно и так, но мне надо было подключить напрямую к Asterisk. Долго я мучился, пытаясь приспособить их к своей любимой программной АТС, и, наконец, получилось. Полную историю и способы нахождения этой информации я рассказывать не буду, скажу только, что ни одно животное в ходе этого не пострадало. Ниже инструкция, как подключить номера VoIP-провайдера RingCentral на наш Asterisk PBX по протоколу SIP – как для входящих звонков, так и для исходящих.

Сначала разберемся с исходящими звонками. Если в админке аккаунта выбрать нужный Extension и щелкнуть по ссылке “Click here for device configuration instructions”, то откроется следующее окно:
Device Configuration Instructions
Здесь мы смотрим на значения Outbound Proxy, User Name, а также Password (который идентичен Authorization ID). В конфиге Asterisk в файле sip.conf пишем следующее. В данном случае USERNAME – это номер телефона в США – пусть для определенности он будет 12127654321. PASSWORD – это ваш пароль (пусть он будет 8889999).

[12127654321]
type = peer
host = sip.ringcentral.com
username = 8889999
fromuser = 12127654321
secret = 8889999
insecure = port,invite
canreinvite = no
disallow = all
allow = ulaw
nat = yes
registersip = no
dtmfmode=auto
rfc2833compensate=yes
trustrpid=yes
outboundproxy=sip10.ringcentral.com:5090

Возможно, некоторые параметры можно не указывать, но такой конфиг точно работает.

Пробуем, что получилось. Добавляем в наш диалплан, например, такой кусок кода:

exten = 1234,1,Dial(SIP/12127654321/18773027777,60,t)

И пробуем набрать 1234. Если нам отвечает пиццерия, значит все круто!

Теперь приступим ко входящим звонкам. Чтобы они заработали, во-первых, надо соорудить register-строку. Обратите внимание, что в строке register вторым доменом я указываю sip10.ringcentral.com и порт 5090, как нам и говорит вышеприведенная инструкция от RingCentral:

register => [email protected]:8889999:[email protected]:5090/12127654321

С ума спрыгнуть, конечно. Данная строка заставляет Asterisk отправлять информацию о себе на сервера провайдера, т.е. анонсировать себя. При поступлении собственно входящего звонка, на нашу программную АТС прилетит INVITE-пакет с определенного IP-адреса. В моем случае это был 199.255.123.249. Его-то мы и добавляем в список разрешенных пиров, в другом файле users.conf:

[rc]
type = friend
context = incoming
host = 199.255.123.249
trunk = yes
group = null
hasexten = no
hasiax = no
hassip = yes
registeriax = no
registersip = no
trunkstyle = voip
insecure = port,invite
disallow = all
allow = ulaw

Опять же, что-то тут может быть и лишним, но так работает. Последний момент – в настройках extension в веб-админке аккаунта нужно выставить опцию Extension: Ring Device Directly. Пробуем звонить на свой номер 12127654321, звонок прилетает в контекст incoming на добавочный номер 12127654321. Там мы и пишем нужную нам логику.

Спасибо за внимание.

Похожие статьи

Leave a Reply

Your email address will not be published. Required fields are marked *