> For the complete documentation index, see [llms.txt](https://docs.fstrk.io/knowledge_base/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fstrk.io/knowledge_base/chat_center/iframe.md).

# Чат-центр в iframe

## OAuth-авторизация

Для работы с Fasttrack API вам понадобится уникальный `access_token`, который необходимо передавать в заголовке для каждого запроса.

Следуйте инструкции ниже, чтобы получить ключ доступа для вашего проекта.

{% stepper %}
{% step %}
**Подготовьте `redirect_uri`**

`redirect_uri` — это URL, на который Fasttrack выполняет редирект после успешной авторизации. В параметрах запроса будет передан временный код (`code`), который необходимо использовать для получения `access_token`.
{% endstep %}

{% step %}
**Зарегистрируйте приложение в Fasttrack**

{% hint style="warning" %}
На данный момент регистрация клиентских приложений для работы с API Fasttrack осуществляется вручную через менеджера проекта.
{% endhint %}

Обратитесь к менеджеру проекта с запросом на подключение к Fasttrack API и предоставьте ваш `redirect_uri` для регистрации приложения.

После регистрации вы получите:

* `client_id` — уникальный идентификатор вашего приложения;
* `client_secret` — секретный ключ, используемый для аутентификации.

{% hint style="danger" %}
Параметр **client\_secret** используется для подтверждения подлинности приложения в процессе OAuth. Это чувствительный параметр, который необходимо защищать так же, как и любые другие учётные данные.
{% endhint %}
{% endstep %}

{% step %}
**Получите временный код**

Сформируйте URL следующего вида:

```url
https://dashboard.fstrk.io/integrations/oauth/?{параметры}
```

Параметры после знака `?` :

* `client_id` <mark style="color:red;">\*</mark> — идентификатор вашего приложения (выдаётся при регистрации);
* `redirect_uri` <mark style="color:red;">\*</mark> — URL, на который будет выполнен редирект после авторизации;
* `state` — произвольная строка, которая будет возвращена вместе с кодом (используется для проверки целостности запроса).

{% code title="url example" overflow="wrap" %}

```url
https://dashboard.fstrk.io/integrations/oauth/?client_id=1&redirect_uri=https://example.com/oauth/&state=dummy
```

{% endcode %}

Откройте сформированную ссылку в браузере. Вы будете перенаправлены на страницу выбора проекта. Если у вас доступ к нескольким проектам, выберите тот, для которого требуется получить `access_token`.

После выбора проекта вы будете перенаправлены на указанный `redirect_uri`. В адресной строке будут переданы параметры `code` и `state`.
{% endstep %}

{% step %}
**Получите `access_token`**

Получив временный код (`code`), используйте его в API-запросе для получения `access_token` в рамках авторизации OAuth.

{% code title="request example" %}

```sh
curl -X POST \
--location https://dashboard.fstrk.io/api/partners/oauth/ \
--header 'Content-Type: application/json' \
--data '{
  "client_id": "<CLIENT_ID>",
  "client_secret": "<CLIENT_SECRET>",
  "grant_type": "code",
  "code": "<CODE>"
}'
```

{% endcode %}

В случае успешного запроса API возвращает HTTP-статус <mark style="color:green;">`200 OK`</mark> и JSON-ответ, содержащий `access_token`.

{% code title="response example" %}

```json
{
  "access_token": "string"
}
```

{% endcode %}
{% endstep %}
{% endstepper %}

## Список доменов

Для безопасной работы чат-центра Fasttrack во встраиваемом режиме (`<iframe>`) необходимо заранее указать один или несколько доменов, с которых будет осуществляться загрузка интерфейса и выполняться связанные с ним запросы.

Соберите список всех доменов, с которых планируется загрузка чат-центра и передайте список вашему менеджеру — он добавит эти домены в настройки проекта.

{% hint style="warning" %}
Чат-центр загрузится в \<iframe> только при обращении с доменов, добавленных в белый список. Все остальные попытки загрузки будут автоматически заблокированы.
{% endhint %}

## Авторизация операторов

Чат-центр может быть открыт только от имени оператора, зарегистрированного в Fasttrack. Такой оператор должен быть заранее добавлен в систему, успешно авторизован и иметь права доступа к интерфейсу и необходимому функционалу чат-цента.

## Ссылка для iframe

Для загрузки чат-центра необходимо получить временную ссылку в контексте конкретного клиента и оператора. Эта ссылка будет использоваться в качестве значения `src` для тега `<iframe>`.

Загрузка чат-центра осуществляется по временной ссылке, сформированной на основе переданных данных о клиенте и операторе.&#x20;

Ссылка создаётся через API и содержит токен, который определяет рабочий контекст: от имени какого оператора и для какого клиента должен быть открыт интерфейс.

Полученная ссылка используется в атрибуте `src` тега \<iframe> и обеспечивает корректную авторизацию, а также загрузку чата с клиентом.&#x20;

{% hint style="info" %}
Если у клиента есть несколько активных чатов в разных каналах, откроется тот, в котором было зафиксировано последнее входящее сообщение. В интерфейсе чат-центра доступно переключение между каналами клиента.
{% endhint %}

Метод для получения ссылки на чат-центр:

```
POST /api/partners/iframe/
```

Тело запроса:

```json
{
  "operator": {
    "uuid": "378737c4-e659-479a-9ba9-5307b81084a5"
    // "email": "operator@example.com"
  },
  "profile": {
    "uuid": "f6e9f169-f4ce-4e3b-b340-d9b36133aec1"
    // "phone_number": "+79991112233",
    // "external_id": "client-123"
  }
}
```

Пример запроса:

```sh
curl -X POST \ 
  --location https://dashboard.fstrk.io/api/partners/iframe/ \
  --header "Content-Type: application/json" \
  --header "Authorization: Bearer <access_token>" \
  --data '{
    "operator": {
      "uuid": "378737c4-e659-479a-9ba9-5307b81084a5"
      // или "email": "operator@example.com"
    },
    "profile": {
      "uuid": "f6e9f169-f4ce-4e3b-b340-d9b36133aec1"
      // или "external_id": "client-123"
      // или "phone_number": "+79991112233"
    }
  }'
```

Промер ответа:

```json
{
  "url": "https://dashboard.fstrk.io/chat-center/...<временная ссылка с токеном>",
  "expired_at": "2025-05-20T21:15:27.121669+00:00"
}
```

* `url` — одноразовая ссылка, по которой загружается чат-центр в нужном контексте (оператор + клиент). Используется в \<iframe>.
* `expired_at` — срок действия ссылки. После истечения срока необходимо запросить новую.

## Тестирование

Протестировать загрузку чат-центра можно по ссылке:\
<https://fstrk.cc/example/iframe>

Вставьте ссылку в поле **URL for iframe** и уберите фокус с поля. Если все корректно, то в окне ниже отобразится чат-центр.
