---
url: https://next.zammad.org/sr/reference/rest-api/cti.md
---

# Општи CTI

## Увод

Ова страница описује опсег и функционалности API-ја за општи CTI.

::: warning

* Аутентификација на овом ендпоинту ради фундаментално другачије у поређењу са
  осталим деловима API-ја.
* API клијенти *не раде* са CTI ендпоинтима осим ако експлицитно није наведено
  од стране произвођача клијента!
* CTI ендпоинти су релевантни само за PBX системе.
  :::

## Функције

Ево кратког и сажетог списка могућности које овај CTI API пружа.

### Долазнo

* Функције дневника позивача за ваше оператере.
* Блокирање бројева позивача током сигнализације.

### Одлазнo

* Функције дневника позивача за ваше оператере.
* Подешавање одлазних бројева позивача у зависности од циља броја позивача.

### Путања

Крајња тачка се може пронаћи у интеграцији за општи CTI и садржи јединствени
токен који служи за аутентификацију. Побрините се да је ова URL адреса
крајње тачке безбедна.

::: info
Конфигурација за општи CTI и исправан ендпоинт могу се пронаћи у вашем
Zammad-у у администраторском интерфејсу под *Систем > Интеграције > CTI (опште)*.

Такође, имајте на уму наведене захтеве и ограничења.
Све опције које захтевају одговоре (нпр. блокирање, манипулисање одлазним
бројевима позивача) ослањају се на конфигурације у оквиру Zammad CTI интеграције
странице.
:::

::: tip
Постоје две опције како послати релевантне податке на Zammad путем `POST` методе:

* JSON (препоручено)
* Form-дата
  :::

### Догађаји

Постоји више догађаја везаних за током позива. Ове акције увек потичу из
вашег PBX система и могу бити:

* "newCall" догађај (иницијализација позива)
* "хангуп" догађај (завршетак позива)
* "answer" догађај (такође познат као подизање слушалке)

У неким ситуацијама Zammad може послати одговор на ваше PBX позиве
(нпр. одбијање) ако сте блокирали одређеног позивача. Zammad никада неће
иницирати специфичне акције са вашим PBX-om. Zammad је пасивни компонент у
свим описаним случајевима.

### Коришћени примери

**Пример:**
У наставку су послати позиви са следећом конфигурацијом. Ово је
важно за вас да бисте разумели одговоре које приказујемо овде.

**Одлазни:**

* Циљани број позивача `4989*` подешава одлазни број позивача `498999998145`
  са напоменом "Сви из Минхена"
* Циљани број позивача `4930*` подешава одлазни број позивача `493023125877`
  "Сви из Berlin-а"

**Остала подешавања:**

* Подразумевани број позивача за одлазне позиве `496990009111`

## Догађај Новог Позива

### Уопштено

Доступни `атрибути` и :

`event`&#x20;
:
Обавештава Zammad да постоји нови позив.

`from`&#x20;
:
Број који је иницирао позив. Може бити и `anonymous`.

`to`&#x20;
:
Број који се позива.

`direction`&#x20;
:
Смер позива. Ако ваш оператер иницира позив, ово ће бити `out`. Позиви
од споља ка вама су `in`.

`callId`&#x20;
: ID који је јединствен за позив. Zammad ће користити овај ID да идентификује
постојећи позив уз следеће акције (нпр. као одговор или прекид).

`user`&#x20;
: Стварно име учесника. Можда ћете морати да доставите параметре у облику низа (`[]`)
у зависности од методе позива коју одаберете. Ако је смер `out`,
ово је име особе/особа које звони. Ако је смер `in`, ово
је име особе/особа која се зове.

`queue`&#x20;
: Опционо име реда чекања, ова опција је релевантна за филтер дневника позивача.
Ова вредност је опциона.

### Одлазнo

:::: details

::: tabs key:cti

\=== JSON

Послат `POST` захтев:
`https://{FQDN-Zammad}/api/v1/cti/{instance specific token}`

Payload:

```json
{
  "event": "newCall",
  "from": "493023125741",
  "to": "492214710334",
  "direction": "out",
  "callId": "f4ebd2be-7b9a-4d58-94c2-eb06a3c2ce76",
  "user": "Lauren Brooks"
}

```

Одговор:

```json
{
  "action": "dial",
  "caller_id": "496990009111",
  "number": "492214710334"
}

```

Пример цурл команде:

```sh
curl --request POST 'https://{FQDN-Zammad}/api/v1/cti/{instance specific token}' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "event": "newCall",
    "from": "493023125741",
    "to": "492214710334",
    "direction": "out",
    "callId": "f4ebd2be-7b9a-4d58-94c2-eb06a3c2ce76",
    "user": "Lauren Brooks"
  }'

```

