Skip to main content
RapidDev - Software Development Agency
bolt-ai-integrationsBolt Chat + API Route

How to Integrate Bolt.new with Skype

Skype integration in Bolt.new uses the Microsoft Bot Framework and Azure Bot Service to build a conversational bot — Skype doesn't have a standalone developer API. Create an Azure Bot resource, register the Skype channel, and handle messages via a Next.js API route that processes Bot Framework Activity objects. Important: Microsoft is shutting down consumer Skype in May 2025. For new projects, use Microsoft Teams instead. If you must support Skype for Business users, this guide applies.

What you'll learn

  • How to create an Azure Bot Service resource and register the Skype channel
  • How to implement a Bot Framework message handler in a Next.js API route
  • How to authenticate Bot Framework requests using the Microsoft App ID and Secret
  • How to send replies and rich cards back to Skype users through the Azure Bot Service
  • Why Skype bots require a deployed URL and why new projects should use Microsoft Teams instead
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Intermediate14 min read30 minutesCommunicationApril 2026RapidDev Engineering Team
TL;DR

Skype integration in Bolt.new uses the Microsoft Bot Framework and Azure Bot Service to build a conversational bot — Skype doesn't have a standalone developer API. Create an Azure Bot resource, register the Skype channel, and handle messages via a Next.js API route that processes Bot Framework Activity objects. Important: Microsoft is shutting down consumer Skype in May 2025. For new projects, use Microsoft Teams instead. If you must support Skype for Business users, this guide applies.

Building a Skype Bot with Microsoft Bot Framework and Bolt.new

Unlike most messaging platforms that provide a direct REST API for sending messages, Skype bot communication goes entirely through Microsoft's Bot Framework and Azure Bot Service. This architecture means your Bolt app doesn't call Skype's API directly — instead, you create a bot registered in Azure, configure the Skype channel, and handle all message events through a webhook endpoint that the Azure Bot Service calls when Skype users interact with your bot. The Bot Framework handles authentication, message routing, and protocol translation between Skype and your application.

Before building a Skype bot integration, there is a critical consideration: Microsoft announced in February 2025 that consumer Skype will shut down in May 2025. Users are being migrated to Microsoft Teams. If you're building a new communication bot, Microsoft Teams is strongly recommended — it has a richer Bot Framework integration, persistent channels, thread conversations, and no planned sunset. The Skype integration in this guide applies primarily to Skype for Business (a separate enterprise product that persists as part of Microsoft 365) or for maintaining existing bots during the migration window.

The Bot Framework messaging endpoint — the URL where Azure sends Skype messages to your bot — must be a publicly accessible HTTPS URL. This is the same WebContainer limitation that affects all webhook-based integrations: Bolt's browser-based runtime has no public URL during development. You must deploy to Netlify or Bolt Cloud first, then register your deployed URL as the bot's messaging endpoint in Azure. During development in Bolt, you can build and test the message handling logic with test payloads, but end-to-end Skype testing requires deployment.

Integration method

Bolt Chat + API Route

Skype integration goes through the Microsoft Bot Framework and Azure Bot Service — there is no standalone Skype developer API. Your Bolt app creates a bot registered in Azure, connects it to the Skype channel, and processes incoming messages via a Next.js API route (the bot's messaging endpoint). The Azure Bot Service routes Skype messages to your endpoint as HTTP POST requests containing Bot Framework Activity objects. The messaging endpoint requires a publicly accessible URL, so it only works after deploying to Netlify or Bolt Cloud. Note: consumer Skype is shutting down in May 2025 — Microsoft Teams is the recommended platform for new bot projects.

Prerequisites

  • A Microsoft Azure account (free tier available with $200 credit at azure.microsoft.com)
  • An Azure Bot resource created in the Azure Portal with a Microsoft App ID and App Secret
  • The Skype channel enabled in your Azure Bot's Channels configuration
  • A deployed URL for the bot's messaging endpoint (Bolt's WebContainer cannot receive incoming Bot Framework messages)
  • Understanding that consumer Skype is shutting down in May 2025 — new projects should use Microsoft Teams

Step-by-step guide

1

Create Azure Bot Resource and Skype Channel

Go to portal.azure.com and sign in with your Microsoft account. In the search bar, type 'Azure Bot' and select 'Azure Bot' from the services list. Click 'Create'. Fill in the form: Bot handle (unique name for your bot), subscription, resource group (create new if needed), and location. For 'Microsoft App ID', select 'Create new Microsoft App ID' — this generates a new App ID automatically. Click 'Review and create', then 'Create'. Wait 1-2 minutes for the resource to deploy. Once deployed, go to the bot resource → Configuration. You'll see your Microsoft App ID (a GUID). Click 'Manage Password' to open the App Registration. In the App Registration, go to 'Certificates & secrets' → 'New client secret'. Give it a description, set expiry (24 months recommended), and click 'Add'. Copy the secret VALUE immediately — you cannot see it again. This is your MICROSOFT_APP_SECRET. Return to the Azure Bot resource → Channels. You'll see default channels listed. Click the Skype channel icon to add it. Review the terms and click 'Save'. The Skype channel is now enabled. After configuring your bot endpoint URL (done in the next steps after deploying), you can find the bot's Skype add link in the Skype channel settings under 'Publish'.

.env
1# .env
2MICROSOFT_APP_ID=your-azure-app-id-guid
3MICROSOFT_APP_SECRET=your-app-secret-value

Pro tip: Copy the App Secret value immediately after creating it — the Azure Portal only shows it once. If you lose it, you must create a new secret and update your environment variable.

Expected result: Your Azure Bot resource is created with a Microsoft App ID and App Secret saved. The Skype channel is enabled in the Bot's Channels configuration.

2

Create the Bot Messaging Endpoint

The bot's messaging endpoint receives POST requests from Azure Bot Service whenever a Skype user interacts with your bot. Each interaction arrives as a Bot Framework Activity object — a JSON structure containing the activity type (message, conversationUpdate, etc.), the sender's information, and the message content. Your endpoint must authenticate each incoming request by verifying the Authorization header using the Bot Framework's token validation. The Bot Framework sends a JWT Bearer token with each request that you validate against Microsoft's JWKS endpoint. For a production bot, use the botbuilder npm package which handles authentication, serialization, and reply sending automatically. For a lightweight implementation without the full SDK, you can validate tokens manually and use the Bot Connector REST API to send replies. The endpoint must respond within 15 seconds — for longer operations, acknowledge immediately and process asynchronously. Remember: this endpoint only works after deployment since it receives incoming HTTP requests from Azure's servers, which cannot reach Bolt's WebContainer.

Bolt.new Prompt

Create a Bot Framework messaging endpoint at /api/bot/skype. Install the botbuilder and botframework-connector npm packages. Create an adapter using BotFrameworkAdapter with MICROSOFT_APP_ID and MICROSOFT_APP_SECRET from environment variables. The POST handler should pass the request to the adapter, which handles authentication. On receiving a message activity, respond with a simple echo reply: 'You said: [message text]'. On conversationUpdate activity when members are added, send a greeting: 'Hello! I am your Skype bot. How can I help you today?'

Paste this in Bolt.new chat

app/api/bot/skype/route.ts
1// app/api/bot/skype/route.ts
2import { NextResponse } from 'next/server';
3import { BotFrameworkAdapter, TurnContext, ActivityTypes } from 'botbuilder';
4
5const adapter = new BotFrameworkAdapter({
6 appId: process.env.MICROSOFT_APP_ID,
7 appPassword: process.env.MICROSOFT_APP_SECRET,
8});
9
10adapter.onTurnError = async (context: TurnContext, error: Error) => {
11 console.error('Bot error:', error);
12 await context.sendActivity('An error occurred processing your request.');
13};
14
15async function handleBot(context: TurnContext) {
16 if (context.activity.type === ActivityTypes.Message) {
17 const text = context.activity.text?.trim() || '';
18 await context.sendActivity(`You said: ${text}`);
19 } else if (context.activity.type === ActivityTypes.ConversationUpdate) {
20 const membersAdded = context.activity.membersAdded || [];
21 for (const member of membersAdded) {
22 if (member.id !== context.activity.recipient.id) {
23 await context.sendActivity(
24 'Hello! I am your Skype bot. Type /help to see available commands.'
25 );
26 }
27 }
28 }
29}
30
31export async function POST(request: Request) {
32 const body = await request.text();
33 const headers = Object.fromEntries(request.headers.entries());
34
35 return new Promise<Response>((resolve) => {
36 const res = {
37 status: 200,
38 end: () => resolve(NextResponse.json({ ok: true })),
39 };
40 const req = {
41 body: JSON.parse(body),
42 headers,
43 };
44 adapter.processActivity(req as never, res as never, handleBot);
45 });
46}

Pro tip: The botbuilder package is designed for the Node.js http.IncomingMessage interface, not the Web Fetch API used by Next.js App Router. You may need an adapter shim or use the REST API directly for cleaner Next.js integration.

Expected result: The /api/bot/skype endpoint is created. After deploying, the Bot Framework adapter handles authentication and routes activities to your handler function. Skype users who message the bot receive the echo response.

3

Register Messaging Endpoint in Azure and Test

After deploying your Bolt app to Netlify or Bolt Cloud, you need to register the deployed bot endpoint URL in Azure so the Bot Service knows where to send Skype messages. Go to portal.azure.com → your Azure Bot resource → Configuration. In the 'Messaging endpoint' field, enter your deployed API route URL (e.g., https://your-app.netlify.app/api/bot/skype). Click 'Apply'. Azure will validate that the endpoint is reachable and responds correctly. If validation fails, check that your deployed app is running and that the endpoint returns 200 for the Bot Framework's validation request. To test the bot before connecting to Skype, use Azure's built-in 'Test in Web Chat' feature in the Azure Portal — this lets you send messages to your bot and see responses without a Skype account. After testing in Web Chat, go to the Skype channel settings in Azure → 'Add to Skype' link and click it to add your bot to your Skype contacts. Send it a message to test the full end-to-end flow. Note that bot approval for publishing to all Skype users requires Microsoft review, but personal bot testing (adding directly via the Skype link) works immediately.

Bolt.new Prompt

Create a bot testing page at /admin/bot-test that sends test messages to the bot and displays the responses. The page should have a simple chat interface where I can type messages and see the bot's responses. Connect it to a /api/bot/test-message endpoint that sends a direct message to the bot's messaging endpoint (my own deployed URL) formatted as a Bot Framework Activity and returns the bot's response. This lets me test bot logic without going through Skype.

Paste this in Bolt.new chat

Pro tip: Azure's 'Test in Web Chat' is the fastest way to test your bot logic before connecting Skype. Use it to verify your message handling, error cases, and response formatting before adding the Skype channel.

Expected result: The messaging endpoint URL is registered in Azure. Testing in Azure's Web Chat shows the bot responding correctly to messages. Adding the bot to Skype via the channel's 'Add to Skype' link allows direct testing from Skype.

4

Migrate to Microsoft Teams (Recommended)

Given Microsoft's shutdown of consumer Skype in May 2025, any new bot development should target Microsoft Teams rather than Skype. The migration path is straightforward if you're already using the Bot Framework: Teams uses the same Bot Framework SDK and Activity model as Skype. The core bot handling code is identical — the same ActivityTypes.Message handler works for both channels. To add Teams support, go to your Azure Bot → Channels → Microsoft Teams and enable it. Your existing bot immediately becomes available in Teams. Teams provides additional features not available in Skype: Teams-specific activities (meeting joined, member added to team), Adaptive Cards for rich interactive content, task modules (pop-up dialogs), messaging extensions (slash commands), tabs (web content embedded in Teams), and app manifests for distributing your bot through the Teams Store. Update your bot to use Teams-specific message formats: instead of plain text, use Adaptive Card JSON for structured, interactive responses. Teams also supports proactive messaging to channels (not just conversations), which allows your bot to post notifications to Teams channels — more powerful than Skype's person-to-person messaging model.

Bolt.new Prompt

Add Microsoft Teams support to my existing bot. In the Azure Bot, I've already enabled the Teams channel. Update the bot handler at /api/bot/skype to also handle Teams-specific activities. For Teams messages, respond with an Adaptive Card instead of plain text: create a card with a title, description, and two action buttons ('Get Help' and 'View Status'). Use BotBuilder's CardFactory.adaptiveCard() to create the card. Update the messaging endpoint URL in Azure if needed. The same endpoint should handle both Skype and Teams messages.

Paste this in Bolt.new chat

lib/teams-bot.ts
1// Teams-specific Adaptive Card response
2import { CardFactory, MessageFactory } from 'botbuilder';
3
4async function handleTeamsMessage(context: TurnContext, text: string) {
5 const card = CardFactory.adaptiveCard({
6 type: 'AdaptiveCard',
7 version: '1.4',
8 body: [
9 {
10 type: 'TextBlock',
11 size: 'Medium',
12 weight: 'Bolder',
13 text: 'Bot Response',
14 },
15 {
16 type: 'TextBlock',
17 text: `You asked: ${text}`,
18 wrap: true,
19 },
20 ],
21 actions: [
22 {
23 type: 'Action.Submit',
24 title: 'Get Help',
25 data: { action: 'help' },
26 },
27 {
28 type: 'Action.Submit',
29 title: 'View Status',
30 data: { action: 'status' },
31 },
32 ],
33 });
34
35 await context.sendActivity(MessageFactory.attachment(card));
36}

Pro tip: Use the same Azure Bot resource and Bot Framework endpoint for both Skype and Teams — enabling multiple channels in Azure routes messages from all channels to the same endpoint, and context.activity.channelId tells you which channel the message came from ('skype' or 'msteams').

Expected result: The same bot endpoint handles messages from both Skype and Teams. Teams users see Adaptive Card responses with action buttons. Skype users see plain text responses. context.activity.channelId correctly identifies the source channel.

Common use cases

Skype Notification Bot

Build a bot that sends automated notifications to Skype users or groups when events happen in your Bolt app — new orders, alerts, status updates. The bot uses proactive messaging to initiate conversations without users typing first. Requires storing conversation references after initial user interaction.

Bolt.new Prompt

Create a notification bot that sends Skype messages when important events occur in my app. Create /api/bot/skype as the Bot Framework messaging endpoint. When the bot receives a conversationUpdate activity showing a user joined, store their conversation reference in the database. Create /api/notifications/send that accepts a userId and message, looks up their conversation reference, and sends a proactive message via the Bot Connector API to the stored conversation endpoint.

Copy this prompt to try it in Bolt.new

Skype FAQ Bot

Create a simple question-and-answer bot that responds to common questions in Skype. Users type questions; the bot matches keywords to predefined answers and returns formatted responses with suggested follow-up actions. Useful for support bots or internal help desks before the Skype to Teams migration.

Bolt.new Prompt

Build an FAQ bot for Skype. Create /api/bot/skype as the messaging endpoint. When a message activity comes in, match the message text against a predefined FAQ list in a JSON file. If there's a match, reply with the answer. If no match, reply 'I don't know the answer to that. Try asking: [list the 3 most common questions]'. Add a greeting when users first message the bot. Keep all FAQ logic in a lib/faq.ts file with an array of {keywords, answer} objects.

Copy this prompt to try it in Bolt.new

Command-Based Status Bot

Create a Skype bot that responds to slash commands for checking system status, querying data, or triggering actions in your Bolt app. Users type commands like '/status', '/report today', or '/alert team' and the bot executes the corresponding action and replies with results.

Bolt.new Prompt

Build a command bot for Skype that responds to commands starting with '/'. Create /api/bot/skype as the Bot Framework endpoint. Parse incoming message text for commands: '/status' returns system health metrics from my database, '/help' lists available commands, '/report [date]' fetches and returns a daily summary for the given date. For unrecognized commands, reply with 'Unknown command. Type /help for available commands.' Format responses using Bot Framework's MessageFactory with markdown-formatted text.

Copy this prompt to try it in Bolt.new

Troubleshooting

Bot endpoint returns 401 Unauthorized when Azure sends messages

Cause: The Bot Framework authentication is failing. This happens when MICROSOFT_APP_ID or MICROSOFT_APP_SECRET is wrong, or when the botbuilder adapter is configured with the wrong credentials.

Solution: Verify MICROSOFT_APP_ID matches the App ID shown in Azure Bot → Configuration. Verify MICROSOFT_APP_SECRET is the client secret value (not the secret ID) from the App Registration → Certificates & secrets. If the secret expired, create a new one and update your environment variable. Redeploy after updating environment variables — changes to .env on Netlify/Bolt Cloud require a redeploy to take effect.

Azure says 'Messaging endpoint URL is invalid' when saving configuration

Cause: The endpoint URL is unreachable, returns a non-200 status, or uses HTTP instead of HTTPS. Azure validates the endpoint when saving.

Solution: Ensure your app is deployed and the /api/bot/skype route exists and returns 200 for POST requests. Azure requires HTTPS — use your full HTTPS deployment URL. If using Netlify, ensure the deployment completed successfully before registering the URL in Azure.

Bot responds in Azure Web Chat but not in Skype

Cause: The Skype channel may not be fully configured, or your bot hasn't been added to Skype correctly. Consumer Skype access may also be affected by the May 2025 shutdown timeline.

Solution: Check the Skype channel status in Azure Bot → Channels. Ensure the Skype channel shows as 'Enabled'. Use the 'Add to Skype' link from the channel settings to add the bot directly. Note that consumer Skype is being shut down in May 2025 — if you're building after that date, switch to Microsoft Teams which uses the same Bot Framework infrastructure.

Best practices

  • For any new bot development, use Microsoft Teams instead of Skype — consumer Skype is shutting down in May 2025 and Teams uses the same Bot Framework SDK
  • Store MICROSOFT_APP_SECRET as a server-side environment variable — it authenticates all Bot Framework messages and must never appear in client-side code
  • Validate Bot Framework JWT tokens on every incoming request using the botbuilder adapter — never skip authentication even for testing
  • Respond to Bot Framework messages within 5 seconds — for longer operations, send an immediate acknowledgment and process asynchronously
  • Use context.activity.channelId to detect whether the message comes from 'skype' or 'msteams' and tailor your response format accordingly
  • Register your deployed HTTPS URL as the messaging endpoint in Azure — the WebContainer has no public URL and cannot receive Bot Framework messages during development
  • Test your bot logic using Azure's built-in Web Chat testing tool before connecting Skype, to catch errors without needing a Skype account
  • Set a rotating client secret expiry date and monitor it — if your App Secret expires, the bot stops authenticating and all messages fail silently

Alternatives

Frequently asked questions

Is Skype being shut down?

Yes. Microsoft announced in February 2025 that consumer Skype will shut down in May 2025. Users are being migrated to Microsoft Teams for free. Skype for Business (the enterprise version, part of Microsoft 365) continues under the Teams for Business branding. For new bot development, Microsoft Teams is the strongly recommended platform — it uses the same Bot Framework SDK and offers richer bot capabilities.

Can I test my Skype bot in Bolt's WebContainer preview?

Not end-to-end. Bot development logic (parsing activity objects, formatting responses) can be developed in Bolt, and you can test this logic with hardcoded test payloads. However, the actual Skype channel communication requires your bot endpoint to be a publicly accessible HTTPS URL that Azure can call. Deploy to Netlify or Bolt Cloud first, then register your deployed URL in Azure and use Azure's 'Test in Web Chat' for integration testing.

Does the same Azure Bot work for both Skype and Microsoft Teams?

Yes. An Azure Bot resource can have multiple channels enabled simultaneously. The same messaging endpoint URL receives activities from all enabled channels. Use context.activity.channelId in your handler to detect the source ('skype' for Skype, 'msteams' for Teams) and tailor responses accordingly. This makes migration from Skype to Teams straightforward — enable the Teams channel and update your response formatting for Teams-specific features.

Do I need Azure to build a Skype bot?

Yes. Skype bot communication goes through Azure Bot Service — there is no way to connect directly to Skype's messaging infrastructure without Azure. You need an Azure account and Azure Bot resource. The Azure Bot Service's free tier (F0) includes 10,000 standard messages per month at no cost, which is sufficient for development and small production bots. Higher volume requires the Standard tier at $0.50 per 1,000 messages.

What are the differences between Skype and Microsoft Teams bots?

Both use the same Bot Framework SDK and Azure Bot Service infrastructure. The key differences are: Teams supports Adaptive Cards for rich interactive UI while Skype has limited card support; Teams allows bots to be installed in channels (not just conversations) for proactive team-wide messaging; Teams supports task modules (pop-up dialogs) and messaging extensions (slash commands in compose box); Teams has better enterprise features like Single Sign-On and admin policies. Teams bots are strictly more capable than Skype bots.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Need help with your project?

Our experts have built 600+ apps and can accelerate your development. Book a free consultation — no strings attached.

Book a free consultation

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.