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