# Components

The connection is via HTTPS with a level 3 certificate via ([https://xxxx.ucontactcloud.com](https://xxxx.ucontactcloud.com/ "https://xxxx.ucontactcloud.com/")), uContact uses HTTPS (http2) with a REST API and Secure Websockets (wss).

The connection is made through Secure Websockets [https://xxxx.ucontactcloud.com:8089/ws](https://xxxx.ucontactcloud.com:8089/ws "https://xxxx.ucontactcloud.com:8089/ws") (for SIP signaling).

Our STUN Server ([stun.ucontactcloud.com](http://stun.ucontactcloud.com/ "http://stun.ucontactcloud.com/"))

Agent and Telephony server negotiate with STUN Server gathering ICE candidates.

After that the connection is made from the agent to the telephony server, bridging the communication with the telephony provider (via SIP, SIP TLS, SIP WebRTC).

The telephony server does the bridging to host all the recordings, transcoding, etc.

Codecs: We use alaw, ulaw, opus, vp8, h264. Al the transcoding part takes action in the telephony server.

QoS: We can do TOS and COS tag (on the server-side) the packets with multiple parameters in different actions (video, audio, text)

[![image-1674582097508.png](https://docs.cleverideas.com.mx/uploads/images/gallery/2023-01/scaled-1680-/8jzrUPDxJFDkXTah-image-1674582097508.png)](https://docs.cleverideas.com.mx/uploads/images/gallery/2023-01/8jzrUPDxJFDkXTah-image-1674582097508.png)

[![image-1674582121406.png](https://docs.cleverideas.com.mx/uploads/images/gallery/2023-01/scaled-1680-/a2Mrx71sEJuE1e70-image-1674582121406.png)](https://docs.cleverideas.com.mx/uploads/images/gallery/2023-01/a2Mrx71sEJuE1e70-image-1674582121406.png)

The server prefers cipher suites supporting Perfect-Forward-Secrecy.

The server provides HTTP Strict Transport Security.

The server provides HTTP Public Key Pinning.

X-XSS-Protection

---

# Hardware Sizing (On-Premise)<button aria-label="Copy link to heading" class="css-779anb"><svg height="24" role="presentation" viewbox="0 0 24 24" width="24"></svg></button>

<div class="css-79elbk" id="bkmrk--3">  
</div><div class="pm-table-container with-shadow-observer" data-layout="default" id="bkmrk-size-agents-telephon"><div class="pm-table-wrapper"><div class="sentinel-left">  
</div><table data-number-column="false"><colgroup><col></col><col></col><col></col><col></col><col></col></colgroup><tbody><tr><th aria-sort="descending" class="ak-renderer-tableHeader-sortable-column" colspan="1" data-colwidth="160" rowspan="1">Size

</th><th aria-sort="descending" class="ak-renderer-tableHeader-sortable-column" colspan="1" data-colwidth="150" rowspan="1">Agents

</th><th aria-sort="descending" class="ak-renderer-tableHeader-sortable-column" colspan="1" data-colwidth="150" rowspan="1">Telephony

</th><th aria-sort="descending" class="ak-renderer-tableHeader-sortable-column" colspan="1" data-colwidth="150" rowspan="1">Backend

</th><th aria-sort="descending" class="ak-renderer-tableHeader-sortable-column" colspan="1" data-colwidth="150" rowspan="1">Database

</th></tr><tr><td colspan="1" data-colwidth="160" rowspan="1">Small

</td><td colspan="1" data-colwidth="150" rowspan="1">&lt; 30

</td><td colspan="1" data-colwidth="150" rowspan="1">1

</td><td colspan="1" data-colwidth="150" rowspan="1">0

</td><td colspan="1" data-colwidth="150" rowspan="1">0

</td></tr><tr><td colspan="1" data-colwidth="160" rowspan="1">Medium

</td><td colspan="1" data-colwidth="150" rowspan="1">&lt; 500

</td><td colspan="1" data-colwidth="150" rowspan="1">1

</td><td colspan="1" data-colwidth="150" rowspan="1">1

</td><td colspan="1" data-colwidth="150" rowspan="1">0

</td></tr><tr><td colspan="1" data-colwidth="160" rowspan="1">Big

</td><td colspan="1" data-colwidth="150" rowspan="1">&gt; 500

</td><td colspan="1" data-colwidth="150" rowspan="1">1

</td><td colspan="1" data-colwidth="150" rowspan="1">1

</td><td colspan="1" data-colwidth="150" rowspan="1">1

</td></tr></tbody></table>

<div class="sentinel-right">  
</div></div></div>**Accepted Telecommunications Equipment**

Digium or Sangoma Cards, Xorcom, Dinstar, KHOMP, SIP Gateways, SIP Hardphones.

The teams of agents and supervisors must have the following minimum requirements:

##### **<u data-renderer-mark="true">Agent Desktop</u>**<button aria-label="Copy link to heading" class="css-779anb"><svg height="24" role="presentation" viewbox="0 0 24 24" width="24"></svg></button>

- Processor: Core i5 2.0 GHz
- Memory: 8GB RAM
- Resolution: 1366 x 768 (minimum)
- Disk: 160 GB
- Chrome browser
- 2mb symmetric internet connection

**<u data-renderer-mark="true">Supervisor Desktop</u>**

- Processor: Core i5 2.5 GHz
- Memory: 8 GB RAM
- Resolution: 1366 x 768 (minimum)
- Disk: 160 GB
- Chrome browser

[![image-1674582186330.png](https://docs.cleverideas.com.mx/uploads/images/gallery/2023-01/scaled-1680-/TL0FiRNcJF1TpbUz-image-1674582186330.png)](https://docs.cleverideas.com.mx/uploads/images/gallery/2023-01/TL0FiRNcJF1TpbUz-image-1674582186330.png)

# Component Versions<button aria-label="Copy link to heading" class="css-779anb"><svg height="24" role="presentation" viewbox="0 0 24 24" width="24"></svg></button>

BBDD: Mysql: 8 or 5.7

WebServer: NGINX 1.17. 0 (latest)

OS: Ubuntu 20.04, 18.04, 16.04

Telephony: Asterisk Modificado branch 13

Frontend: HTML5 y JS

Backend: Java 8

---

# Structure<button aria-label="Copy link to heading" class="css-779anb"><svg height="24" role="presentation" viewbox="0 0 24 24" width="24"></svg></button>

<div class="code-block  css-iwznuw" id="bkmrk-1%2Fetc%2Fintegraserver%2F"><div><div role="presentation"><div><button aria-haspopup="true" aria-label="Copy" class="copy-to-clipboard css-1pakopx" tabindex="0" type="button"><svg height="24" role="presentation" viewbox="0 0 24 24" width="24"></svg></button>  
</div></div></div><span class="prismjs css-1g7m763" data-code-lang="shell" data-ds--code--code-block="">`<span class="comment linenumber react-syntax-highlighter-line-number">1</span><span class="">/etc/IntegraServer/web/</span><span class="comment linenumber react-syntax-highlighter-line-number">2</span>                        IntegraPortalWS.war<span class="comment linenumber react-syntax-highlighter-line-number">3</span>						IntegraChannels.war<span class="comment linenumber react-syntax-highlighter-line-number">4</span>						IntegraGamification.war<span class="comment linenumber react-syntax-highlighter-line-number">5</span>                        /forms/<span class="comment linenumber react-syntax-highlighter-line-number">6</span>                        /images/<span class="comment linenumber react-syntax-highlighter-line-number">7</span>                        /uContact/<span class="comment linenumber react-syntax-highlighter-line-number">8</span>                        /workflowdesigner/<span class="comment linenumber react-syntax-highlighter-line-number">9</span>                        /formsdesigner/<span class="comment linenumber react-syntax-highlighter-line-number">10</span>                        /tmp/<span class="comment linenumber react-syntax-highlighter-line-number">11</span>						/webchatclient/<span class="comment linenumber react-syntax-highlighter-line-number">12</span> /etc/IntegraServer/reports/<span class="comment linenumber react-syntax-highlighter-line-number">13</span>/etc/IntegraServer/server/<span class="comment linenumber react-syntax-highlighter-line-number">14</span>							IntegraServer.jar<span class="comment linenumber react-syntax-highlighter-line-number">15</span>							/jasper/*.jar<span class="comment linenumber react-syntax-highlighter-line-number">16</span>							/jdbc/*.jar<span class="comment linenumber react-syntax-highlighter-line-number">17</span>							/mail/*jar<span class="comment linenumber react-syntax-highlighter-line-number">18</span>							/others/*.jar<span class="comment linenumber react-syntax-highlighter-line-number">19</span>							/ssh/*.jar<span class="comment linenumber react-syntax-highlighter-line-number">20</span>							/ws/*.jar `</span></div>---

# Network requirements for video calls<button aria-label="Copy link to heading" class="css-779anb"><svg height="24" role="presentation" viewbox="0 0 24 24" width="24"></svg></button>

**Bandwidth**

- 1MB/s simétrico

**Latency for toll-quality**

- &lt;100 ms total

**Jitter**

- &lt; 20 ms jitter

**Packet loss**

- &lt; 1 % for voice calls

**Codec**

- VP8

# Network requirements for VoIP<button aria-label="Copy link to heading" class="css-779anb"><svg height="24" role="presentation" viewbox="0 0 24 24" width="24"></svg></button>

**Bandwidth**

- 256 kbps per call

**Latency for toll-quality**

- &lt;100 ms total

**Jitter**

- &lt; 20 ms jitter

**Packet loss**

- &lt; 1 % for voice calls

**Codec**

- ulaw, alaw

---

# Required recordings Storage (audio y video)<button aria-label="Copy link to heading" class="css-779anb"><svg height="24" role="presentation" viewbox="0 0 24 24" width="24"></svg></button>

<div class="css-79elbk" id="bkmrk-duration-required-st"><div class="css-1ul6cgm" data-testid="sticky-table-fixed" mode="stick"><div class="pm-table-container with-shadow-observer" data-layout="default"><div class="pm-table-sticky-wrapper"><table data-number-column="false"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><th aria-sort="descending" class="ak-renderer-tableHeader-sortable-column" colspan="1" data-colwidth="268" rowspan="1">Duration

</th><th aria-sort="descending" class="ak-renderer-tableHeader-sortable-column" colspan="1" data-colwidth="246" rowspan="1">Required Storage for audio (.gsm)

</th><th aria-sort="descending" class="ak-renderer-tableHeader-sortable-column" colspan="1" data-colwidth="246" rowspan="1">Required Storage for video (.webm)

</th></tr></tbody></table>

</div></div></div></div><div class="pm-table-container with-shadow-observer" data-layout="default" id="bkmrk-duration-required-st-0"><div class="pm-table-wrapper"><div class="sentinel-left">  
</div><table data-number-column="false"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><th aria-sort="descending" class="ak-renderer-tableHeader-sortable-column" colspan="1" data-colwidth="268" rowspan="1">Duration

</th><th aria-sort="descending" class="ak-renderer-tableHeader-sortable-column" colspan="1" data-colwidth="246" rowspan="1">Required Storage for audio (.gsm)

</th><th aria-sort="descending" class="ak-renderer-tableHeader-sortable-column" colspan="1" data-colwidth="246" rowspan="1">Required Storage for video (.webm)

</th></tr><tr><td colspan="1" data-colwidth="268" rowspan="1">1 Minute

</td><td colspan="1" data-colwidth="246" rowspan="1">100 kb

</td><td colspan="1" data-colwidth="246" rowspan="1">1.5 MB

</td></tr><tr><td colspan="1" data-colwidth="268" rowspan="1">10 Minutes

</td><td colspan="1" data-colwidth="246" rowspan="1">1 MB

</td><td colspan="1" data-colwidth="246" rowspan="1">20 MB

</td></tr><tr><td colspan="1" data-colwidth="268" rowspan="1">20 Minutes

</td><td colspan="1" data-colwidth="246" rowspan="1">2.8 MB

</td><td colspan="1" data-colwidth="246" rowspan="1">44 MB

</td></tr><tr><td colspan="1" data-colwidth="268" rowspan="1">30 Minutes

</td><td colspan="1" data-colwidth="246" rowspan="1">3.8 MB

</td><td colspan="1" data-colwidth="246" rowspan="1">100 MB

</td></tr></tbody></table>

<div class="sentinel-right">  
</div></div></div>