{"id":13574,"date":"2026-04-12T10:19:45","date_gmt":"2026-04-12T10:19:45","guid":{"rendered":"https:\/\/www.siperb.com\/kb\/web-phone-provisioning-proxy\/"},"modified":"2026-04-18T13:26:59","modified_gmt":"2026-04-18T13:26:59","slug":"web-phone-provisioning-proxy","status":"publish","type":"post","link":"https:\/\/www.siperb.com\/kb\/web-phone-provisioning-proxy\/","title":{"rendered":"Using Siperb Provisioning and Proxy"},"content":{"rendered":"\n<p>With the 3rd option you will use all the options, and have the most secure solution. Your PBX credentials are securely stored, out of sight from your users or even the public \u2013 you use &#8220;<strong>Connections<\/strong>&#8221; to connect with any number of PBX services, or ISPs. The next two options cover using Siperb as a provisioning service, and as a secure proxy (no exposed passwords), but we can still offer two ways to make the actual phone client, either use your own custom code (with a few extra headers), or just use our entire solution.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Option A \u2014 Login, Provision, Use Proxy and load a custom client<\/h2>\n\n\n\n<p>With this option, you will use the Web Phone SDK to login, and provision your own custom phone client using something like SIP.js, JsSIP, SIPml or even your own SIP JavaScript.<\/p>\n\n\n\n<p class=\"wp-block-hb-message is-style-info wp-block-hb-message--withicon\"><strong>Note:<\/strong> You will have to add a <strong>Connection<\/strong> to the proxy in order to route calls between the client and your PBX.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1 \u2014 Add a connection to the proxy<\/h3>\n\n\n\n<p>To add a connection to the proxy, you must login as either yourself or as an Administrator to a Domain User.<\/p>\n\n\n\n<p>Once logged in as an owner, go to:<br><strong>Setting Window<\/strong> -&gt; <strong>Admin Control Panel<\/strong> -&gt; <strong>Connections<\/strong> -&gt; <strong>Add Connection<\/strong><\/p>\n\n\n\n<p>Once logged in as an administrator, go to:<br><strong>Setting Window<\/strong> -&gt; <strong>Admin Control Panel<\/strong> -&gt; <strong>Domain Users<\/strong> -&gt; (select the user) -&gt; <strong>Connections<\/strong> (Tab) -&gt; <strong>Add Connections<\/strong><\/p>\n\n\n\n<p> In the Add Connection window, select either <a href=\"\/kb\/article\/inbound-registration-connections\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Inbound Registration<\/strong><\/a>, <strong><a href=\"\/kb\/article\/outbound-registration-connections\/\" target=\"_blank\" rel=\"noreferrer noopener\">Outbound Registration<\/a><\/strong>, or <strong><a href=\"\/kb\/article\/outbound-trunk-connections\/\" target=\"_blank\" rel=\"noreferrer noopener\">Outbound Trunk<\/a><\/strong>. You can read more about each type from the links. Each offers a slightly different technique to connect the Siperb Proxy with your PBX.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2 \u2014 Load the Web Phone SDK<\/h3>\n\n\n\n<p>You will need to load the Web Phone SDK. Make sure you get the latest version from the <strong>CDN<\/strong>, or use the release code from the Github Repo: <a href=\"https:\/\/github.com\/Siperb\/Web-Phone\/releases\">https:\/\/github.com\/Siperb\/Web-Phone\/releases<\/a><\/p>\n\n\n\n<p>Add the UDM JavaScript SDK to your page in the Head or Body. The script can load at any time, and can be loaded as <code>async<\/code> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;head&gt;\n    ... (Other Headers)\n    &lt;script src=\"https:\/\/cdn.siperb.com\/lib\/Siperb-Web-Phone\/Web-Phone-&lt;version_number&gt;.umd.min.js\"&gt;&lt;\/script&gt;\n&lt;\/head&gt;\n\nor\n\n&lt;body&gt;\n    ... (site content)\n    &lt;script src=\"https:\/\/cdn.siperb.com\/lib\/Siperb-Web-Phone\/Web-Phone-&lt;version_number&gt;.umd.min.js\"&gt;&lt;\/script&gt;\n&lt;\/body&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-hb-message is-style-info wp-block-hb-message--withicon\"><strong>Note:<\/strong> This exposes the SDK via a browser\/global <code>window.Siperb<\/code> namespace, but since the code could be loaded at any time (via <code>async<\/code>), you must wait for the page to load before you use the SDK. <code>window.addEventListener('load', async () =&gt; { <use_the_sdk> })<\/use_the_sdk><\/code><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3 \u2014 Available SDK functions<\/h3>\n\n\n\n<p>The following objects are exported to the global namespace (<code>window.Siperb<\/code>) when the script loads. (If you are using ESM library, then these will become available to import).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><span style=\"color:#57804e\">\/**\n * Login - fetches your session token using your access token.\n * @param {string} pat - Your Personal Access Token (PAT) generated from the Admin Control Panel\n * @returns {Promise&lt;Object&gt;} - resolves with session object\n *\/<\/span>\nLogin(pat)\n\n<span style=\"color:#57804e\">\/**\n * GetProvisioning - fetches provisioning data and sets window.Siperb.PROVISIONING\n * @param {Object} options - options for provisioning retrieval\n * @returns {Promise&lt;Object&gt;} - resolves with provisioning object\n *\/<\/span>\nGetProvisioning(options)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-hb-message is-style-info wp-block-hb-message--withicon\"><strong>Note:<\/strong> You have to execute <code>LoadBrowserPhone()<\/code> first, and you must <code>await<\/code> for the return before you can provision the phone.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4 \u2014 Configure your SIP client<\/h3>\n\n\n\n<p>Since you will be using your own phone client, you will need to perform a few additional steps to your own chosen SDK. The following example is for JsSIP, but the same principle will be applied for SIPJS or others.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><span style=\"color:#57804e\">\/\/ Place in Head<\/span>\n&lt;script src=\"https:\/\/cdn.siperb.com\/lib\/Siperb-Web-Phone\/Web-Phone-&lt;version_number&gt;.umd.min.js\"&gt;&lt;\/script&gt;\n\n<span style=\"color:#57804e\">\/\/ Place in Head<\/span>\n&lt;script&gt;\n<span style=\"color:#0550ae\">const<\/span> main = <span style=\"color:#0550ae\">async<\/span> <span style=\"color:#0550ae\">function<\/span>() {\n    <span style=\"color:#0550ae\">const<\/span> accessToken = \"&lt;YOUR_PERSONAL_ACCESS_TOKEN&gt;\";   <span style=\"color:#57804e\">\/\/ Personal Access Token from ACP<\/span>\n    <span style=\"color:#0550ae\">let<\/span> session;\n    <span style=\"color:#0550ae\">try<\/span> {\n        session = <span style=\"color:#0550ae\">await<\/span> window.Siperb.Login(accessToken);\n    } <span style=\"color:#0550ae\">catch<\/span> (error) {\n        console.error('Failed to get session:', error); <span style=\"color:#0550ae\">return<\/span>;\n    }\n\n    <span style=\"color:#0550ae\">const<\/span> prov = <span style=\"color:#0550ae\">await<\/span> window.Siperb.GetProvisioning({\n        UserId: session.UserId,                      <span style=\"color:#57804e\">\/\/ Your user id returned from Login<\/span>\n        DeviceToken: \"&lt;YOUR_KNOWN_DEVICE_TOKEN&gt;\";    <span style=\"color:#57804e\">\/\/ Device Token from ACP<\/span>\n        SessionToken: session.SessionToken,          <span style=\"color:#57804e\">\/\/ Your session token returned from Login<\/span>\n        EnableCache: <span style=\"color:#0550ae\">true<\/span>,                           <span style=\"color:#57804e\">\/\/ Turn caching on or off<\/span>\n        ProvisioningKey: <span style=\"color:#b35900\">\"SIPERB_PROVISIONING\"<\/span>.      <span style=\"color:#57804e\">\/\/ Key used in localstorage<\/span>\n    });\n    \n    <span style=\"color:#57804e\">\/\/ Build WebSocket server URL<\/span>\n    <span style=\"color:#0550ae\">const<\/span> wsServer = <span style=\"color:#b35900\">`wss:\/\/${prov.SipWssServer}:${prov.SipWebsocketPort}\/${prov.SipServerPath}`<\/span>;\n\n    <span style=\"color:#57804e\">\/\/ Example JsSIP configuration using provisioning details<\/span>\n    <span style=\"color:#0550ae\">const<\/span> socket = <span style=\"color:#0550ae\">new<\/span> window.JsSIP.WebSocketInterface(wsServer);\n    <span style=\"color:#0550ae\">const<\/span> configuration = {\n        sockets: [socket],\n        uri: <span style=\"color:#b35900\">`sip:${prov.SipUsername}@${prov.SipDomain}`<\/span>,\n        password: provisioning.SipPassword,\n        contact_uri: <span style=\"color:#b35900\">`sip:${prov.ContactUserName}@${provisioning.SipDomain}`<\/span>,\n        extra_headers: [\n            <span style=\"color:#b35900\">`X-Siperb-Sid: ${session.SessionToken}`<\/span>,       <span style=\"color:#57804e\">\/\/ Your Siperb Session token<\/span>\n            <span style=\"color:#b35900\">`X-Siperb-Uid: ${session.UserId}`<\/span>,             <span style=\"color:#57804e\">\/\/ Your Siperb User ID<\/span>\n            <span style=\"color:#b35900\">`Authorization: Bearer ${provisioning.SipJwt}`<\/span> <span style=\"color:#57804e\">\/\/ Your Siperb JSON Web Token<\/span>\n        ]\n    };\n\n    <span style=\"color:#57804e\">\/\/ Start JsSIP UserAgent<\/span>\n    <span style=\"color:#0550ae\">const<\/span> ua = <span style=\"color:#0550ae\">new<\/span> window.JsSIP.UA(configuration);\n    ua.start();\n    console.log('JsSIP UA started.');\n\n    <span style=\"color:#57804e\">\/\/ Example: Make an outbound call with custom headers<\/span>\n    <span style=\"color:#0550ae\">const<\/span> target = 'sip:*65@${prov.SipWssServer}';\n    <span style=\"color:#0550ae\">const<\/span> eventHandlers = Array;\n    <span style=\"color:#0550ae\">const<\/span> options = {\n        extraHeaders: [\n            <span style=\"color:#b35900\">`X-Siperb-Sid: ${session.SessionToken}`<\/span>,       <span style=\"color:#57804e\">\/\/ Your Siperb Session token<\/span>\n            <span style=\"color:#b35900\">`X-Siperb-Uid: ${session.UserId}`<\/span>,             <span style=\"color:#57804e\">\/\/ Your Siperb User ID<\/span>\n            <span style=\"color:#b35900\">`Authorization: Bearer ${provisioning.SipJwt}`<\/span> <span style=\"color:#57804e\">\/\/ Your Siperb JSON Web Token<\/span>\n        ]\n        <span style=\"color:#57804e\">\/\/ ...other call options as needed<\/span>\n    };\n    ua.call(target, options);\n    console.log('Outbound call initiated with custom headers.');\n    <span style=\"color:#57804e\">\/\/ End of demonstration<\/span>\n}\nwindow.addEventListener('load', <span style=\"color:#0550ae\">async<\/span> <span style=\"color:#0550ae\">function<\/span>(){ <span style=\"color:#0550ae\">await<\/span> main() });\n&lt;\/script&gt;<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Option B \u2014 Login, Provision, Use Proxy and load Browser Phone SDK<\/h2>\n\n\n\n<p>With this option, you will use the Web Phone SDK to login, and provision the Browser Phone SDK, and have a complete secure operational SIP based phone embedded into your web page.<\/p>\n\n\n\n<p class=\"wp-block-hb-message is-style-info wp-block-hb-message--withicon\"><strong>Note:<\/strong> You will have to add a <strong>Connection<\/strong> to the proxy in order to route call between the client and your PBX.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1 \u2014 Add a connection to the proxy<\/h3>\n\n\n\n<p>To add a connection to the proxy, you must login as either yourself or as an Administrator to a Domain User.<\/p>\n\n\n\n<p>Once logged in as an owner, go to:<br><strong>Setting Window<\/strong> -&gt; <strong>Admin Control Panel<\/strong> -&gt; <strong>Connections<\/strong> -&gt; <strong>Add Connection<\/strong><\/p>\n\n\n\n<p>Once logged in as an administrator, go to:<br><strong>Setting Window<\/strong> -&gt; <strong>Admin Control Panel<\/strong> -&gt; <strong>Domain Users<\/strong> -&gt; (select the user) -&gt; <strong>Connections<\/strong> (Tab) -&gt; <strong>Add Connections<\/strong><\/p>\n\n\n\n<p> In the Add Connection window, select either <a href=\"\/kb\/article\/inbound-registration-connections\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Inbound Registration<\/strong><\/a>, <strong><a href=\"\/kb\/article\/outbound-registration-connections\/\" target=\"_blank\" rel=\"noreferrer noopener\">Outbound Registration<\/a><\/strong>, or <strong><a href=\"\/kb\/article\/outbound-trunk-connections\/\" target=\"_blank\" rel=\"noreferrer noopener\">Outbound Trunk<\/a><\/strong>. You can read more about each type from the links. Each offers a slightly different technique to connect the Siperb Proxy with your PBX.<\/p>\n\n\n\n<p>You will need to load the Web Phone SDK. Make sure you get the latest version from the <strong>CDN<\/strong>, or use the release code from the Github Repo: <a href=\"https:\/\/github.com\/Siperb\/Web-Phone\/releases\">https:\/\/github.com\/Siperb\/Web-Phone\/releases<\/a><\/p>\n\n\n\n<p>Add the UDM JavaScript SDK to your page in the Head or Body. The script can load at any time, and can be loaded as <code>async<\/code> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;head&gt;\n    ... (Other Headers)\n    &lt;script src=\"https:\/\/cdn.siperb.com\/lib\/Siperb-Web-Phone\/Web-Phone-&lt;version_number&gt;.umd.min.js\"&gt;&lt;\/script&gt;\n&lt;\/head&gt;\n\nor\n\n&lt;body&gt;\n    ... (site content)\n    &lt;script src=\"https:\/\/cdn.siperb.com\/lib\/Siperb-Web-Phone\/Web-Phone-&lt;version_number&gt;.umd.min.js\"&gt;&lt;\/script&gt;\n&lt;\/body&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-hb-message is-style-info wp-block-hb-message--withicon\"><strong>Note:<\/strong> This exposes the SDK via a browser\/global <code>window.Siperb<\/code> namespace, but since the code could be loaded at any time (via <code>async<\/code>), you must wait for the page to load before you use the SDK. <code>window.addEventListener('load', async () =&gt; { <use_the_sdk> })<\/use_the_sdk><\/code><\/p>\n\n\n\n<p>The following objects are exported to the global namespace (<code>window.Siperb<\/code>) when the script loads. (If you are using ESM library, then these will become available to import).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><span style=\"color:#57804e\">\/**\n * Login - fetches your session token using your access token.\n * @param {string} pat - Your Personal Access Token (PAT) generated from the Admin Control Panel\n * @returns {Promise&lt;Object&gt;} - resolves with session object\n *\/<\/span>\nLogin(pat)\n\n<span style=\"color:#57804e\">\/**\n * GetProvisioning - fetches provisioning data and sets window.Siperb.PROVISIONING\n * @param {Object} options - options for provisioning retrieval\n * @returns {Promise&lt;Object&gt;} - resolves with provisioning object\n *\/<\/span>\nGetProvisioning(options)\n\n\n<span style=\"color:#57804e\">\/**\n * Load the Browser Phone into the IFRAME\n * @param {HTMLIFrameElement} The iframe element to load the phone into \n * @returns {Promise&lt;Object&gt;} - resolves when done, or rejects with error\n *\/<\/span>\nLoadBrowserPhone(iframeElement)\n\n<span style=\"color:#57804e\">\/**\n * \n * @param {Object} options object with the following properties:\n * @param {Object} options.Provisioning - The provisioning object\n * @param {HTMLIFrameElement} options.PhoneFrame - The iframe element containing the phone\n * @param {string} options.ProfileUserId - The Profile User ID (Device ID)\n * @param {string} options.SessionId - The current session ID\n * @param {string} options.UserId - The current user ID\n * @param {function} [options.OnLoad] - Optional OnLoad callback function\n * @returns {Promise} - Resolves when the phone is provisioned, or rejects with an error\n *\/<\/span>\nProvisionPhone(options)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-hb-message is-style-info wp-block-hb-message--withicon\"><strong>Note:<\/strong> You have to execute <code>LoadBrowserPhone()<\/code> first, and you must <code>await<\/code> for the return before you can provision the phone.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3 \u2014 Complete example<\/h3>\n\n\n\n<p>The complete code of this solution is as follows: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><span style=\"color:#57804e\">\/\/ Place in Head<\/span>\n&lt;script src=\"https:\/\/cdn.siperb.com\/lib\/Siperb-Web-Phone\/Web-Phone-&lt;version_number&gt;.umd.min.js\"&gt;&lt;\/script&gt;\n\n<span style=\"color:#57804e\">\/\/ Sample IFRAME in DOM<\/span>\n&lt;iframe\n  id=<span style=\"color:#b35900\">\"phoneFrame\"<\/span>\n  style=<span style=\"color:#b35900\">\"width:400px; height:640px; border:1px solid #000000; border-radius:5px; overflow:hidden;\"<\/span>\n  allow=<span style=\"color:#b35900\">\"microphone; autoplay\"<\/span>\n&gt;&lt;\/iframe&gt;\n\n<span style=\"color:#57804e\">\/\/ Place in Head<\/span>\n&lt;script&gt;\n<span style=\"color:#0550ae\">const<\/span> main = <span style=\"color:#0550ae\">async<\/span> <span style=\"color:#0550ae\">function<\/span>() {\n    <span style=\"color:#0550ae\">const<\/span> accessToken = \"&lt;YOUR_PERSONAL_ACCESS_TOKEN&gt;\";   <span style=\"color:#57804e\">\/\/ Personal Access Token from ACP<\/span>\n    <span style=\"color:#0550ae\">let<\/span> session;\n    <span style=\"color:#0550ae\">try<\/span> {\n        session = <span style=\"color:#0550ae\">await<\/span> window.Siperb.Login(accessToken);\n    } <span style=\"color:#0550ae\">catch<\/span> (error) {\n        console.error('Failed to get session:', error); <span style=\"color:#0550ae\">return<\/span>;\n    }\n\n    <span style=\"color:#0550ae\">const<\/span> provisioning = <span style=\"color:#0550ae\">await<\/span> window.Siperb.GetProvisioning({\n        UserId: session.UserId,                      <span style=\"color:#57804e\">\/\/ Your user id returned from Login<\/span>\n        DeviceToken: \"&lt;YOUR_KNOWN_DEVICE_TOKEN&gt;\";    <span style=\"color:#57804e\">\/\/ Device Token from ACP<\/span>\n        SessionToken: session.SessionToken,          <span style=\"color:#57804e\">\/\/ Your session token returned from Login<\/span>\n        EnableCache: <span style=\"color:#0550ae\">true<\/span>,                           <span style=\"color:#57804e\">\/\/ Turn caching on or off<\/span>\n        ProvisioningKey: <span style=\"color:#b35900\">\"SIPERB_PROVISIONING\"<\/span>.      <span style=\"color:#57804e\">\/\/ Key used in localstorage<\/span>\n    });\n    \n    <span style=\"color:#0550ae\">const<\/span> thePhoneFrame = document.getElementById(<span style=\"color:#b35900\">\"phoneFrame\"<\/span>);\n    <span style=\"color:#0550ae\">await<\/span> window.Siperb.LoadBrowserPhone(thePhoneFrame);\n    <span style=\"color:#0550ae\">const<\/span> phoneAPI = <span style=\"color:#0550ae\">await<\/span> window.Siperb.ProvisionPhone({\n        Provisioning : provisioning,            <span style=\"color:#57804e\">\/\/ The returned provisioning object<\/span>\n        PhoneFrame : thePhoneFrame,             <span style=\"color:#57804e\">\/\/ The HTMLIFrameElement object<\/span>\n        ProfileUserId : \"&lt;instance_id&gt;\",        <span style=\"color:#57804e\">\/\/ Any string to identify this instance<\/span>\n        SessionId : \"&lt;session_id&gt;\",             <span style=\"color:#57804e\">\/\/ Any string to identify this session<\/span>\n        UserId : \"&lt;user_id&gt;\",                   <span style=\"color:#57804e\">\/\/ Any string to identify this user<\/span>\n        <span style=\"color:#57804e\">\/\/ Optional Settings<\/span>\n        EnableAvatar : <span style=\"color:#0550ae\">true<\/span>,                    <span style=\"color:#57804e\">\/\/ Show user avatar\/profile picture<\/span>\n        EnabledSettings : <span style=\"color:#0550ae\">false<\/span>,                <span style=\"color:#57804e\">\/\/ Show settings button<\/span>\n        EnableDialPad : <span style=\"color:#0550ae\">true<\/span>,                   <span style=\"color:#57804e\">\/\/ Show dial pad button<\/span>\n        EnableDisplayCallDetailRecords : <span style=\"color:#0550ae\">true<\/span>,  <span style=\"color:#57804e\">\/\/ Show call detail records button<\/span>\n        EnableCallTransfer : <span style=\"color:#0550ae\">true<\/span>,              <span style=\"color:#57804e\">\/\/ Enable call transfer feature <\/span>\n        EnableCallHold : <span style=\"color:#0550ae\">true<\/span>,                  <span style=\"color:#57804e\">\/\/ Enable call hold feature<\/span>\n        EnableCallMute : <span style=\"color:#0550ae\">true<\/span>,                  <span style=\"color:#57804e\">\/\/ Enable call mute feature<\/span>\n        EnableCallRecording : <span style=\"color:#0550ae\">true<\/span>,             <span style=\"color:#57804e\">\/\/ Enable call recording feature<\/span>\n        EnableDeviceSelector : <span style=\"color:#0550ae\">true<\/span>,            <span style=\"color:#57804e\">\/\/ Enable media device selection<\/span>\n        <span style=\"color:#57804e\">\/\/ Settings normally in settings window<\/span>\n        EnableAutoAnswer : <span style=\"color:#0550ae\">false<\/span>,               <span style=\"color:#57804e\">\/\/ Auto answer incoming calls<\/span>\n        EnableDoNotDisturb : <span style=\"color:#0550ae\">false<\/span>,             <span style=\"color:#57804e\">\/\/ Do not disturb mode<\/span>\n        EnableCallWaiting : <span style=\"color:#0550ae\">false<\/span>,              <span style=\"color:#57804e\">\/\/ Call waiting feature<\/span>\n        Language : 'auto',                      <span style=\"color:#57804e\">\/\/ e.g. 'en-US' etc.<\/span>\n        DisplayDateFormat : 'MMM DD, YYYY',     <span style=\"color:#57804e\">\/\/ Moment JS date format<\/span>\n        DisplayTimeFormat : 'hh:mm A',          <span style=\"color:#57804e\">\/\/ Moment JS date time format<\/span>\n        UiThemeStyle : 'light',                 <span style=\"color:#57804e\">\/\/ 'light', 'dark', or 'system'<\/span>\n        <span style=\"color:#57804e\">\/\/ Optional: Callback when the phone UI has loaded and is ready<\/span>\n        OnLoad : <span style=\"color:#0550ae\">function<\/span>(){\n            phoneAPI.Toast(<span style=\"color:#b35900\">\"Browser Phone UI has loaded and is ready.\"<\/span>);\n        }\n        <span style=\"color:#57804e\">\/\/ Additional option go here...<\/span>\n    });\n    <span style=\"color:#57804e\">\/\/ Add\/Edit callbacks on phoneAPI here.  <\/span>\n    phoneAPI.InitTooltips(); <span style=\"color:#57804e\">\/\/ Apply the tool tips<\/span>\n    <span style=\"color:#57804e\">\/\/ Done<\/span>\n    console.log('\u2705 Browser Phone provisioned and running.');\n}\nwindow.addEventListener('load', <span style=\"color:#0550ae\">async<\/span> <span style=\"color:#0550ae\">function<\/span>(){ <span style=\"color:#0550ae\">await<\/span> main() });\n&lt;\/script&gt;<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>With the 3rd option you will use all the options, and have the most secure solution. Your PBX credentials are securely stored, out of sight from your users or even the public \u2013 you use &#8220;Connections&#8221; to connect with any number of PBX services, or ISPs. The next two options cover using Siperb as a&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[4],"tags":[],"class_list":["post-13574","post","type-post","status-publish","format-standard","hentry","category-web-phone-dev"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Web Phone Proxy Provisioning<\/title>\n<meta name=\"description\" content=\"Web Phone proxy provisioning \u2014 connecting the Web Phone SDK to Siperb&#039;s proxy for secure call routing, transcoding support, and centralised credentials.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.siperb.com\/kb\/web-phone-provisioning-proxy\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Web Phone Proxy Provisioning\" \/>\n<meta property=\"og:description\" content=\"Web Phone proxy provisioning \u2014 connecting the Web Phone SDK to Siperb&#039;s proxy for secure call routing, transcoding support, and centralised credentials.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.siperb.com\/kb\/web-phone-provisioning-proxy\/\" \/>\n<meta property=\"og:site_name\" content=\"Siperb\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-12T10:19:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-18T13:26:59+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/web-phone-provisioning-proxy\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/web-phone-provisioning-proxy\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/#\\\/schema\\\/person\\\/0eea9348847ae5012963b92f7de86111\"},\"headline\":\"Using Siperb Provisioning and Proxy\",\"datePublished\":\"2026-04-12T10:19:45+00:00\",\"dateModified\":\"2026-04-18T13:26:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/web-phone-provisioning-proxy\\\/\"},\"wordCount\":810,\"publisher\":{\"@id\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/#organization\"},\"articleSection\":[\"Web Phone\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/web-phone-provisioning-proxy\\\/\",\"url\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/web-phone-provisioning-proxy\\\/\",\"name\":\"Web Phone Proxy Provisioning\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/#website\"},\"datePublished\":\"2026-04-12T10:19:45+00:00\",\"dateModified\":\"2026-04-18T13:26:59+00:00\",\"description\":\"Web Phone proxy provisioning \u2014 connecting the Web Phone SDK to Siperb's proxy for secure call routing, transcoding support, and centralised credentials.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/web-phone-provisioning-proxy\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.siperb.com\\\/kb\\\/web-phone-provisioning-proxy\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/web-phone-provisioning-proxy\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using Siperb Provisioning and Proxy\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/#website\",\"url\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/\",\"name\":\"Siperb\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/#organization\",\"name\":\"SIPERB LTD\",\"alternateName\":\"SIPERB\",\"url\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/MobilePromo.webp\",\"contentUrl\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/MobilePromo.webp\",\"width\":1200,\"height\":670,\"caption\":\"SIPERB LTD\"},\"image\":{\"@id\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.siperb.com\\\/kb\\\/#\\\/schema\\\/person\\\/0eea9348847ae5012963b92f7de86111\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7d05be207a83da788dfe01ab5d326164757a5a0d58ab399171c1a0506bda54e1?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7d05be207a83da788dfe01ab5d326164757a5a0d58ab399171c1a0506bda54e1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7d05be207a83da788dfe01ab5d326164757a5a0d58ab399171c1a0506bda54e1?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"http:\\\/\\\/localhost:8080\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Web Phone Proxy Provisioning","description":"Web Phone proxy provisioning \u2014 connecting the Web Phone SDK to Siperb's proxy for secure call routing, transcoding support, and centralised credentials.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.siperb.com\/kb\/web-phone-provisioning-proxy\/","og_locale":"en_US","og_type":"article","og_title":"Web Phone Proxy Provisioning","og_description":"Web Phone proxy provisioning \u2014 connecting the Web Phone SDK to Siperb's proxy for secure call routing, transcoding support, and centralised credentials.","og_url":"https:\/\/www.siperb.com\/kb\/web-phone-provisioning-proxy\/","og_site_name":"Siperb","article_published_time":"2026-04-12T10:19:45+00:00","article_modified_time":"2026-04-18T13:26:59+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.siperb.com\/kb\/web-phone-provisioning-proxy\/#article","isPartOf":{"@id":"https:\/\/www.siperb.com\/kb\/web-phone-provisioning-proxy\/"},"author":{"name":"admin","@id":"https:\/\/www.siperb.com\/kb\/#\/schema\/person\/0eea9348847ae5012963b92f7de86111"},"headline":"Using Siperb Provisioning and Proxy","datePublished":"2026-04-12T10:19:45+00:00","dateModified":"2026-04-18T13:26:59+00:00","mainEntityOfPage":{"@id":"https:\/\/www.siperb.com\/kb\/web-phone-provisioning-proxy\/"},"wordCount":810,"publisher":{"@id":"https:\/\/www.siperb.com\/kb\/#organization"},"articleSection":["Web Phone"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.siperb.com\/kb\/web-phone-provisioning-proxy\/","url":"https:\/\/www.siperb.com\/kb\/web-phone-provisioning-proxy\/","name":"Web Phone Proxy Provisioning","isPartOf":{"@id":"https:\/\/www.siperb.com\/kb\/#website"},"datePublished":"2026-04-12T10:19:45+00:00","dateModified":"2026-04-18T13:26:59+00:00","description":"Web Phone proxy provisioning \u2014 connecting the Web Phone SDK to Siperb's proxy for secure call routing, transcoding support, and centralised credentials.","breadcrumb":{"@id":"https:\/\/www.siperb.com\/kb\/web-phone-provisioning-proxy\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.siperb.com\/kb\/web-phone-provisioning-proxy\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.siperb.com\/kb\/web-phone-provisioning-proxy\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.siperb.com\/kb\/"},{"@type":"ListItem","position":2,"name":"Using Siperb Provisioning and Proxy"}]},{"@type":"WebSite","@id":"https:\/\/www.siperb.com\/kb\/#website","url":"https:\/\/www.siperb.com\/kb\/","name":"Siperb","description":"","publisher":{"@id":"https:\/\/www.siperb.com\/kb\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.siperb.com\/kb\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.siperb.com\/kb\/#organization","name":"SIPERB LTD","alternateName":"SIPERB","url":"https:\/\/www.siperb.com\/kb\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.siperb.com\/kb\/#\/schema\/logo\/image\/","url":"https:\/\/www.siperb.com\/kb\/wp-content\/uploads\/2024\/11\/MobilePromo.webp","contentUrl":"https:\/\/www.siperb.com\/kb\/wp-content\/uploads\/2024\/11\/MobilePromo.webp","width":1200,"height":670,"caption":"SIPERB LTD"},"image":{"@id":"https:\/\/www.siperb.com\/kb\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.siperb.com\/kb\/#\/schema\/person\/0eea9348847ae5012963b92f7de86111","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/7d05be207a83da788dfe01ab5d326164757a5a0d58ab399171c1a0506bda54e1?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/7d05be207a83da788dfe01ab5d326164757a5a0d58ab399171c1a0506bda54e1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7d05be207a83da788dfe01ab5d326164757a5a0d58ab399171c1a0506bda54e1?s=96&d=mm&r=g","caption":"admin"},"sameAs":["http:\/\/localhost:8080"]}]}},"_links":{"self":[{"href":"https:\/\/www.siperb.com\/kb\/wp-json\/wp\/v2\/posts\/13574","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.siperb.com\/kb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.siperb.com\/kb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.siperb.com\/kb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.siperb.com\/kb\/wp-json\/wp\/v2\/comments?post=13574"}],"version-history":[{"count":7,"href":"https:\/\/www.siperb.com\/kb\/wp-json\/wp\/v2\/posts\/13574\/revisions"}],"predecessor-version":[{"id":13965,"href":"https:\/\/www.siperb.com\/kb\/wp-json\/wp\/v2\/posts\/13574\/revisions\/13965"}],"wp:attachment":[{"href":"https:\/\/www.siperb.com\/kb\/wp-json\/wp\/v2\/media?parent=13574"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.siperb.com\/kb\/wp-json\/wp\/v2\/categories?post=13574"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.siperb.com\/kb\/wp-json\/wp\/v2\/tags?post=13574"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}