# Slack i kanali

Povežite Slack sa projektom i upravljajte sesijama iz kanala.

Canonical page: https://beeuni.ai/docs/sr/connect/slack

Канал повезује платформу за ћаскање са пројектом. Порука у повезаном
каналу покреће [сесију](/docs/sr/work/sessions). Агент одговара у
истој нити.

<a id="live-channels"></a>

## Активни канали

Beeuni тренутно подржава четири платформе за канале:

- **Slack** — повежите га једним кликом преко апликације којом управља Beeuni или користите
  сопствени токен бота.
- **Microsoft Teams** — повежите га путем OAuth-а са сагласношћу администратора организације или користите сопствени
  Azure Bot (експериментално; укључите га у одељку
  [Settings → Feature flags](/docs/sr/feature-flags)).
- **Имејл** — канал заснован на AgentMail-у (експериментално; укључите га у одељку
  [Settings → Feature flags](/docs/sr/feature-flags)).
- **Глас** — гласовни канал у реалном времену (експериментално; укључите га у одељку
  [Settings → Feature flags](/docs/sr/feature-flags)). Разговарајте са агентом у реалном времену.

Само Slack и Microsoft Teams могу да се повежу путем CLI-ја и контролне табле. Имејлом
и гласом управља се преко контролне табле. Ова страница описује Slack.
Teams користи иста правила за сесије, повезивање идентитета и акредитиве.

<a id="how-a-channel-starts-a-session"></a>

## Како канал покреће сесију

Прва порука у Slack нити или Teams разговору креира сесију.
Нити припада та сесија, чак и након што се sandbox заустави и настави са радом.

У Slack каналу каснија порука стиже до сесије само ако помене
бота. Одговори без ознаке намењени су учесницима нити. Агент их чита
када га неко следећи пут помене. У директној поруци свака порука стиже
до сесије.

У Slack радном простору повезаном са више пројеката, при првом помињању
приказује се избор пројекта.

<a id="identity-linking"></a>

## Повезивање идентитета

Beeuni повезује сваког пошиљаоца поруке са Beeuni налогом пре него што агент
почне да ради за њега. Покрените `/beeuni login` у Slack-у и пратите везу да бисте се пријавили. Teams има
исти услов. Неповезаном пошиљаоцу приказује се захтев за повезивање уместо покретања
сесије.

Веза за пријаву може да се употреби једном и истиче после 10 минута. Slack налог који је
повезан са једним Beeuni налогом не може да се повеже са другим: прво покрените
`/beeuni logout`. Ако ваша организација захтева двофакторску аутентификацију,
Beeuni ће затражити други фактор пре повезивања, а
ћаскање ће користити фактор којим сте се повезали.

Свака радња се извршава као повезани налог особе која ју је покренула, уз
улогу тог налога у пројекту. Власници налога и администратори сматрају се менаџерима пројекта.

| Радња | Ко може да је обави |
|---|---|
| Поменути бота, у новој поруци или у његовој нити | Повезани налог са приступом пројекту, у складу са смерницама канала |
| Зауставити покретање | Особа којој се одговара на поруку или било ко коме је одобрен приступ тој сесији, а и даље може да користи пројекат |
| Променити пројекат, агента, модел или смернице канала | Менаџер пројекта; у директној поруци са ботом, било који члан пројекта |
| Одлучити о прегледу | Менаџер пројекта |
| Одобрити или одбити позив конектора | Менаџер пројекта или особа која је покренула сесију |
| Одобрити некоме приступ нити `owner_approval` | Власник сесије |
| `link-bot` | Менаџер пројекта |

<a id="where-credentials-live"></a>

## Где се налазе акредитиви

Токен бота повезаног канала је
[тајна](/docs/sr/project/secrets) у опсегу конектора. Не појављује се на страници „Тајне“
пројекта. Beeuni га никада не убацује у sandbox. Beeuni разрешава токен
на страни сервера када агент шаље или чита поруку у ћаскању.

<a id="connect-slack"></a>

## Повезивање Slack-а

### Покретање повезивања
У CLI-ју покрените:

```
beeuni channels connect
```

На хосту који је конфигурисан са заједничком Slack апликацијом (на пример, Beeuni Cloud),
приказује се веза за инсталацију једним кликом. Отворите је и изаберите радни простор.
Кликните на **Allow**. Додајте `--wait` да би команда наставила да проверава док се инсталација
не заврши.

Уместо тога, на контролној табли отворите страницу пројекта „Channels“ и тамо повежите Slack.
Користи исти поступак инсталације.

<a id="use-your-own-slack-app"></a>

### Коришћење сопствене Slack апликације

Да бисте користили сопствену Slack апликацију, покрените `beeuni channels manifest` да бисте приказали манифест апликације. Направите апликацију на адреси
`api.slack.com/apps` помоћу тог манифеста. Инсталирајте апликацију у радни простор.
Затим покрените:

```
beeuni channels connect --manual --bot-token xoxb-... --signing-secret ...
```

### Провера везе
```
beeuni channels status
```

Покрените `beeuni channels disconnect` да бисте уклонили везу. Све доступне заставице потражите у
[референци за CLI](/docs/sr/cli).

