Собственно, варианта два
1. SIP через Websocket
2. Кустомный сигналинг через Websocket и далее SIP
И в том и в другом случае нужен будет промежуточный сервер.
В первом случае это Stateful SIP прокси, который сможет принимать SIP через Websocket и далее работать с провайдером через SIP/UDP.
Browser <--[SIP over Websocket]--> Stateful SIP Proxy <--[SIP over UDP/TCP]--> VoIP provider
Может конечно случиться что вам повезет и VoIP провайдер держит
спецификацию Websocket over SIP, но это вряд ли.
Т.е. ищите в направлении Stateful SIP Proxy RFC7118.
Второй вариант - не использовать SIP на стороне браузера и использовать сервер, к которому можно обращаться простыми командами через JS API. Например call() login() answer() и т.д. Т.е. опять же нужен промежуточный сервер, но это уже не Stateful SIP Proxy, а транслятор Js в SIP. Из известных мне рабочих решений:
Web Call Server.
Кроме того есть ряд SAAS решений с RESTful API, где не нужно хостить сервер у себя.
Кстати, в первом случае кроме Stateful SIP Proxy может потребоваться медиа сервер, например при попытке соединиться с PSTN телефоном по G.729. Этот кодек не поддерживается в WebRTC и соединение без такого сервера не пройдет.