# Чат-центр в 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** и уберите фокус с поля. Если все корректно, то в окне ниже отобразится чат-центр.


---

# 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.fstrk.io/knowledge_base/chat_center/iframe.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.