Повезивањем Slack-а додаје се унос `channel` [конектора](/docs/sr/connect/connectors)
у `beeuni.yaml` за вас. Никада не морате ручно да уносите овај унос.

<a id="use-slack"></a>

## Коришћење Slack-а

Помените бота уз задатак у било ком каналу коме се придружио или отворите директну
поруку. Нити припада њена сесија, као што је описано изнад. Поново помените бота
у нити канала да бисте наставили разговор. Ако га поменете без задатка,
добићете подсетник да га додате, уместо покретања сесије.

<a id="what-the-agent-can-read"></a>

## Шта агент може да чита

Агент чита Slack преко Slack
[конектора](/docs/sr/connect/connectors) пројекта (`beeuni_slack` или команде `slack`
у sandbox-у). Сви пројекти повезани са истим Slack радним простором користе
истог бота, па Beeuni ограничава свако читање на разговоре самог пројекта:

| Разговор | Читање |
|---|---|
| Канал или директна порука повезани са овим пројектом | Дозвољено |
| Нит коју је покренула или којој се придружила сесија овог пројекта, у било ком каналу | Дозвољено |
| Канал, директна порука или нит другог пројекта | Одбијено |
| Разговор са којим ниједан пројекат није повезан | Дозвољено само ако ниједан други пројекат није повезан са радним простором |

Одбијено читање враћа одговор `403` са разлогом `conversation_not_in_project` и
поруком која наводи разговор. Да бисте прочитали разговор са којим ниједан пројекат
није повезан, прво га повежите: покрените `/beeuni switch` у њему и изаберите овај
пројекат.

- Историја канала не приказује поруке из нити другог пројекта.
- `get_history` и `get_thread` додају `user_name` свакој поруци чијег аутора
  Slack може да идентификује, поред `user` ID-а. При читању се именује највише 25 особа;
  име које Slack не врати у року од 2 секунде изоставља се.
- `list_channels` приказује све јавне канале, као и приватне канале и директне поруке
  које агент може да чита.
- `channel_info` одговара за сваки јавни канал. За приватни канал или директну поруку
  важе горенаведена правила.
- `file_info` одговара када се датотека дели у разговору који агент може да
  чита или у нити овог пројекта. За `slack download` важи исто правило: на датотеку
  дељену само у разговору другог пројекта одговара се са `403`. Преузимање се прекида на 50 MB и враћа одговор
  `413`.
- `search_messages` ради само док ниједан други пројекат није повезан са
  радним простором, јер претрага не може да се ограничи на разговоре једног пројекта.
- `list_users`, `user_info` и `auth_test` читају директоријум радног простора и
  нису ограничени.

За упис важе посебна правила наведена у наставку.

<a id="what-the-agent-can-post"></a>

## Шта агент може да објављује

Објављивање, слање датотеке, измена, брисање, реаговање, придруживање каналу и
повезивање нити подлежу истом правилу: агент никада не ради унутар канала
или нити другог пројекта.

| Одредиште | Упис |
|---|---|
| Канал овог пројекта или нит коју је покренула или којој се придружила његова сесија | Дозвољено |
| Канал са којим ниједан пројекат није повезан | Дозвољено. Нова порука покреће нит овог пројекта, па се одговор који помене бота враћа у сесију |
| Директна порука са особом | Дозвољено, чак и када директна порука те особе са ботом покреће други пројекат |
| Канал или групна директна порука другог пројекта | Одбијено |
| Нит другог пројекта, у било ком разговору | Одбијено: нема одговора, измене, брисања ни реакције |

Одбијени упис враћа одговор `403` са разлогом `conversation_not_in_project`
и поруком која наводи разговор. За `slack send --file` и
`slack bind-thread` важи исто правило.

`channel` мора бити ID разговора или корисника, као што су `C0123ABCD` или
`U0123ABCD`, а не назив канала. Slack објављује у канал по називу, а назив не може да се
провери у односу на правило. Ако Slack ипак објави поруку било где осим у
провереном разговору, Beeuni је брише и одбија објаву.

Да бисте објавили у каналу којим управља други пројекат, покрените `/beeuni switch` у њему и
изаберите овај пројекат или објавите из тог пројекта.

<a id="control-a-session-with-slash-commands"></a>

## Управљање сесијом помоћу команди са косом цртом

У Slack-у их уносите као `/beeuni <command>`, а у директној поруци као обичан текст. Команде
са косом цртом не раде унутар окна директних порука Assistant-а, па Beeuni тамо
препознаје исте речи у обичном тексту.