\=== Form-дата

Послат `POST` захтев:
`https://{FQDN-Zammad}/api/v1/cti/{instance specific token}`

Payload:

```
event:"newCall"
from:"493023125741"
to:"492214710334"
direction:"out"
callId:"f0871278-0600-4f5c-a746-bec3acf04f41"
user:"Lauren Brooks"

```

Повратне вредности:

```json
{
  "action": "dial",
  "caller_id": "496990009111",
  "number": "492214710334"
}

```

Пример цурл команде:

```sh
curl --request POST 'https://{FQDN-Zammad}/api/v1/cti/{instance specific token}' \
  --form 'event="newCall"' \
  --form 'from="493023125741"' \
  --form 'to="492214710334"' \
  --form 'direction="out"' \
  --form 'callId="f0871278-0600-4f5c-a746-bec3acf04f41"' \
  --form 'user="Lauren Brooks"'

```

:::
::::

### Долазнo

:::: details

::: tabs key:cti

\=== JSON

Payload:

```json
{
  "event": "newCall",
  "from": "493023125741",
  "to": "492214710334",
  "direction": "in",
  "callId": "307fa962-de8d-4ffc-817b-7f6993204159",
  "user": [
    "Lauren Brooks",
    "Ethan Kwan"
  ]
}

```

Одговор:

```json
{}

```

Пример цурл команде:

```sh
curl --request POST 'https://{FQDN-Zammad}/api/v1/cti/{instance specific token}' \
  --header 'Content-Type: application/json' \
  --data-raw '{
     "event": "newCall",
     "from": "493023125741",
     "to": "492214710334",
     "direction": "in",
     "callId": "307fa962-de8d-4ffc-817b-7f6993204159",
     "user": ["Lauren Brooks", "Ethan Kwan"]
  }'

```

\=== Form-дата

Payload:

```
event:"newCall"
from:"493023125741"
to:"492214710334"
direction:"in"
callId:"25641e3f-3317-4c48-80b3-fc573c7ffe2b"
user[]:"Lauren Brooks"
user[]:"Ethan Kwan"

```

Повратне вредности:

```json
{}

```

Пример цурл команде:

```sh
curl --request POST 'https://{FQDN-Zammad}/api/v1/cti/{instance specific token}' \
  --form 'event="newCall"' \
  --form 'from="493023125741"' \
  --form 'to="492214710334"' \
  --form 'direction="in"' \
  --form 'callId="25641e3f-3317-4c48-80b3-fc573c7ffe2b"' \
  --form 'user[]="Lauren Brooks"' \
  --form 'user[]="Ethan Kwan"'

```

:::
::::

### Одговори Специфични за Ситуацију

У зависности од одабраног смера позива, Zammad ће вратити или (опционо)
конфигурисан ID позива или (опционо) блокирати позивача. Ако ваш Zammad није
конфигурисао једну или обе опције, одговор ће бити празан.

::: info
Ово мора да буде подржано од стране вашег PBX-a како би функционисало.
:::

#### Одбијање блокираних бројева позивача

Ако долазећи нови позив одговара броју за блокирање, Zammad ће вратити
следеће.

```json
{
  "action": "reject",
  "reason": "busy"
}

```

Ако се не поклопи ниједан број за блокирање, Zammad ће вратити следеће.

```json
{}

```

::: warning
Ваш PBX и даље мора да заврши позив (догађај хангуп). У супротном
позив неће само се појавити у Zammad дневнику позивача, већ ће се појавити као
позив у звону.
:::

#### Подешавање специфичног одлазног броја позивача

У случају да ваша инстанца има конфигурисан одговарајући пребрисани број
позивача, Zammad ће вратити следећи payload.

```json
{
  "action": "dial",
  "callerId": "493055571642",
  "number": "491711234567890"
}

```

Ако се не пронађе подударност за пребрисивање или ништа нисте конфигурисали,
Zammad ће вратити следеће.

```json
{}

```

## Догађај Одговарања на Позив

### Уопштено

Доступни `атрибути` и :

`event` :
:
Обавештава Zammad да је неко одговорио на позив.

`from` :
:
Број који је иницирао позив.

`to` :
:
Број који се позива.

`direction` :
:
Смер позива – ако ваш оператер иницира позив, ово ће бити `out`.

`callId` :
: ID који је јединствен за позив. Zammad ће користити овај ID за идентификацију
постојећег позива при даљим акцијама (нпр. одговарање или прекид).

