В статье описан процесс объединения номерных планов пользователей телефонии 3CX и Webitel. На стороне Webitel номерной план пользователей 1xxx, на стороне 3CX - 5xx

Сторона 3CX IP-PBX

Создаем Master bridge для подключения Webitel:

Вносим IP сервера Webitel в разрешенные:

В правилах исходящей маршрутизации создаем направление на номера пользователей Webitel

После успешной регистрации, вы должны увидеть зеленую статус:

Сторона Webitel

Создаем шлюз с регистрацией и прописываем параметры c Master bridge. Схему можем не задавать, так как это будет шлюз только для исходящих звонков на 3CX.

Регистрация шлюза на сторону 3CX:

Создаем схему Interconnection для обработки входящих от 3CX:

[
    {
        "set": {
            "continue_on_fail": "true",
            "hangup_after_bridge": "true",
            "ignore_early_media": "consume",
            "instant_ringback": "true"
        }
    },
    {
        "preAnswer": ""
    },
    {
        "bridge": {
            "endpoints": [
                {
                    "extension": "${destination_number}",
                    "parameters": {
                        "call_timeout": "120"
                    },
                    "type": "user"
                }
            ]
        }
    },
    {
        "hangup": ""
    }
]

Также, нам нужно создать второй шлюз без регистрации, поскольку все входящие на Webitel от 3CX будут приходить просто на IP. Выбираем нашу схему, как основную для обработки входящих на шлюз:

Для исходящих звонков на 3CX создаем схему и правило звонка:

[
    {
        "ringReady": ""
    },
    {
        "bridge": {
            "endpoints": [
                {
                    "dialString": "$1",
                    "name": "3cx.ru",
                    "parameters": {
                        "origination_caller_id_number": "${caller_id_number}",
                        "sip_cid_type": "rpid",
                        "sip_invite_full_from": "sip:[email protected]"
                    },
                    "type": "gateway"
                }
            ]
        }
    },
    {
        "hangup": ""
    }
]

Для того, чтобы исходящие проходили на 3CX, необходимо еще перезаписать в поле Contact значение, как в TO. Для этого на стороне OpenSIPS мы добавляем код:

if ($(hdr(X-Webitel-Gateway-Id){s.int})==144) {
	remove_hf("Contact");
	append_hf("Contact: <sip:[email protected]>\r\n");
}

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