ll-24-25
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Write
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Help
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Write
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # bok-ai-lab-20250418-research [full research](https://docs.google.com/document/d/1B21TM9Vpm9XIF-lhduYdX31hMWsM90y0WwnacJJPvTQ/edit?tab=t.0) # Slackbots as Real-Time Lecture Backchannels Integrating Slack (or similar platforms like Microsoft Teams or Discord) into live lectures can create a real-time “backchannel” for student interaction. A backchannel is essentially a parallel communication stream where students and instructors can share questions and insights during class without disrupting the lecture flow ([Make Lectures Interactive with Slack Backchannels \- MIT Sloan Teaching & Learning Technologies](https://mitsloanedtech.mit.edu/2023/08/29/make-lectures-interactive-with-slack-backchannels/#:~:text=engagement%20in%20the%20classroom,Harvard%20University%2C%202023)). This concept gained prominence during remote teaching, where features like Zoom chat allowed side discussions. Now, with Slack integrated into many campus LMS environments ([Make Lectures Interactive with Slack Backchannels \- MIT Sloan Teaching & Learning Technologies](https://mitsloanedtech.mit.edu/2023/08/29/make-lectures-interactive-with-slack-backchannels/#:~:text=During%20discovery%20research%20for%20MIT,class%20chatting%20a%20reality)), in-person classes can leverage the same idea: a live chat during class, mediated by Slackbots (automated Slack apps) to capture, organize, and even respond to student input in real time. This report provides a reflective *and* technical overview of how Slackbots can enable rich backchannel experiences in the classroom. We’ll explore how Slackbots work (Events API, webhooks, and real-time messaging), walk through configuring a Slackbot for class use (including message formatting with Block Kit), outline example Slackbot workflows (capturing questions, threading discussions, summarizing content), discuss integration with Learning Management Systems like Canvas, and consider how such backchannels alter classroom norms. Finally, we’ll reflect on the broader implications of having a window into “everything every student thought, said, or typed” during a live session – weighing the benefits for engagement against potential challenges for attention and agency in learning. ## **Technical Overview: How Slackbots Work in Real Time** **Slack Events API and Webhooks:** At the heart of any Slackbot is Slack’s event-driven architecture. Slack provides an **Events API**, a subscription-based system that notifies your app whenever certain events occur in a workspace (for example, a user posting a message) ([Events API | Slack](https://api.slack.com/events-api#:~:text=The%20Events%20API%20is%20a,Events%20API%2C%20Slack%20calls%20you)). Instead of continuously polling Slack, your bot can let Slack “call” it via HTTP requests or websockets. There are two main modes for receiving events: - **HTTP (Webhook) Mode:** Your Slack app can expose a public HTTP endpoint and register it with Slack. Slack will send an HTTP POST request to your server whenever an event you’ve subscribed to occurs. This is essentially a webhook mechanism – your bot is a web service listening for Slack’s callbacks. - **Socket Mode (WebSockets):** Alternatively, Slack provides a WebSocket-based connection option (Socket Mode) where your app maintains a persistent connection to Slack and receives events through that socket. This avoids the need to host a public endpoint and is useful if your bot runs behind a firewall or in an environment where opening an HTTP endpoint is difficult ([Events API | Slack](https://api.slack.com/events-api#:~:text=The%20Events%20API%20is%20a,Events%20API%2C%20Slack%20calls%20you)). In both cases, the flow is event-driven. The Slack app (bot) must specify which event types it wants (such as message postings). When those events happen, Slack sends a JSON payload describing the event to your bot. The bot’s server code then processes the event and typically replies with a quick acknowledgment (HTTP 200 OK) to confirm receipt ([Events API | Slack](https://api.slack.com/events-api#:~:text=1,server%20carries%20out%20that%20decision)). From there, your custom logic kicks in: the bot can decide how to respond or what action to take based on the event. For example, if a student’s message contains a question, the bot might decide to record it or respond. If action is needed, the bot will use Slack’s **Web API** to perform tasks (like posting a message). A common pattern is: a message event arrives, your bot identifies a trigger (e.g. a “?"), and then uses the `chat.postMessage` API method to post a reply or acknowledgment in Slack ([Events API | Slack](https://api.slack.com/events-api#:~:text=1,encouraging%20everyone%20to%20keep%20that)). This interplay between the incoming Events API and outgoing Web API is how Slackbots achieve real-time interaction. **Slack’s Real-Time Messaging (RTM) API:** Historically, Slack offered a Real Time Messaging API which also used WebSockets to stream events. However, the RTM API is now considered legacy – the Events API (with HTTP or Socket Mode) is the recommended approach for most bots ([Events API | Slack](https://api.slack.com/events-api#:~:text=you%20don%27t%20need.%20,RTM%29%20API%20WebSockets)) ([Events API | Slack](https://api.slack.com/events-api#:~:text=Preparing%20your%20app%20to%20use,the%20Events%20API)). The Events API reduces complexity by letting Slack handle the connectivity and event delivery (including retries, etc.), so developers don’t need to manage a fleet of persistent socket connections for each workspace. In short, modern Slackbots typically subscribe to events (via webhook or socket), process those events server-side, and then call Slack’s web APIs to respond or take actions. **Incoming Webhooks:** Not all Slack integrations need full interactivity. Slack also provides incoming webhooks as a simpler mechanism to post messages to Slack via a single pre-defined URL ([Events API | Slack](https://api.slack.com/events-api#:~:text=The%20Events%20API%20is%20recommended,32%20or%20the%20Web%20API)). For instance, an instructor could set up an incoming webhook to post an announcement to a Slack channel from an external system. However, incoming webhooks are one-way (they only send messages to Slack) and don’t handle reading events from Slack. For a true interactive backchannel Slackbot – one that listens and responds – you’d use the Slack app with Events API approach described above. **Slack Block Kit for Message Formatting:** When our Slackbot posts messages (via `chat.postMessage` or webhooks), we often want more than plain text. Slack’s **Block Kit** is a UI framework for composing rich message layouts. Instead of simple text, a message can be constructed from “blocks” – sections of text, images, buttons, dividers, context elements, etc., arranged in a specific order ([Block Kit | Slack](https://api.slack.com/block-kit#:~:text=Block%20Kit)). Block Kit allows the Slackbot to present information in a clear, visually structured way. For example, a Slackbot’s post summarizing top questions from a lecture could use a Block Kit layout: a header block for “Top Questions”, section blocks for each question (possibly with the asker’s name in context), and maybe an divider or context note. By leveraging Block Kit, the bot’s messages can stand out and remain organized, which is crucial when dozens of chat messages might be flying by in a busy lecture channel. **Permissions and Scope:** It’s worth noting that Slack apps (bots) operate within a security model of scopes and permissions. To listen to messages in channels, the app needs the appropriate scope (e.g. `channels:history` or the newer granular bot scopes for reading messages). Similarly, to post messages it needs `chat:write`. When configuring a Slackbot for your class, you’ll be guided to select these scopes. Once the app is installed in the workspace (and in the specific channels, if needed), it can then receive events from those channels and post as configured. In summary, Slackbots for education build on Slack’s real-time capabilities: the Events API (webhooks or Socket Mode) to catch what students say the moment they say it, and the Web API (with rich Block Kit formatting) to respond or present information back into Slack. With the technical basics in hand, let’s walk through setting up a Slackbot to actually capture and organize student messages during a live lecture. ## **Configuring a Slackbot to Capture and Organize Messages** Setting up a Slackbot for your course involves both Slack-side configuration and your own code/logic. Here’s a step-by-step overview of how an instructor or developer might create a Slackbot to capture and organize student contributions in real time: 1. **Create a Slack App:** Begin by creating a new Slack app via Slack’s developer portal. This app will represent your Slackbot. You’ll typically create it for your workspace (or request permission to install it in the course workspace). Give it a descriptive name (e.g., “LectureHelper Bot”). Decide if you want a bot user (most likely yes for interactive use). Slack will issue credentials (like a Bot User OAuth token) for your app. 2. **Define Bot Permissions (Scopes):** In the app settings, configure **OAuth scopes** that the bot needs. For a classroom backchannel bot, you’ll need read access to channel messages (for public channels this might be `channels:history`; for private channels or group DMs, scopes like `groups:history` or similar would apply). You also need write permissions to post messages (`chat:write`) and perhaps to manage threads or reactions if your bot will, say, add emoji reactions or start threads. If you plan to use slash commands or shortcuts, you’d define those too. After setting scopes, reinstall or authorize the app to update its permissions in the workspace. 3. **Event Subscriptions:** Enable the **Events API** for your Slack app and set up your request URL. If you have a server, you’ll provide a public HTTPS endpoint that Slack can reach (Slack will send a challenge token on setup to verify you own the endpoint). Alternatively, if you use Socket Mode (Slack’s websockets), you’d enable that and use a library or SDK to connect. Subscribe the app to the relevant **event types**. For example, subscribe to the `message.channels` event (which delivers events for messages in channels the bot is a member of) ([Events API | Slack](https://api.slack.com/events-api#:~:text=1,to%20keep%20that%20word%20secret)). If your backchannel will take place in a specific channel (say `#lecture-chat`), make sure the bot is added to that channel, otherwise it won’t receive those events. You might also subscribe to reaction events (e.g., `reaction_added`) if you want the bot to do something when students react with an emoji (perhaps to mark questions). 4. **Implement the Bot Logic:** With events flowing in, you now code the logic. This can be done using Slack’s Bolt framework (available in Python, JavaScript, etc.) or any web framework of your choice. Pseudocode for capturing questions might look like: “On receiving a message event, if the message text ends with a ‘?’ or contains a keyword like ‘question:’, then save or flag that message as a question.” The bot could maintain an in-memory list or use a database to store these flagged messages throughout the lecture. To **organize** them, the bot might immediately respond in some way – e.g., posting a confirmation or adding a thread. For instance, the bot could start a thread on that question by replying to it (perhaps with a message like “📝 Noted this question for later\!”). Using Slack’s threading keeps the main channel less cluttere ([Set up a Slack workspace for your college or university course | Slack](https://slack.com/resources/using-slack/set-up-a-slack-workspace-for-your-college-or-university-course#:~:text=,up%20messages))】, and the bot could gather all replies in that thread. 5. **Use Block Kit for Formatting (if needed):** When the bot posts messages (whether it’s acknowledging a question, providing an answer, or posting a summary), craft the message with Block Kit for clarity. Slack provides a Block Kit Builder tool to prototype message layouts. For example, the acknowledgment message might include a context block that says “Question noted by Slackbot” and a section block quoting the question text in italics, making it visually distinct. Later, when posting a summary of Q\&A, the bot could use a rich format: multiple section blocks or a bulleted list inside a block to list each question answered during class. This step ensures the bot’s output is user-friendly and not just raw text. 6. **Testing in a Sandbox Channel:** Before deploying to a live class channel, test the Slackbot in a private channel or a test workspace. Post sample messages (“What is the meaning of life?”) and see if the bot captures them as expected. Ensure the bot doesn’t respond to every message (you don’t want it chiming in on every student comment – that could be noisy). Fine-tune the triggers (maybe you decide that a question must start with “Q:” or end with “?” to be logged, to avoid false positives from every inquisitive phrasing). 7. **Deployment and Running During Class:** On lecture day, make sure the bot’s server is running and connected. You might have the bot announce itself at the start of class (e.g., a message: “Slackbot is here to collect your questions\! Feel free to ask in this channel.”). As the lecture progresses, the instructor or a TA can keep an eye on the bot’s activity. If the bot is configured only to log questions silently, the instructor might have a separate interface to view the collected questions (for example, the bot could forward them to a private instructor channel, or an internal web dashboard). Alternatively, if the bot posts public confirmations or organizes threads, everyone will see how questions are being queued. 8. **Post-lecture Wrap-up:** After class, decide what the bot should do with the collected data. A common step is to have the bot publish a summary or a list of unanswered questions. For instance, the bot could post in the channel: “**Lecture Summary:** 5 questions were asked today – here are the questions and answers...” using Block Kit to format nicely. If integrated with an AI, the bot could even generate a brief summary of the discussion (more on this later). If the bot stored data externally, ensure that’s saved appropriately (this could later feed into analytics of class participation, etc.). This configuration roadmap demonstrates that while setting up a Slackbot requires some technical work (creating an app, writing code to handle events), it’s quite feasible even for those not deeply experienced in programming, thanks to high-level frameworks and Slack’s documentation. Next, we’ll look at concrete ways such a Slackbot can enhance a live lecture via different workflows. ## **Slackbot Workflows for Live Lectures** Once the Slackbot is up and running, what can it actually do to improve the class experience? Here we outline a few possible Slackbot-driven workflows, each addressing a common use case in live lectures: ### **1\. Capturing and Highlighting Student Questions in Real Time** **Use case:** Students often have questions during a lecture, but may hesitate to interrupt the speaker. A Slack backchannel allows them to ask at any time. The Slackbot can act as an intelligent moderator of these questions. **How it works:** As described earlier, the bot listens for message events in the backchannel Slack channel (e.g., `#lecture-chat`). It uses simple heuristics to detect questions – for example, any message ending with a question mark “?” or beginning with “Q:” could be flagged. The moment such a message is detected, the bot can take several actions: - *Threading:* The bot starts a thread attached to that question. Slack threads let the class discuss the question without cluttering the main channe ([Set up a Slack workspace for your college or university course | Slack](https://slack.com/resources/using-slack/set-up-a-slack-workspace-for-your-college-or-university-course#:~:text=,up%20messages))】. The bot’s threaded reply might say “📌 Question noted. Discuss here\!” – inviting others to respond in the thread. This way, if a TA or another student answers, that conversation stays organized under the original question. - *Tagging or Pinning:* The bot could add an emoji reaction (like an eye 👀 or a question mark) to visually mark the message as a question. Alternatively, it could pin the question in the channel, though pinning each question might be overkill in a busy chat. - *Aggregation:* Simultaneously, the bot logs the question in an internal list. It might also copy it to a private channel for instructors/TAs, like `#mod-channel`, ensuring the teaching team definitely sees it even if the public channel is busy. The instructor can periodically glance at the Slack channel or the private log to see what questions are bubbling up. If there’s a natural pause or the end of a segment, the instructor can address a popular or unanswered question. The Slackbot can even be used by the instructor actively – e.g., the instructor might instruct the bot via a command to publish the “top 3 questions so far.” The bot could then post a message in the channel, perhaps with a Block Kit formatted list of those top questions (determined by number of reactions or simply first-come-first-served from the log). **Benefit:** This workflow ensures student questions are captured the moment they arise, making students feel heard without requiring them to raise hands or interrupt. It also creates a written record that the instructor can revisit – either to answer later or to identify what concepts caused confusion. ### **2\. Auto-Threading Discussions at Key Moments** **Use case:** Sometimes an instructor poses a question *to the students* or wants to ignite discussion (e.g., “Think about problem X – what do you think the solution is?”). In a live classroom backchannel, dozens of students might start typing. This can become chaotic in one stream. **How it works:** A Slackbot can enforce structure by automatically creating threads or channel sections for these discussions. One approach is to have the instructor signal the bot when a threaded discussion is desired. For example, the instructor could type a special command or keyword like “/threadchat start topic1” or simply post a message like “Discuss: ? \#thread”. The bot, upon seeing this trigger, could immediately reply to that prompt with “Thread here 👇” and perhaps even lock replies in the main channel for a moment (Slack doesn’t natively support locking a channel, but the bot could remind users to reply in thread). Then as students reply, if anyone accidentally posts in main channel, the bot might gently remind them to use threads (or the bot could even move the message to the thread by reposting it and deleting the original – though deletion might require admin privileges and be tricky). Another key moment is when the lecture transitions topics. If using a single Slack channel for the whole class session, it could be helpful to delineate segments. The Slackbot could listen for cues (perhaps the instructor types “—” or some keyword signaling a new section) and then post a divider or an announcement like “**New Topic: \[Topic Name\]**”. This is not exactly threading, but it’s structuring the chat timeline so that later, one can visually separate discussions by topic. **Auto-threading Q\&A:** The earlier case of student questions can be seen as a special case of this auto-threading concept – every question becomes a mini-thread. The Slackbot takes on the role of a “backchannel moderator,” akin to what a human TA might do: funneling side conversations into appropriate threads. By doing this automatically, it reduces the overhead on human moderators. **Benefit:** The backchannel remains organized. Key discussions don’t scroll out of sight immediately because they’re neatly nested. Students who join late can more easily catch up by reading the threads on each question or topic, rather than sifting through interleaved messages. It aligns with Slack’s own guidance of using threads to keep channels ([Set up a Slack workspace for your college or university course | Slack](https://slack.com/resources/using-slack/set-up-a-slack-workspace-for-your-college-or-university-course#:~:text=,up%20messages))319】. Essentially, the bot helps enforce a structure that maximizes coherence. ### **3\. Generating Live Summaries and Post-Lecture Archives** **Use case:** With potentially hundreds of messages in the backchannel, it can be hard to distill what happened. Both students and instructors can benefit from a summary of the backchannel – either in real-time (during breaks) or immediately after class. **How it works:** There are a couple of ways to have Slackbots summarize or highlight information: - *Periodic Live Summaries:* The bot could be programmed to drop summary messages at set intervals (say, every 20 minutes or at mid-point and end of class). These summaries might include “Top 5 most discussed topics so far” or “Questions still unanswered.” Implementation-wise, the bot would gather the messages or threads and use either simple rules or an AI service to generate a summary. With recent advancements, Slack itself provides AI-driven conversation summa ([Guide to Slack AI | Slack](https://slack.com/help/articles/25076892548883-Guide-to-Slack-AI#:~:text=Guide%20to%20Slack%20AI)) ([Guide to Slack AI | Slack](https://slack.com/help/articles/25076892548883-Guide-to-Slack-AI#:~:text=Summarise%20conversations))147】 which could potentially be triggered by the bot – Slack’s AI can summarize a channel or thread in seconds, producing a concise recap of the conversation. If Slack’s built-in AI is available (and privacy settings permit), the bot might invoke it and post the output. Alternatively, the bot could send the latest messages to an external API (like OpenAI) to get a summary, then post that. A summary might look like: a Block Kit message with a header “**Backchannel Summary (Mid-lecture)**” and a bulleted list of key points or questions raised. - *End-of-Class Digest:* After the lecture concludes, the Slackbot can post a final message in the channel that serves as an archive or digest. This could include: - A list of all questions asked (with answers, if any). Perhaps formatted as an ordered list of Q\&A pairs. - Links to important resources that were shared (the bot can track any links or files posted in the channel). - The AI-generated summary of the discussion. - Perhaps a prompt for continuing the conversation: “Any questions not answered? Feel free to continue discussing here, or we’ll address them next class.” This final archive not only helps students who want to review the live discussion, but also anyone who missed class – they can see what issues came up. And because it’s in Slack, it’s all archived automatically. (Slack channels “build a searchable archive that everyone can reference la ([Set up a Slack workspace for your college or university course | Slack](https://slack.com/resources/using-slack/set-up-a-slack-workspace-for-your-college-or-university-course#:~:text=channel%E2%80%99s%20attention%20back%20to%20a,and%20can%20correct%20any%20misconceptions))392】.) **Benefit:** Summaries help in knowledge retention and ensure the backchannel doesn’t become just ephemeral chatter. By explicitly capturing the outcome of discussions, the Slackbot reinforces learning points. It also saves instructors time – rather than manually combing through chat logs to figure out common questions, the bot surfaces them. In the long run, these archives could form a valuable knowledge base. For example, if the same question is asked in a future class, an instructor (or even the Slackbot, if it’s smart enough) can point to the previous explanation. --- These workflows are not exhaustive – a Slackbot could do other things like quick polls, quizzing students, or sending reminders (Slack’s built-in `/remind` feature could be invoked by the bot for follow-ups). But the scenarios above focus on enhancing the core lecture experience through a backchannel. ## **Integrating Slack with LMS Platforms (e.g., Canvas)** A key aspect of using Slack in a course is how it ties into the university’s existing systems. Many institutions use Learning Management Systems (LMS) like Canvas or Blackboard to manage course rosters and content. Integrating Slack with an LMS can streamline setup and authentication for a course backchannel. **Slack Course Workspaces via LMS:** Slack has developed integrations for education that allow instructors to create a Slack workspace directly from their LMS course roster. For example, at Stanford, instructors can add a “Slack” tool in their Canvas course navigation. This tool lets them create a private Slack workspace auto-populated with all the students in that co ([Create a private course Slack Workspace from Canvas – Stanford University](https://canvashelp.stanford.edu/hc/en-us/articles/1500003423642-Create-a-private-course-Slack-Workspace-from-Canvas#:~:text=Create%20the%20workspace)) ([Create a private course Slack Workspace from Canvas – Stanford University](https://canvashelp.stanford.edu/hc/en-us/articles/1500003423642-Create-a-private-course-Slack-Workspace-from-Canvas#:~:text=3,students%20will%20join%20as%20teammates))-L4】. Students join simply by clicking the Slack link in Canvas, without needing manual invites. Similarly, MIT has a “Slack for Canvas” integration where any teaching team member can create the Slack workspace for the course, and students are synced into it automatic ([FAQ: Slack for Canvas \- MIT Sloan Teaching & Learning Technologies](https://mitsloanedtech.mit.edu/support/faq-slack-for-canvas/#:~:text=Who%20can%20create%20a%20Slack,workspace%20in%20a%20Canvas%20course)) ([FAQ: Slack for Canvas \- MIT Sloan Teaching & Learning Technologies](https://mitsloanedtech.mit.edu/support/faq-slack-for-canvas/#:~:text=Any%20member%20of%20the%20teaching,workspace%20for%20their%20Canvas%20course))235】. The benefit here is that the Slack workspace membership is kept in sync with the course enrollment. If a student drops the class, they can be removed from the Slack automatically (one MIT setup notes that \*“students will be automatically removed from the course’s Slack workspace 30 days after the te ([FAQ: Slack for Canvas \- MIT Sloan Teaching & Learning Technologies](https://mitsloanedtech.mit.edu/support/faq-slack-for-canvas/#:~:text=organized%20and%20prevent%20clutter%20in,the%20main%20channel)) ([FAQ: Slack for Canvas \- MIT Sloan Teaching & Learning Technologies](https://mitsloanedtech.mit.edu/support/faq-slack-for-canvas/#:~:text=Can%20I%20grade%20students%20on,their%20contributions%20in%20Slack))218】). This addresses a big administrative headache – otherwise the instructor would need to invite each student by email and remember to deactivate accounts later. **Authentication and Identity:** Typically, these integrations rely on the school’s single sign-on or email domain. Slack Enterprise Grid offers a way for large organizations (like universities) to manage multiple workspaces under one umbrella, with centralized administration. In an Enterprise Grid setup, a “Canvas integration” might use Slack’s SCIM API (System for Cross-domain Identity Management) to provision and deprovision users based on the roster. The Slack documentation mentions that \*“Slack Enterprise Grid can integrate with your LMS, like Canvas or Blackboard, to simplify workspace setup and student onboardi ([Set up a Slack workspace for your college or university course | Slack](https://slack.com/resources/using-slack/set-up-a-slack-workspace-for-your-college-or-university-course#:~:text=,your%20campus%20get%20started%20today))422】. In practice, this means the school’s IT or Slack admin pre-approves an app or uses a service (sometimes referred to as “Coursebot” in some pi ([CETLI Pilot Supports Building Community for Online Students](https://cetli.upenn.edu/news-features/spotlights/cetli-pilot-supports-building-community-for-online-students/#:~:text=The%20pilot%20assessed%20how%20Slack,informally%20chat%20with%20one%20another))284】) that connects Canvas to Slack. Coursebot, for instance, was a custom integration Slack piloted at Penn to link Canvas with Slack – it created a Slack workspace accessible inside Canvas for each course, allowing quick chat among students and s ([CETLI Pilot Supports Building Community for Online Students](https://cetli.upenn.edu/news-features/spotlights/cetli-pilot-supports-building-community-for-online-students/#:~:text=The%20pilot%20assessed%20how%20Slack,informally%20chat%20with%20one%20another))284】. From the user perspective, integration makes joining the Slack backchannel frictionless. Students just click a button in Canvas and are in the correct Slack space with their classmates. No need to create accounts or wonder if they’re in the right Slack team. **Using Slack within LMS workflow:** Once the Slack workspace exists, instructors often still use LMS for announcements and content distribution, but they use Slack for quick communication and Q\&A. Some LMSs (like Canvas) have begun to allow Slack notifications or embedding Slack channels, but generally the integration is about membership sync and quick access. Instructors might post on Canvas: “We’ll use Slack for backchannel discussions during lecture; click here to join.” After that, Slack becomes an adjunct space to the LMS. It’s also possible to integrate specific Slackbot functions with the LMS. For example, the Slackbot could interface with Canvas via Canvas’s API – imagine the bot posting an automatic message like “Canvas quiz \#2 is due in 1 hour” if it knows due dates. While not our main focus, this kind of cross-system automation is feasible (with APIs on both sides and a bit of glue code). Some schools have looked into two-way integrations where Slack can pull info from LMS (grades, deadlines) and LMS can record Slack participation for gr ([FAQ: Slack for Canvas \- MIT Sloan Teaching & Learning Technologies](https://mitsloanedtech.mit.edu/support/faq-slack-for-canvas/#:~:text=Can%20I%20grade%20students%20on,their%20contributions%20in%20Slack))218】 (though currently grading Slack participation might be manual). In summary, LMS integration ensures the Slack backchannel is an officially supported part of the course, not a side experiment. It helps with roster management (no student left behind or lingering after course end) and provides a seamless entry point for students. For developers, tapping into LMS data can also enrich what the Slackbot can do (knowing the class list, grouping students, etc.). ## **How Backchannels Change Classroom Interaction Norms** Introducing a Slack backchannel (especially one augmented by Slackbot capabilities) can significantly shift how interactions happen in a lecture. It’s not just a technical change; it’s a socio-cultural one in the classroom. Let’s reflect on what becomes visible, what gets archived, and how norms might evolve: **Visibility of Questions and Confusion:** In a traditional lecture, if a student is confused but doesn’t speak up, that confusion is private – the instructor may never know. With a Slack backchannel, students might express confusion or ask questions in text, making their understanding (or misunderstanding) visible to the entire class and instructor. This can be positive: instructors gain *complete visibility* into issues as they arise and can address misconceptions prom ([Set up a Slack workspace for your college or university course | Slack](https://slack.com/resources/using-slack/set-up-a-slack-workspace-for-your-college-or-university-course#:~:text=channel%E2%80%99s%20attention%20back%20to%20a,and%20can%20correct%20any%20misconceptions))392】. Peers can also see each other’s questions, which might reduce duplicate questions and foster a sense of “we’re in this together, others have questions too.” On the flip side, students might feel self-conscious about posting if they think everyone will see their “dumb question.” Establishing an inclusive norm (that all questions are welcome) is important to mitigate that fear. **Persistent Archive vs. Ephemeral Discussion:** Unlike a spoken aside or a quick whisper, Slack messages persist. Every joke, every offhand remark, and every basic or advanced question is logged in the channel history. This archive can be beneficial – it’s a study resource and a record of class interaction (and as noted, Slack channels are searchable l ([Set up a Slack workspace for your college or university course | Slack](https://slack.com/resources/using-slack/set-up-a-slack-workspace-for-your-college-or-university-course#:~:text=channel%E2%80%99s%20attention%20back%20to%20a,and%20can%20correct%20any%20misconceptions))392】). But it also means the backchannel needs some moderation. Norms for professionalism apply; e.g., what one might whisper to a friend (“this is boring”) could be harmful or disruptive if typed out for the whole class to see and saved in the log. Instructors and students will have to navigate this: perhaps agreeing on etiquette like staying on topic during the lecture, or using a specific channel for off-topic chat. The Slack resource for educators suggests posting etiquette guidelines and encouraging use of threads to keep channels ([Set up a Slack workspace for your college or university course | Slack](https://slack.com/resources/using-slack/set-up-a-slack-workspace-for-your-college-or-university-course#:~:text=2,guidelines))318】. **Role of the Instructor and TA:** With a backchannel, the instructor’s role may expand to monitoring two channels of communication – spoken and text. This is where having a TA or the Slackbot’s assistance is valuable. A TA can watch Slack and gently nudge the instructor if something urgent comes up (“Several people are confused about concept X, maybe clarify it”). The Slackbot can help by highlighting frequent questions or by throttling less urgent ones (perhaps queuing them for later). The norm might become that instructors pause every so often to check Slack. In large classes, instructors may even project the Slack channel on a screen for all to see – though this can inhibit students from speaking freely if they know it’s being broadcast. Many choose to keep it more low-key, with only the instructor/TA actively reading it and students knowing their messages are seen by staff and peers but not explicitly spotlighted without reason. **Student Agency and Participation:** For students, a Slack backchannel can enhance agency – they have a voice even when the lecture format is one-to-many. Students who never speak on the microphone might be very active in Slack, sharing links or answering each other’s questions. This can flatten the classroom hierarchy a bit, making it more of a many-to-many discussion alongside the one-to-many lecture. That said, it introduces the possibility of distraction. Some students might focus more on the chat than the lecture. It’s a bit like passing notes, except the notes are relevant to class (hopefully) and visible to all. There is a trade-off between engagement and attention; not every student can multitask well. Some instructors handle this by explicitly designating moments for backchannel use (“Take two minutes to discuss in Slack”) versus times to put devices down. Over time, the class may develop a rhythm, using the backchannel wisely without derailing the primary flow. **Inclusion and Anonymity:** One interesting norm consideration is whether Slack posts are tied to real identities. Slack by default uses real names (or at least whatever profile name is set, usually real in a class setting) – so shy students might still hesitate. Some backchannel tools (like dedicated apps mentioned in research) allow anonymous questions to encourage participa ([Make Lectures Interactive with Slack Backchannels \- MIT Sloan Teaching & Learning Technologies](https://mitsloanedtech.mit.edu/2023/08/29/make-lectures-interactive-with-slack-backchannels/#:~:text=Koenig%2C%20R,voices))133】. Slack doesn’t easily allow true anonymity per message, but an instructor could allow students to create alternate accounts or use a shared alias if necessary (though that complicates roster integration). In practice, most classes using Slack just stick with named posting and encourage a supportive atmosphere. The Slackbot could optionally allow anonymous submissions via a direct message – for example, a student could DM the Slackbot with a question, and the bot could post it to the channel on that student’s behalf (either attributing to “Anonymous” or some pseudonym). This is a workflow a developer could implement if anonymity is desired for sensitive discussions. In essence, the backchannel makes the classroom multi-layered. It changes norms by making student thoughts and interactions more visible and persistent. It requires new etiquette (what is okay to post during class?) and new habits by instructors (how to incorporate that feedback on the fly). When done thoughtfully, research and pilot programs have shown this leads to greater engagement and a more inclusive environment where more voices are “heard” (even if via t ([Make Lectures Interactive with Slack Backchannels \- MIT Sloan Teaching & Learning Technologies](https://mitsloanedtech.mit.edu/2023/08/29/make-lectures-interactive-with-slack-backchannels/#:~:text=Inclusive%20learning%20spaces%20are%20critical,2016)) ([Make Lectures Interactive with Slack Backchannels \- MIT Sloan Teaching & Learning Technologies](https://mitsloanedtech.mit.edu/2023/08/29/make-lectures-interactive-with-slack-backchannels/#:~:text=Students%20appreciate%20backchannels))L87】. But it’s not a magic bullet – it can be distracting or overwhelming if not managed. That’s why having a Slackbot to assist (by structuring threads, highlighting key points, etc.) is valuable: it imposes a bit of order on the free-flowing conversation. ## **Broader Reflections: Live Data, Feedback, and Agency in the Classroom** Setting up Slack \+ Slackbots in lectures is a microcosm of a larger trend in education: the increasing capture of real-time data on student learning. It prompts a thought experiment: *If we could see everything every student thought, said, or typed during class, would we want to?* And what would we do with that information? On one hand, more data can mean more insights. A Slack backchannel gives a peek into student thinking that was previously hidden. It externalizes questions and confusions that would otherwise remain private. In theory, if an instructor could truly know every student’s state of mind, they could adapt their teaching on the fly to address misconceptions, making learning more efficient and tailored. This is a bit of a holy grail for educators – real-time formative feedback from everyone. Slack is a step in that direction: it captures what students are willing to share in text. Future AI tools might capture even more (e.g., analyzing facial expressions for confusion, or monitoring notes students write). But with great data comes great responsibility. **Do we *want* all that data?** Pedagogically, sometimes struggle and silence are okay. Not every confusion must be resolved immediately; not every passing thought needs addressing. If an instructor is inundated with “everything every student is thinking,” it could be paralyzing or lead to constantly interrupting the lesson to chase every tangent. There’s also a question of student privacy and comfort. Students might self-censor if they know all their contributions are being logged and possibly analyzed. The backchannel should be a tool for empowerment, not surveillance. It’s important that its use is framed as supportive. For example, one wouldn’t want Slack logs to be used punitively (like grading someone for not posting, or for what they posted, unless participation is an explicit part of the class and even then with clear guidelines). **Live vs. Asynchronous Feedback:** Slack occupies an interesting middle ground. It is live (synchronous typing during class), but the record persists and can be revisited asynchronously. This blurs the line between immediate feedback and later reflection. Some students might not think of a question until after class – Slack can accommodate that too, since the channel remains open. In fact, students often continue the backchannel discussion after the lecture is over, which can be great for learning but also means the class conversation extends in time. We should consider: does this create pressure for instructors to be “always on,” answering questions on Slack at odd hours? Setting expectations (maybe the instructor says they’ll answer post-class questions in Slack up until 5pm, or that TAs will address them within 24 hours) is key to balancing synchronous and asynchronous communication. **Student Agency and Attention:** The presence of a Slackbot mediator also raises the issue of agency. Ideally, the Slackbot is there to enhance student agency by amplifying their questions and organizing their input. But one must be careful that automation doesn’t take away human agency. For instance, if a bot starts deciding which questions are “important” (say using AI to rate questions and only forwarding some to the instructor), students might feel their voices are being filtered unfairly. Transparency about what the bot is doing is crucial. We wouldn’t want students guessing “Did the instructor even see my question or did the bot filter it out?” Clear design (maybe the bot marks that it has logged a question, etc.) can ensure the human participants remain in control of the discourse, with the bot as a helper. Finally, using Slackbots in class is a step toward more AI-mediated education. Today the bot might be rule-based or simple, but tomorrow it could be an AI tutor that interacts with students in the backchannel, answering questions in real time (there are already Q\&A bots and even GPT-4 powered Slack assistants). This opens wonderful possibilities – each student could get a real-time answer – but also some concerns: the accuracy of AI answers, the effect on learning (would students rely on the AI instead of thinking or asking the instructor?), and the sense of connection in the classroom. It’s an exciting frontier: Slackbots now are relatively straightforward, but they pave the way for more complex AI integration in live classrooms. In conclusion, integrating Slack as a live backchannel via Slackbots can **demystify** a lot of the classroom’s hidden communication and make participation more inclusive and dynamic. Technically, it’s enabled by Slack’s robust API and real-time infrastructure, and practically, it’s facilitated by thoughtful workflow design to capture and organize student input. The experience so far (in early adopters at universities) suggests it can greatly enhance engage ([Make Lectures Interactive with Slack Backchannels \- MIT Sloan Teaching & Learning Technologies](https://mitsloanedtech.mit.edu/2023/08/29/make-lectures-interactive-with-slack-backchannels/#:~:text=Student%20perspectives%20on%20backchannels%20are,MIT%20Open%20Learning%2C%202021)) ([Make Lectures Interactive with Slack Backchannels \- MIT Sloan Teaching & Learning Technologies](https://mitsloanedtech.mit.edu/2023/08/29/make-lectures-interactive-with-slack-backchannels/#:~:text=Digital%20backchanneling%20through%20platforms%20like,learning%20experiences%20for%20our%20students))L97】. However, it also challenges us to rethink classroom norms and carefully balance the benefits of “seeing everything” with respect for the natural rhythms of teaching and learning. As we experiment with these AI-mediated backchannels, we should keep asking not just *“can we capture this data?”* but *“how does it serve learning?”* and *“do we all feel empowered by this change?”*. Slackbots in the lecture hall are just the beginning of a broader transformation toward more interactive, data-rich, and learner-centered education. By exposing and organizing the backchannel, they help us move toward that future – one message at a time. **Sources:** - Slack API Documentation – **Events API** (subscription-based event delivery and Socket M ([Events API | Slack](https://api.slack.com/events-api#:~:text=The%20Events%20API%20is%20a,Events%20API%2C%20Slack%20calls%20you)) ([Events API | Slack](https://api.slack.com/events-api#:~:text=1,encouraging%20everyone%20to%20keep%20that))950】 - Slack API Documentation – **Block Kit** (UI framework for rich message layo ([Block Kit | Slack](https://api.slack.com/block-kit#:~:text=Block%20Kit))904】 - Slack for Education Guides – using Slack in courses and backchan ([Make Lectures Interactive with Slack Backchannels \- MIT Sloan Teaching & Learning Technologies](https://mitsloanedtech.mit.edu/2023/08/29/make-lectures-interactive-with-slack-backchannels/#:~:text=engagement%20in%20the%20classroom,Harvard%20University%2C%202023)) ([Make Lectures Interactive with Slack Backchannels \- MIT Sloan Teaching & Learning Technologies](https://mitsloanedtech.mit.edu/2023/08/29/make-lectures-interactive-with-slack-backchannels/#:~:text=During%20discovery%20research%20for%20MIT,class%20chatting%20a%20reality)) ([Set up a Slack workspace for your college or university course | Slack](https://slack.com/resources/using-slack/set-up-a-slack-workspace-for-your-college-or-university-course#:~:text=channel%E2%80%99s%20attention%20back%20to%20a,and%20can%20correct%20any%20misconceptions))392】 - Canvas LMS Integration with Slack – setting up course workspaces and syncing ros ([Set up a Slack workspace for your college or university course | Slack](https://slack.com/resources/using-slack/set-up-a-slack-workspace-for-your-college-or-university-course#:~:text=,your%20campus%20get%20started%20today)) ([Create a private course Slack Workspace from Canvas – Stanford University](https://canvashelp.stanford.edu/hc/en-us/articles/1500003423642-Create-a-private-course-Slack-Workspace-from-Canvas#:~:text=Create%20the%20workspace))L51】 - CETLI (U. Penn) Pilot on **Slack \+ Canvas (“Coursebot”)** for online student commu ([CETLI Pilot Supports Building Community for Online Students](https://cetli.upenn.edu/news-features/spotlights/cetli-pilot-supports-building-community-for-online-students/#:~:text=The%20pilot%20assessed%20how%20Slack,informally%20chat%20with%20one%20another))284】 - MIT Sloan “Classroom of the Future” – benefits of Slack backchannels for engagement and inclusi ([Make Lectures Interactive with Slack Backchannels \- MIT Sloan Teaching & Learning Technologies](https://mitsloanedtech.mit.edu/2023/08/29/make-lectures-interactive-with-slack-backchannels/#:~:text=Inclusive%20learning%20spaces%20are%20critical,2016)) ([Make Lectures Interactive with Slack Backchannels \- MIT Sloan Teaching & Learning Technologies](https://mitsloanedtech.mit.edu/2023/08/29/make-lectures-interactive-with-slack-backchannels/#:~:text=Students%20appreciate%20backchannels))L87】

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully