apps/docs/content/guides/functions/examples/slack-bot-mention.mdx
The Slack Bot Mention Edge Function allows you to process mentions in Slack and respond accordingly.
For your bot to seamlessly interact with Slack, you'll need to configure Slack Apps:
slack-bot-mention function and click to verify the URL.app-mention in the events the bot will subscribe to.Deploy the following code as an Edge function using the CLI:
supabase --project-ref nacho_slacker secrets \
set SLACK_TOKEN=<xoxb-0000000000-0000000000-01010101010nacho101010>
Here's the code of the Edge Function, you can change the response to handle the text received:
import { WebClient } from 'https://deno.land/x/[email protected]/mod.js'
const slackBotToken = Deno.env.get('SLACK_TOKEN') ?? ''
const botClient = new WebClient(slackBotToken)
console.log(`Slack URL verification function up and running!`)
Deno.serve(async (req) => {
try {
const reqBody = await req.json()
console.log(JSON.stringify(reqBody, null, 2))
const { token, challenge, type, event } = reqBody
if (type == 'url_verification') {
return new Response(JSON.stringify({ challenge }), {
headers: { 'Content-Type': 'application/json' },
status: 200,
})
} else if (event.type == 'app_mention') {
const { user, text, channel, ts } = event
// Here you should process the text received and return a response:
const response = await botClient.chat.postMessage({
channel: channel,
text: `Hello <@${user}>!`,
thread_ts: ts,
})
return new Response('ok', { status: 200 })
}
} catch (error) {
return new Response(JSON.stringify({ error: error.message }), {
headers: { 'Content-Type': 'application/json' },
status: 500,
})
}
})