| Команда | Функција |
|---|---|
| `login`, `logout` | Повезивање или прекидање везе између вашег Slack идентитета и налога |
| `switch`, `unbind` | Поновно повезивање овог канала са пројектом или прекид те везе |
| `projects` | Приказ пројеката са којима можете да повежете канал |
| `sessions` | Приказ недавних сесија покренутих у овом радном простору |
| `whoami` | Приказ панела канала: пројекат, агент, модел, смернице и ваш повезани идентитет |
| `models` | Избор модела за овај канал — погледајте [Модели и кључеви](#models-and-keys) |
| `agent <name>`, `model <id>` | Постављање агента или модела који користи овај канал |
| `policy <mode>` | Одређивање ко може да покреће сесије овде |
| `help` | Приказ свих команди |

`policy` прихвата `project_open` (подразумевано — сваки члан пројекта који помене
бота покреће сесију), `owner_approval` или `owner_only`. Ово је
поставка за један ресурс на једном каналу, а не улога. Не даје дозволе које
одлука заснована на улози одбија — погледајте
[Налози и приступ](/docs/sr/accounts#per-feature-access-settings).

<a id="models-and-keys"></a>

## Модели и кључеви

`/beeuni models` приказује сваки модел који можете да покренете овде, као и бирач на вебу:
Beeuni моделе и моделе којима приступате путем API кључа добављача или ChatGPT
претплате. За сваки је наведено како се плаћа. Дугачак списак је једно поље за избор
у које можете да уносите текст. Изаберите модел или унесите `/beeuni model <id>`; `/beeuni model default`
враћа избор на подразумевани модел пројекта.

Који кључеви важе зависи од разговора:

- **Директна порука са ботом** — ваши кључеви и ChatGPT претплата, као и кључеви
  дељени са пројектом. Сесије су видљиве само вама.
- **Канал или групна директна порука** — само кључеви дељени са целим пројектом. Уместо тога,
  изаберите модел који користи ваше сопствене кључеве у директној поруци.

Модел који користи кључеве користи све кључеве које смете да користите код његовог добављача и
мења их при ограничењима броја захтева. Модел канала покреће сваку нову нит; нит задржава
модел са којим је покренута. Ако нит више не може да покреће неки модел,
за ту поруку користи се замена уместо да она не успе. Погледајте
[Кључеви добављача и приступ чланова](/docs/sr/project/models#provider-keys-and-member-access).

Наставак разговора са сликом покреће се на моделу који може да чита слике. Ако
ниједан доступан модел то не може, у упиту се агенту наводи да не може да види
слику и тражи се текстуални опис, уместо да нагађа.

<a id="channel-and-people-names"></a>

## Називи канала и особа

Slack шаље ID-ове, као што су `C0123ABCD` и `U0123ABCD`. Beeuni приказује називе
које људи виде у Slack-у, а за операције задржава ID-ове.

| Где | Шта се приказује |
|---|---|
| Страница „Channels“, `beeuni channels bindings` | `#channel` за јавни или приватни канал, особа за директну поруку, чланови за групну директну поруку |
| Slack порука у сесији | Име пошиљаоца и `#channel` |
| Одговор `slack send` у сесији | `#channel` или особа из директне поруке |
| Наслов сесије | Помињања како их Slack приказује: `@Beeuni`, а не `<@U0123ABCD>` |
| Упит агента | Имена поред ID-ова: `Sam Rivera (U0123ABCD)`, `#general (C0123ABCD)` |
| Кораци плана агента у Slack-у | Особа као `@Sam Rivera`, канал као `#general`. Корак никада никога не обавештава |
| Картица за одобрење у Slack-у | Параметар канала као веза до канала, чији назив Slack приказује према вашем приступу. Параметар корисника са именом те особе |

Канал који Slack не може да пронађе приказује се као **Недоступан канал**, а његов
ID се задржава. То се дешава ако је канал избрисан или је бот уклоњен из њега.
Име које Slack не врати у року од 2 секунде изоставља се из те
поруке. Упит затим садржи само ID-ове, а тај потез се не задржава чекајући.

<a id="approvals"></a>

## Одобрења

Када је агенту потребна људска одлука да би наставио, подноси ставку за преглед.
Ако је сесија покренута из ове нити, одлука стиже овде у облику картице:
наслов, сажетак, ниво ризика и опције **Approve**, **Request changes** и
**Deny**.

Опција **Request changes** отвара поље за опис измена. Све што унесете
чува се уз одлуку и прослеђује агенту, тако да не мора поново да вас
пита. Ово је опционално — ако пошаљете празно поље, агент ће добити упутство да пита.
За опције Approve и Deny потребан је само један клик.

За одлучивање о прегледу потребан је повезани Beeuni налог са приступом за писање у
пројекту.

<a id="stopping-a-run"></a>

## Заустављање покретања

Док агент ради, његова порука уживо садржи дугме **Stop**. Оно завршава
покретање у окружењу за извршавање, а не само у поруци — ако остане активно, следећу
поруку у нити ће прогутати уместо да на њу одговори.

Покретање може да заустави особа којој се одговара на поруку, као и било ко коме је
одобрен приступ сесији и ко и даље може да користи пројекат. Посматрач
у каналу не може то да учини; уместо тога добија приватну поруку са објашњењем.

<a id="what-does-not-work"></a>

## Шта не функционише

- Команде са косом цртом не раде унутар окна директних порука Assistant-а. Уместо тога,
  унесите `/beeuni <command>` као обичан текст.
- Друге платформе за ћаскање, укључујући Telegram, тренутно нису подржани канали.
  Само Slack и Microsoft Teams могу да се повежу путем CLI-ја и контролне табле; имејл
  и глас повезују се преко контролне табле.