`answeringNumber` :
:   Zammad ће потражити корисника са датом вредношћу, следећи атрибути се процењују редом:
\- `user.phone`
\- `user.login`
\- `user.if`
Ова вредност је опционална.

`user` :
: Право име (имена) укљученог корисника. Можда ћете морати да наведете параметре у облику низа (`[]`)
у зависности од изабране методе позива. Ако је смер `out`,
ово је име позивајуће особе/особа. Ако је смер `in`, ово је
име биране особе/особа. Ова вредност је опционална.

Постоје две могућности за слање одговарајућих података на Zammad путем
`POST` методе.

### Одлазнo

:::: details

::: tabs key:cti

\=== JSON

Послат `POST`-захтев:
`https://{FQDN-Zammad}/api/v1/cti/{instance specific token}`

Подаци:

```json
{
  "event": "answer",
  "from": "493023125741",
  "to": "492214710334",
  "direction": "out",
  "callId": "9f1840cb-8be9-4d3a-8200-3da2937085f0",
  "caller": "Lauren Brooks"
}

```

Одговор:

```json
{}

```

Пример цУРЛ команде:

```sh
curl --request POST 'https://{FQDN-Zammad}/api/v1/cti/{instance specific token}' \
  --header 'Content-Type: application/json' \
  --data-raw '{
     "event": "answer",
     "from": "493023125741",
     "to": "492214710334",
     "direction": "out",
     "callId": "9f1840cb-8be9-4d3a-8200-3da2937085f0",
     "caller": "Lauren Brooks"
  }'

```

\=== Form-дата

Послат `POST`-захтев:
`https://{FQDN-Zammad}/api/v1/cti/{instance specific token}`

Подаци:

```
event:"answer"
from:"493023125741"
to:"492214710334"
direction:"out"
callId:"371e2cd7-67ff-4fd9-892b-030c8d128fb1"
caller[]:"Lauren Brooks"
caller[]:"Emily Tran"

```

Враћа се:

```json
{}

```

Пример цУРЛ команде:

```sh
curl --request POST 'https://{FQDN-Zammad}/api/v1/cti/{instance specific token}' \
  --form 'event="answer"' \
  --form 'from="493023125741"' \
  --form 'to="492214710334"' \
  --form 'direction="out"' \
  --form 'callId="371e2cd7-67ff-4fd9-892b-030c8d128fb1"' \
  --form 'caller[]="Lauren Brooks"' \
  --form 'caller[]="Emily Tran"'

```

:::
::::

### Долазнo

:::: details

::: tabs key:cti

\=== JSON

Подаци:

```json
{
  "event": "answer",
  "from": "493023125741",
  "to": "492214710334",
  "direction": "in",
  "callId": "307fa962-de8d-4ffc-817b-7f6993204159",
  "answeringNumber": "emily@fastlane.inc",
  "caller": [
    "Lauren Brooks",
    "Emily Tran"
  ]
}

```

Одговор:

```json
{}

```

Пример цУРЛ команде:

```sh
curl --request POST 'https://{FQDN-Zammad}/api/v1/cti/{instance specific token}' \
  --header 'Content-Type: application/json' \
  --data-raw '{
     "event": "answer",
     "from": "493023125741",
     "to": "492214710334",
     "direction": "in",
     "callId": "307fa962-de8d-4ffc-817b-7f6993204159",
     "answeringNumber": "emily@fastlane.inc",
     "caller": ["Lauren Brooks", "Emily Tran"]
  }'

```

\=== Form-дата

Подаци:

```
event:"answer"
from:"493023125741"
to:"492214710334"
direction:"in"
callId:"61868f1e-2171-4313-970b-25982f0c5ce1"
answeringNumber:"emily@fastlane.inc"
caller="Emily Tran"

```

Враћа се:

```json
{}

```

Пример цУРЛ команде:

```sh
curl --request POST 'https://{FQDN-Zammad}/api/v1/cti/{instance specific token}' \
  --form 'event="answer"' \
  --form 'from="493023125741"' \
  --form 'to="492214710334"' \
  --form 'direction="in"' \
  --form 'callId="61868f1e-2171-4313-970b-25982f0c5ce1"' \
  --form 'answeringNumber="emily@fastlane.inc"' \
  --form 'caller="Emily Tran"'

```

:::
::::

## Прекид позива

### Уопштено

`event` :
:
Обавештава Zammad да је позив прекинут.

`from` :
:
Број који је иницирао позив.

`to` :
:
Број који се позива.

`direction` :
:
Смер позива – ако ваш оператер иницира позив, ово ће бити `out`.

`callId` :
: ID који је јединствен за позив. Zammad ће користити овај ID за идентификацију
постојећег позива при даљим акцијама (нпр. одговарање или прекид).

`cause`
:   Ово дефинише разлог прекида позива. Zammad процењује узрок и приказује
нпр. пропуштене позиве у дневнику позиваца. Могуће вредности су:
\- `normalClearing` (једна од страна је прекинула везу након успостављања позива)
\- `busy` (бирена страна је била заузета)
\- `cancel` (позивач је прекинуо везу пре него што је бирена страна одговорила)
\- `noAnswer` (бирена страна је одбила позив, нпр. путем DND подешавања)
\- `congestion` (бирена страна није могла бити достигнута)
\- `notFound` (бирени број не постоји или бирена страна је ван мреже)
\- `forwarded` (позив је преусмерен на другу страну)

`answeringNumber` :
:   Zammad ће потражити корисника са датом вредношћу, следећи атрибути се процењују редом:
\- `user.phone`
\- `user.login`
\- `user.if`
Ова вредност је опционална.

### Одлазнo

:::: details

::: tabs key:cti

\=== JSON

Послат `POST`-захтев:
`https://{FQDN-Zammad}/api/v1/cti/{instance specific token}`

Подаци:

```json
{
  "event": "hangup",
  "from": "493023125741",
  "to": "492214710334",
  "direction": "out",
  "callId": "f4ebd2be-7b9a-4d58-94c2-eb06a3c2ce76",
  "cause": "cancel"
}

```

Одговор:

```json
{}

```

Пример цУРЛ команде:

```sh
curl --request POST 'https://{FQDN-Zammad}/api/v1/cti/{instance specific token}' \
  --header 'Content-Type: application/json' \
  --data-raw '{
     "event": "hangup",
     "from": "493023125741",
     "to": "492214710334",
     "direction": "out",
     "callId": "f4ebd2be-7b9a-4d58-94c2-eb06a3c2ce76",
     "cause": "cancel"
  }'

```

\=== Form-дата

Послат `POST`-захтев:
`https://{FQDN-Zammad}/api/v1/cti/{instance specific token}`

Подаци:

```
event:"hangup"
from:"493023125741"
to:"492214710334"
direction:"out"
callId:"da7cf8b8-2de2-4120-93c8-7db1f55225dc"
cause:"cancel"

```

Враћа се:

```json
{}

```

Пример цУРЛ команде:

```sh
curl --request POST 'https://{FQDN-Zammad}/api/v1/cti/{instance specific token}' \
  --form 'event="hangup"' \
  --form 'from="493023125741"' \
  --form 'to="492214710334"' \
  --form 'direction="out"' \
  --form 'callId="da7cf8b8-2de2-4120-93c8-7db1f55225dc"' \
  --form 'cause="cancel"'

```

:::
::::

### Долазнo

:::: details

::: tabs key:cti

\=== JSON

Подаци:

```json
{
  "event": "hangup",
  "from": "493023125741",
  "to": "492214710334",
  "direction": "in",
  "callId": "2d77882f-68df-40f0-8c62-b642589c00bc",
  "answeringNumber": "emily@fastlane.inc",
  "cause": "normalClearing"
}

```

Одговор:

```json
{}

```

Пример цУРЛ команде:

```sh
curl --request POST 'https://{FQDN-Zammad}/api/v1/cti/{instance specific token}' \
  --header 'Content-Type: application/json' \
  --data-raw '{
     "event": "hangup",
     "from": "493023125741",
     "to": "492214710334",
     "direction": "in",
     "callId": "307fa962-de8d-4ffc-817b-7f6993204159",
     "answeringNumber": "emily@fastlane.inc",
     "cause": "normalClearing"
  }'

```

\=== Form-дата

Подаци:

```
event:"hangup"
from:"493023125741"
to:"492214710334"
direction:"in"
callId:"2d77882f-68df-40f0-8c62-b642589c00bc"
answeringNumber:"emily@fastlane.inc",
cause:"normalClearing"

```

Одговор:

```json
{}

```

Пример цУРЛ команде:

```sh
curl --request POST 'https://{FQDN-Zammad}/api/v1/cti/{instance specific token}' \
  --form 'event="hangup"' \
  --form 'from="493023125741"' \
  --form 'to="492214710334"' \
  --form 'direction="in"' \
  --form 'callId="2d77882f-68df-40f0-8c62-b642589c00bc"' \
  --form 'answeringNumber="emily@fastlane.inc"' \
  --form 'cause="normalClearing"'

```

:::
::::
