Skip to content

Commit 546a759

Browse files
Merge branch 'main' into update-maintainers-guide-for-release
2 parents baa1d15 + a2120d2 commit 546a759

File tree

15 files changed

+2154
-3280
lines changed

15 files changed

+2154
-3280
lines changed
Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Agents & Assistants
2+
title: AI Apps
33
lang: en
44
---
55

@@ -9,11 +9,11 @@ If you don't have a paid workspace for development, you can join the [Developer
99

1010
:::
1111

12-
Agents and assistants comprise a new messaging experience for Slack. If you're unfamiliar with using agents and assistants within Slack, you'll want to read the [API documentation on the subject](https://api.slack.com/docs/apps/ai). Then come back here to implement them with Bolt!
12+
AI apps comprise a new messaging experience for Slack. If you're unfamiliar with using AI apps within Slack, you'll want to read the [API documentation on the subject](https://api.slack.com/docs/apps/ai). Then come back here to implement them with Bolt!
1313

14-
## Configuring your app to support assistants {#configuring-your-app}
14+
## Configuring your app to support AI apps features {#configuring-your-app}
1515

16-
1. Within [App Settings](https://api.slack.com/apps), enable the **Agents & Assistants** feature.
16+
1. Within [App Settings](https://api.slack.com/apps), enable the **Agents & AI Apps** feature.
1717

1818
2. Within the App Settings **OAuth & Permissions** page, add the following scopes:
1919
* [`assistant:write`](https://api.slack.com/scopes/assistant:write)
@@ -27,7 +27,7 @@ Agents and assistants comprise a new messaging experience for Slack. If you're u
2727

2828
## The `Assistant` class instance {#assistant-class}
2929

30-
The [`Assistant`](/reference#the-assistantconfig-configuration-object) class can be used to handle the incoming events expected from a user interacting with an assistant in Slack. A typical flow would look like:
30+
The [`Assistant`](/reference#the-assistantconfig-configuration-object) class can be used to handle the incoming events expected from a user interacting with an AI app in Slack. A typical flow would look like:
3131

3232
1. [The user starts a thread](#handling-a-new-thread). The `Assistant` class handles the incoming [`assistant_thread_started`](https://api.slack.com/events/assistant_thread_started) event.
3333
2. [The thread context may change at any point](#handling-thread-context-changes). The `Assistant` class can handle any incoming [`assistant_thread_context_changed`](https://api.slack.com/events/assistant_thread_context_changed) events. The class also provides a default `context` store to keep track of thread context changes as the user moves through Slack.
@@ -71,23 +71,23 @@ assistant.userMessage((req, ctx) -> {
7171
app.assistant(assistant);
7272
```
7373

74-
While the `assistant_thread_started` and `assistant_thread_context_changed` events do provide Slack-client thread context information, the `message.im` event does not. Any subsequent user message events won't contain thread context data. For that reason, Bolt not only provides a way to store thread context — the `threadContextService` property — but it also provides a `DefaultAssistantThreadContextService` instance that is utilized by default. This implementation relies on storing and retrieving [message metadata](https://api.slack.com/metadata/using) as the user interacts with the assistant.
74+
While the `assistant_thread_started` and `assistant_thread_context_changed` events do provide Slack-client thread context information, the `message.im` event does not. Any subsequent user message events won't contain thread context data. For that reason, Bolt not only provides a way to store thread context — the `threadContextService` property — but it also provides a `DefaultAssistantThreadContextService` instance that is utilized by default. This implementation relies on storing and retrieving [message metadata](https://api.slack.com/metadata/using) as the user interacts with the app.
7575

7676
If you do provide your own `threadContextService` property, it must feature `get` and `save` methods.
7777

7878
:::tip
79-
Be sure to give the [assistants reference docs](/reference#agents--assistants) a look!
79+
Be sure to give the [AI apps reference docs](/reference#agents--assistants) a look!
8080
:::
8181

8282
## Handling a new thread {#handling-a-new-thread}
8383

84-
When the user opens a new thread with your assistant, the [`assistant_thread_started`](https://api.slack.com/events/assistant_thread_started) event will be sent to your app.
84+
When the user opens a new thread with your AI app, the [`assistant_thread_started`](https://api.slack.com/events/assistant_thread_started) event will be sent to your app.
8585

8686
:::tip
87-
When a user opens an assistant thread while in a channel, the channel info is stored as the thread's `AssistantThreadContext` data. You can grab that info by using the `context.getThreadContext()` utility, as subsequent user message event payloads won't include the channel info.
87+
When a user opens a thread with your app while in a channel, the channel info is stored as the thread's `AssistantThreadContext` data. You can grab that info by using the `context.getThreadContext()` utility, as subsequent user message event payloads won't include the channel info.
8888
:::
8989

90-
### Block Kit interactions in the assistant thread {#block-kit-interactions}
90+
### Block Kit interactions in the AI app thread {#block-kit-interactions}
9191

9292
For advanced use cases, Block Kit buttons may be used instead of suggested prompts, as well as the sending of messages with structured [metadata](https://api.slack.com/metadata) to trigger subsequent interactions with the user.
9393

@@ -181,17 +181,17 @@ If you use the built-in `Assistant` middleware without any custom configuration,
181181

182182
As long as you use the built-in approach, you don't need to store the context data within a datastore. The downside of this default behavior is the overhead of additional calls to the Slack API. These calls include those to `conversations.history`, which are used to look up the stored message metadata that contains the thread context (via `context.getThreadContextService().findCurrentContext(channelId, threadTs)`).
183183

184-
If you prefer storing this data elsewhere, you can pass your own custom `AssistantThreadContextService` implementation to the `Assistant` constructor. We provide `DefaultAssistantThreadContextService`, which is a reference implementation that uses the assistant thread message metadata. You can use this for production apps, but if you want to use a different datastore for it, you can implement your own class that inherits `AssistantThreadContextService` interface.
184+
If you prefer storing this data elsewhere, you can pass your own custom `AssistantThreadContextService` implementation to the `Assistant` constructor. We provide `DefaultAssistantThreadContextService`, which is a reference implementation that uses the AI app thread message metadata. You can use this for production apps, but if you want to use a different datastore for it, you can implement your own class that inherits `AssistantThreadContextService` interface.
185185

186186
```java
187187
Assistant assistant = new Assistant(new YourOwnAssistantThreadContextService());
188188
```
189189

190190
## Handling the user response {#handling-user-response}
191191

192-
When the user messages your assistant, the [`message.im`](https://api.slack.com/events/message.im) event will be sent to your app.
192+
When the user messages your app, the [`message.im`](https://api.slack.com/events/message.im) event will be sent to your app.
193193

194-
Messages sent to the assistant do not contain a [subtype](https://api.slack.com/events/message#subtypes) and must be deduced based on their shape and any provided [message metadata](https://api.slack.com/metadata/using).
194+
Messages sent to the app do not contain a [subtype](https://api.slack.com/events/message#subtypes) and must be deduced based on their shape and any provided [message metadata](https://api.slack.com/metadata/using).
195195

196196
There are three utilities that are particularly useful in curating the user experience:
197197
* [`say`](https://tools.slack.dev/bolt-python/api-docs/slack_bolt/#slack_bolt.Say)

docs/docusaurus.config.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ const config = {
4848
"@docusaurus/plugin-client-redirects",
4949
{
5050
redirects: [
51+
{
52+
to: '/guides/ai-apps',
53+
from: '/guides/assistants'
54+
}
5155
],
5256
createRedirects(existingPath) {
5357
if (existingPath.includes('/guides')) {

docs/footerConfig.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ const footer = {
44
items: [
55
{
66
html: `
7-
<div style="display: flex; gap: 20px; max-width: 50%">
7+
<div class="footer-spaced">
88
<a href="https://slack.com/terms-of-service/user">Terms of Service</a>
99
<a href="https://slack.com/trust/privacy/privacy-policy">Privacy Information</a>
10-
</div>
11-
©2024 Slack Technologies, LLC, a Salesforce company. All rights reserved. Various trademarks held by their respective owners.
12-
`,
10+
</div>
11+
<div>
12+
©2025 Slack Technologies, LLC, a Salesforce company. All rights reserved. Various trademarks held by their respective owners.
13+
</div>
14+
`,
1315
},
1416
],
1517
},

docs/navbarConfig.js

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
const navbar = {
2+
style: 'dark',
23
title: 'Slack Developer Tools',
34
logo: {
4-
src: 'img/slack-logo.svg',
5+
src: 'img/slack-logo-on-white.png',
56
href: 'https://tools.slack.dev',
67
},
78
items: [
@@ -60,26 +61,24 @@ const navbar = {
6061
target: '_self',
6162
},
6263
{
63-
type: 'dropdown',
64-
label: 'Community',
64+
to: 'https://api.slack.com',
65+
label: 'API Docs',
6566
position: 'right',
66-
items: [
67-
{
68-
label: 'Community tools',
69-
to: 'https://tools.slack.dev/community-tools',
70-
target: '_self',
71-
},
72-
{
73-
label: 'Slack Community',
74-
to: 'https://slackcommunity.com/',
75-
target: '_self',
76-
},
77-
],
67+
target: '_self',
7868
},
7969
{
80-
to: 'https://api.slack.com/docs',
81-
label: 'API Docs',
82-
target: '_self',
70+
label: 'Developer Program',
71+
position: 'right',
72+
to: 'https://api.slack.com/developer-program',
73+
target: '_blank',
74+
rel: "noopener noreferrer"
75+
},
76+
{
77+
label: 'Your apps',
78+
to: 'https:api.slack.com/apps',
79+
position: 'right',
80+
target: '_blank',
81+
rel: "noopener noreferrer"
8382
},
8483
{
8584
type: 'localeDropdown',

0 commit comments

Comments
 (0)