# WIDGET API

### Přístup k API

Po nahrání tlačítka se volá callback funkce `$owidgetOnLoad`. Pomocí objektu `owidget` lze volat funkce API.

```html
<script type="text/javascript">
  (function () {
    var scr = document.createElement('script');
    scr.type = 'text/javascript';
    scr.async = true;
    scr.charset = 'UTF-8';
    scr.src = '//app.mluvii.com/widget/OOWidget.js';
    scr.$owidgetOnLoad = function (owidget) {
      if (!owidget.isSupported) {
        return;
      }
      // owidget.init(...);
      // ...
      // owidget.connectToServer();
    };
    var ffs = document.getElementsByTagName('script')[0];
    ffs.parentNode.insertBefore(scr, ffs);
  })();
</script>
```

## Funkce api

### `init`

#### Syntaxe

`owidget.init(companyId, [widgetPreset], [language], [scope]);`

#### Parametry

* `companyId` GUID identifikující společnost.
* `widgetPreset` Název balíčku. Pokud parametr chybí, použije se výchozí balíček.
* `language` Jazyk balíčku. **Pokud parametr chybí, rozhodují další parametry viz níže**
* `scope` Nepovinný parametr. Balíček se při inicializaci pokusí obnovit možnou probíhající konverzaci, pouze pokud byla započata v balíčku inicializovaném se stejnou `scope` proměnnou.

{% hint style="success" %}
*Jazyk se určuje:*<br>

1. *podle owidget.init - parametr language*
2. *když je prázdný tak podle jazyka stránky (header language - F12 - Elements)*
3. *když není určený, pak rozhoduje jazyk prohlížeče*
   {% endhint %}

### `connectToServer`

Nahraje konfiguraci ze serveru a spustí sledování stavu skupin operátorů.

#### Syntaxe

`owidget.connectToServer();`

### `setAppEventCallback`

Nastaví funkci zpětného volání pro sledování definovaných událostí.

#### Syntaxe

`owidget.setAppEventCallback(callback);`

#### Parametry

* `callback` Funkce zpětného volání: `function (e) { }`. Funkce bude zavolána pokaždé, když nastane jedna z definovaných událostí. Parametr funkce `e` bude obsahovat strukturu popisující událost s prvky:
  * `type` Typ události.

#### Typy událostí

* `chatWindowOpen` Okno chatu otevřeno.
* `chatWindowClosed` Okno chatu zavřeno.
* `chatSessionCreated` Klient čeká na operátora.
* `chatSessionStarted` Začalo sezení s operátorem.
* `chatSessionEnded` Sezení skončilo.

### `setStatusUpdateCallback`

Nastaví funkci zpětného volání pro sledování stavu tlačítka.

#### Syntaxe

`owidget.setStatusUpdateCallback(callback);`

#### Parametry

* `callback` Funkce zpětného volání: `function (code) { }`. Funkce bude zavolána pokaždé, když se změní stav tlačítka. Parametr `code` nabývá jedné ze tří popsaných hodnot.

#### Kódy stavu tlačítka

* `0` tlačítko je „offline“
* `1` tlačítko je „online“
* `2` tlačítko je „busy“

### `setCustomNumberNormalization`

Nastaví vlastní funkci na normalizaci telefonního čísla

#### Syntaxe

`owidget.setCustomNumberNormalization(callback);`

#### Parametry

* `callback` Funkce zpětného volání: `function (phoneNumber) { }`. Funkce nahradí výchozí funkci pro normalizaci telefonního čísla

#### Očekávané návratové hodnoty

* `null` Pokud je číslo v nevalidním formátu, má funkce vrátit null
* `Normalizované číslo` Pokud je zadané číslo ve správném formátu vrací se string s telefonním číslem v mezinárodním formátu např. +420 777 666 555 i pokud byl vstup pouze 777 666 555


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mluvii.com/pro-it-specialisty/widget-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
