Skip to content

Teams, Zalo and the website widget ​

Genie can answer outside its own web app: in Microsoft Teams and other chat apps, on your company's Zalo Official Account, and in a chat window on a website such as your intranet. Each of these is a channel that you connect to one agent. The agent's instructions, knowledge bases and tools decide what the channel can answer. Use this page when you bring Genie to the places where people already write. Admins and Owners set up channels in Settings, in the Publish & integrations group; other members just chat with Genie in them.

IM channels ​

An IM channel connects one bot in a chat app to one agent in your workspace. People write to the bot, and the agent answers in the chat.

Open Settings (account menu at the bottom of the sidebar) → IM channels. The page shows one card per channel: its name, the chat app's logo and the agent that answers. A channel that is turned off carries a Disabled tag. Use Filter by agent to see the channels of one agent.

Besides Microsoft Teams and Zalo, the Platform list includes Slack and Telegram; you set them up the same way, with the bot credentials from their own consoles.

Screenshot coming soonSettings → IM channels: add a channel for Teams, Zalo or another chat app; each bot gets a cardwebsite-docs/public/screenshots/en/im-channels.png
Settings → IM channels: add a channel for Teams, Zalo or another chat app; each bot gets a card

Add a channel ​

Prepare the bot in the chat app first, so you have its credentials at hand (see Microsoft Teams and Zalo Official Account). Then:

  1. Open Settings → IM channels and choose Add Channel.
  2. Basic info: choose the Bound agent (the agent that answers) and the Platform. Change the Channel Name if you like; it defaults to the platform name. Under Linked accounts, decide whether to turn on Require linked Genie accounts (see Linked chat accounts).
  3. Choose Next. Connection: pick the Connection Mode, Output Mode, Session Mode and Reply Language (see the table below).
  4. Choose Next. File storage: optionally pick a File Storage Knowledge Base. For a Zalo channel this step is Knowledge instead (see Create the Zalo channel).
  5. Choose Next. Credentials: enter what the chat app gave you. The link above the fields opens the app's developer console.
  6. Choose Save. The bot starts answering at once.

To change a channel, click its card: the same four steps open, and Back returns to the previous one. Saved credentials are never shown again; leave a field blank to keep its value. The platform of an existing channel cannot be changed: add a new channel instead.

Channel settings ​

SettingWhat it does for users
Bound agentThe agent that answers in this chat app. You can switch it later; the bot in the chat app stays the same.
Channel NameThe name admins see in the list. On Zalo it also greets new followers.
Connection ModeHow messages reach Genie. With WebSocket, Genie keeps a connection open to the chat app, so the app never has to reach Genie from the internet; it is the recommended choice where offered. With Webhook, the chat app calls Genie: after saving, copy the Callback URL shown in this step into the app's console. Microsoft Teams and Zalo offer Webhook only.
Output ModeStreaming shows the answer while it is written, by editing one message. Full Response sends it once it is complete. Zalo uses Full Response only.
Session ModePer User (default): each person has their own conversation in each chat, and /clear starts a new one. Per Thread: each thread is one conversation that several people share. Per Thread exists only in apps with threads, such as Teams channels and Slack.
Reply LanguageFixes the language the agent answers in on this channel: English or Tiếng Việt. Use system default follows your Genie's default language.
File Storage Knowledge BaseWhen set, files people send to the bot are also saved into this knowledge base, in the background. Pick one whose readers may see whatever people send.
Require linked Genie accountsWhen on, the bot answers only people who linked their chat account to their Genie account.
Enable channelShown when you edit a channel. Off: the bot stops answering.

Turn a channel on or off ​

  • To pause a bot, open the menu (⋯) on its card and choose Off. The bot stops answering at once; its settings and linked accounts stay. Choose On to resume. Enable channel in the channel's settings does the same.
  • To remove a bot for good, choose the delete icon on its card and confirm with Delete. This cannot be undone, and everyone who linked an account on that channel loses the link.
  • Deleting an agent also deletes its IM channels.

Which agent answers ​

Every channel answers with exactly one agent, its Bound agent. The agent's instructions, knowledge bases, tools and web search setting apply as in the web app, and people in the chat cannot pick other knowledge bases or agents. To offer both the HR assistant and the Sales assistant in Teams, register two bots and create two channels.

The agent's Who can use it setting (see Agents and the default assistant) still applies in the chat:

  • People who have not linked their account count as a Viewer. If the agent is limited to chosen members, or to a role above Viewer, the bot asks them to send /link first.
  • Linked people whom the restriction leaves out are told to ask a workspace admin for access.

Commands ​

In every chat app except Zalo, people can send these commands to the bot. In a Teams channel or group chat they mention the bot first, for example @HR assistant /help.

CommandWhat it does
/helpShows the commands
/linkSends the person a one-time link to link their chat account to their Genie account
/unlinkRemoves that link
/infoShows what the agent can use: knowledge bases, skills, MCP services, web search
/search and some wordsSearches the agent's documents and returns the matching passages, without writing an answer
/stopStops the answer in progress
/clearStarts a new conversation

Microsoft Teams ​

People can ask an agent in Microsoft Teams: in a direct chat with the bot, in a group chat, or in a team channel by mentioning it. The bot is an Azure Bot registered in your company's Microsoft Entra ID. Teams sends each message to Genie over the internet, and Genie answers through Microsoft's Bot Framework. Teams therefore needs to reach Genie on a public HTTPS address; if you are not sure yours is, ask your Genie provider.

What your Microsoft 365 admin prepares ​

Your Microsoft 365 or Azure admin needs an Azure subscription where they may create resources, and the right to create app registrations in Microsoft Entra ID. At Contoso, Minh Le does this for the HR assistant. Labels in italics are Azure's own.

  1. In the Azure portal, choose Create a resource → Azure Bot (the Create an Azure Bot link in Genie's Credentials step opens it). Fill in a bot handle, the subscription, the resource group and a pricing tier. The free F0 tier is enough; Teams messages cost nothing.
  2. Under Microsoft App ID, set Type of App to Single Tenant and Creation type to Create new Microsoft App ID. To reuse an existing app registration, it must be for "Accounts in this organizational directory only"; pick Use existing app registration.
  3. When the bot exists, open Settings → Configuration and copy the Microsoft App ID and the App Tenant ID (your directory ID).
  4. Next to the App ID, choose Manage Password, then Certificates & secrets → New client secret. Copy the secret's Value, not its Secret ID, and note when it expires.
  5. Open Channels, add Microsoft Teams, accept the terms and apply.

Connect the bot to Genie ​

  1. In Genie, open Settings → IM channels → Add Channel. Choose the agent (for example the HR assistant) and the platform Microsoft Teams.
  2. In Connection, the mode is always Webhook. Pick Streaming or Full Response. With Per Thread, each thread of a Teams channel gets its own conversation.
  3. In Credentials, enter the Microsoft App ID, the Client secret and the Directory (tenant) ID. Leave Multi-organization app off.
  4. Choose Save.
  5. Open the channel again and go to its Credentials step. The Microsoft Teams app section now shows the Messaging endpoint. Copy it.
  6. The Azure admin pastes it in the Azure Bot under Settings → Configuration → Messaging endpoint and applies.
  7. To check the setup before Teams, use Test in Web Chat in the Azure Bot: it gets the same answers as Teams.

If Genie warns that the messaging endpoint is not HTTPS, Teams cannot reach it: ask your Genie provider.

Multi-organization app is only for an older Azure Bot of type "Multi Tenant", which any Teams organization can install. With it off, Genie answers people from your own Microsoft 365 organization only. If you must turn it on, also turn on Require linked Genie accounts.

Install the app in Teams ​

  1. In the channel's Microsoft Teams app section, choose Download Teams app package. You get a zip file with the app description and two icons. The app is named after the agent and uses your product name, logo and colour.
  2. Your Teams admin uploads it in the Teams admin center: Teams apps → Manage apps → Upload new app. Custom apps must be allowed (Org-wide app settings → Custom apps) and the app must be allowed by your permission policy. A setup policy can pin it for everyone.
  3. To try it yourself first, in Teams choose Apps → Manage your apps → Upload an app → Upload a custom app. Your account needs a setup policy that allows uploading custom apps.
  4. To use the bot in a team channel, add the app to the team. In a group chat, add it from the chat's + menu.

Each download carries a higher version number, so uploading a new package updates the installed app.

What people see in Teams ​

  • In a direct chat, people just ask. In a channel or group chat they mention the bot: @HR assistant how many days of annual leave do I have?. Posts that do not mention the bot are ignored.
  • While the answer is written, a typing indicator (in direct and group chats). Then the formatted answer; a long answer arrives as several messages.
  • Under the answer, a list of up to 8 sources. Each links to the document in Genie, which opens only for people allowed to see it there.
  • When the bot is added to a chat or team, a short welcome that points to /help and /link. The bot's own texts are in Vietnamese when the person uses Teams in Vietnamese, and in English otherwise.
  • Files and images sent to the bot are not read yet; the bot asks for the question in words.

The user's side is described in Genie in Teams, Zalo and other apps.

Linked chat accounts ​

A chat app tells Genie who someone is in that app (in Teams, their Microsoft Entra account), not who they are in Genie. Until a person links the two:

  • they ask as a guest of the workspace with the Viewer role;
  • anyone who can reach the bot can ask about everything the agent can reach, except documents that have their own document permissions.

Linking makes the bot answer each person with their own permissions. It works in every chat app except Zalo.

  1. The person sends /link to the bot in a direct chat. In a group chat, the bot asks them to write directly, so the link is not shown to others.
  2. The bot replies with a personal link. It works once, for 10 minutes; a newer /link replaces it.
  3. They open the link, sign in to Genie if asked (with their Microsoft account when your workspace uses Microsoft Entra ID sign-in), check the chat account and the Genie account shown, and choose Link my account.
  4. From then on they ask as usual. /link names the linked account; /unlink removes the link.

Only an active member of the channel's workspace can confirm a link. Genie never links accounts on its own: even when people sign in to Genie with Microsoft Entra ID, each person sends /link once on each bot. At Contoso, Thu Hoang links her Teams account so the HR assistant can use the salary folder she may read.

What linking changes ​

  • The bot answers with the person's role and permissions in the workspace, checked again at every message: document permissions and the agent's Who can use it apply as in the web app.
  • When the account is disabled or leaves the workspace, the person counts as not linked again, and their link shows Inactive.
  • An answer posted in a group chat or channel is still visible to everyone there. Linking changes what the bot may look up for the person asking, not who reads the reply.
  • Conversations with the bot stay in the chat app; they do not appear in the person's Genie history, and Admins and Owners cannot read them in Genie either (see Who reads channel conversations).

Require linked accounts ​

Turn on Require linked Genie accounts in the channel's Basic info step, under Linked accounts. People who have not linked then get linking instructions instead of an answer; /help, /link, /unlink, /stop and /clear keep working for them. Turn it on whenever the agent can reach anything that not every employee may see, and always for a Multi-organization app.

Linked people ​

When you open a channel, Linked people lists who linked: their chat name and ID, the Genie account they linked to, and when. Inactive marks an account that can no longer act (disabled, or no longer a member); that person asks as a guest. Choose Unlink to remove a link: the person asks as a guest again, or must link again if the channel requires it. Only Admins and Owners see this list. It shows who linked which account, never what they asked. Linking and unlinking are recorded in the workspace audit log.

Zalo Official Account ​

Connecting your company's Zalo Official Account (OA) to an agent lets customers and dealers ask questions in Zalo, at any hour, and get answers from your public documents. For example, Contoso connects its OA to the Sales assistant, which answers customers from the Sales knowledge base (product catalogue and customer FAQ), marked Public.

A Zalo channel is a public channel: the people who write to it have no Genie account. So it always answers as a guest, from knowledge bases marked Public only (see Privacy on Zalo).

What the OA admin prepares ​

WhatWhere
A verified Zalo Official Accountoa.zalo.me. Zalo lets only verified OAs use its OA API.
A Zalo app linked to the OA, allowed to send messages through the OA (Quyền gửi tin và thông báo qua OA), to receive message events (Quyền nhận sự kiện quản lý tin nhắn) and, for follows, user events (Quyền nhận sự kiện quản lý người dùng)developers.zalo.me: create an app and link it to the OA
The app's App ID, app secret key and OA secret keyThe app's settings; the OA secret key is on the app's Webhook page
An admin of the OA, to approve the authorizationTheir Zalo account
At least one knowledge base marked PublicIn Genie: the knowledge base's settings → Data protection → Sensitivity (see Models and data protection)

Zalo calls Genie over the internet, so Genie needs a public HTTPS address, and Zalo may ask you to verify that domain in the Zalo app. Ask your Genie provider for the address.

Create the Zalo channel ​

  1. Open Settings → IM channels → Add Channel.
  2. Basic info: choose the Bound agent (for example the Sales assistant) and the platform Zalo Official Account. The Channel Name appears in the welcome message to new followers. Linked accounts states that account linking is off.
  3. Connection: Zalo uses Webhook and Full Response only, because Zalo cannot edit a sent message. Reply Language starts at Tiếng Việt; it also sets the channel's own messages, such as the welcome.
  4. Knowledge: Knowledge bases it may answer from offers only knowledge bases marked Public (others show Not public and cannot be picked), and selects all of them. Leave it empty to use the agent's own knowledge bases that are Public.
  5. Credentials: enter the Official Account ID, App ID, App secret key and OA secret key, then choose Save. The channel stays open on this step, which now shows the OA connection.
  6. Under In the Zalo app, copy the Webhook URL into the app's Webhook settings and turn on the events user_send_text, user_send_image, user_send_file, user_send_sticker, follow and unfollow. Leave Zalo's "filter by syntax" option off, or Zalo only sends messages that start with #.
  7. Copy the Official Account callback URL into the app's Official Account settings as the callback URL.

If the two URL fields stay empty, Genie has no public address yet: ask your Genie provider.

Authorize the OA ​

  1. Choose Authorize OA. Zalo opens its consent page, where an admin of the OA picks the OA and allows the app.
  2. Zalo sends the admin back to the channel, which shows Connected. The authorization link works once, within 15 minutes.

If the OA admin cannot open Genie, they can get a refresh token for the OA in Zalo's API Explorer. Choose Or paste a refresh token, paste it and choose Save; Genie tries it at once.

Genie renews the OA's access on its own. If renewal keeps failing, choose Authorize again. Disconnect deletes the OA's tokens: the channel stops answering until the OA is authorized again.

Test the channel ​

  1. From a test Zalo account, send any message to the OA. It is answered, and Last event received shows the time.
  2. Under Test message, choose Use last sender (with the sender's ID) to fill in the Test user ID, choose Save, then Send test message.

Zalo delivers only to someone who wrote to the OA in the last 7 days. That limit matters only for the test message: real answers go out within seconds.

What Zalo users see ​

The user sendsThe channel
A text messageAnswers it from the public knowledge bases, as plain text, with the sources in a follow-up message
An image or a link with a captionAnswers the caption
A sticker, image, GIF, file, voice message, video, location or contact cardReplies politely that it reads text only and asks for the question in words
Follows the OASends a welcome message with the channel's name
Unfollows the OACounts it; sends nothing
Many messages in a short timeAsks them to slow down

There are no commands on Zalo: a message that starts with / is a question like any other. Sources link only to public web pages; documents without one are listed by title, and links into Genie are never sent.

Privacy on Zalo ​

  • Public knowledge bases only. Each answer uses only knowledge bases marked Public, checked again at every message. A knowledge base switched to Internal, Confidential or Restricted stops being used at once. With no public knowledge base left, the agent answers without documents; it never falls back to the agent's other knowledge bases.
  • Always a guest. Senders ask as the workspace's guest with the Viewer role. There is no account linking. An agent limited under Who can use it to chosen members, or to a role above Viewer, does not answer on Zalo.
  • No memory, no profile. Long-term memory is neither read nor written, and no asker profile is used.
  • What Genie keeps. The conversation, like any chat; the Zalo user ID as the OA sees it (not a phone number or name); and, for 7 days, a record of each event Zalo sent, used to recognise repeats. The OA's tokens and secrets are encrypted and kept secure.

Mention the automatic assistant in your OA's privacy notice, and keep in public knowledge bases only what the company may show to anyone.

Activity on Zalo ​

The Credentials step of a Zalo channel shows the connection state (Connected, Needs attention or Not connected), warnings (for example no public knowledge base, or access about to expire), when the OA was authorized, and when its tokens expire. Under Activity you see Last event received, Last reply sent and Last error, and counts for Today, 7 days and 30 days: Questions received, Messages sent, Failed sends, Unsupported messages, New followers and Unfollows. Answers from names the knowledge bases in use. Choose Refresh to update.

Limits to know: answers longer than 2,000 characters arrive as several messages; Zalo shows no formatting, so headings, bold and tables are flattened; one OA per channel and one channel per OA. Reading images or files, broadcasts, Zalo Notification Service (ZNS) messages and handing a conversation over to a person are not supported.

Website widget ​

The website widget puts a chat window for one agent on your own website, for example the Contoso intranet. Visitors chat without a Genie account. Your web team adds the widget's code to the site; the code itself is described in Website widget in the integration guide.

Open Settings → Website widget. The page shows one card per widget with its agent; a widget that is turned off carries a Disabled tag.

Create a widget ​

  1. Open Settings → Website widget and choose New embed channel.
  2. Channel info: choose the Bound agent. Change the Name if you like; it defaults to the agent's name followed by "Web Embed".
  3. Choose Next. Security: under Allowed origins, enter the address of each site that will show the widget, one per line, for example https://intranet.contoso.test. Set Requests per minute and Daily request cap (see the table below).
  4. Choose Next. Capabilities: write a Welcome message, and choose whether to show Suggested questions, Show web search toggle and Show file upload.
  5. Choose Next. Appearance: set the Page title, Header title, Widget position, Default language and Primary color. Widget preview shows the launcher button.
  6. Choose Next. Webhooks: leave empty unless your developers asked for event callbacks.
  7. Choose Save. The drawer moves to the Deploy step, with the embed code and the Channel key. Hand the code to whoever runs the site.

To try the widget, choose Preview in the Deploy step, or in the menu (⋯) on its card.

Screenshot coming soonSettings → Website widget: where you add a widget for an agent and get its embed codewebsite-docs/public/screenshots/en/embed-widget.png
Settings → Website widget: where you add a widget for an agent and get its embed code

Widget settings ​

SettingWhat it does for visitors
Bound agentThe agent that answers. Its knowledge bases and tools decide what visitors can learn.
Allowed originsThe sites allowed to show the widget: the site that embeds it, not Genie's address. One full address per line, without a path, such as https://intranet.contoso.test. *.contoso.test allows every subdomain of contoso.test but not contoso.test itself. At least one entry is required.
Requests per minuteHow many requests one visitor's IP address may make per minute; more are refused for a moment. Default 30.
Daily request capHow many requests the whole widget may serve per day, across all visitors. It bounds the cost if the key is copied. Default 10,000.
Welcome messageShown before the visitor's first message. Leave empty to hide it.
Suggested questionsStarter questions, from the agent's settings and knowledge bases.
Show web search toggleGives visitors a web search button, off by default for each question. It appears only if the agent itself has web search turned on.
Show file uploadLets visitors attach images and documents. It needs an agent that accepts image uploads.
Page titleThe title in the chat header and the browser tab. It takes priority over the name.
Header titleFixed channel title always shows the page title; Follow session title names each conversation after its first question.
Widget positionThe corner where the launcher sits: Bottom right, Bottom left, Top right or Top left.
Default languageThe widget's language: English, Tiếng Việt or Browser / host default.
Primary colorThe colour of the launcher and the chat window.
Webhook URL, Webhook secretOptional. Genie sends an event to your server, over HTTPS, each time a visitor asks and each time an answer is complete, with the question or answer text.
Enable channelShown when you edit a widget. Off: the widget stops answering at once.

Who can use the widget ​

Visitors never sign in to Genie: whoever can use the widget asks as an anonymous guest of the workspace with the Viewer role. What decides who can open it is where and how the site embeds it. The Deploy step offers three ways:

  • iframe puts the full chat in a fixed area of a page; Widget adds a floating launcher in a corner. Both carry the Channel key in the page itself, so anyone who can open the page can read it. Use them for pages that are already restricted, such as an intranet behind your company sign-in.
  • Secure mode (recommended) keeps the channel key on your website's server. The site hands each visitor a key that lasts 30 minutes, after its own checks, for example only to staff signed in to the intranet. Your web developers add a small piece of server code; the Deploy step shows examples for Node.js and Go.

At Contoso, the HR assistant widget runs on https://intranet.contoso.test in Secure mode, so only signed-in staff get a key.

Turn off, reset the key, delete ​

  • Turn off: in the menu (⋯) on the card choose Off, or switch off Enable channel. The widget stops answering at once, everywhere it is embedded.
  • Reset the key: in the Deploy step, choose Reset channel key next to the Channel key and confirm with Reset. The old key stops working at once; every page or server that uses it must get the new one. Conversations visitors have open end. In Secure mode, keys your site already handed out keep working until they expire, within 30 minutes. Reset the key whenever it may have leaked.
  • Delete: choose the delete icon on the card and confirm with Delete. Every page that embeds the widget stops working.

Widget security ​

  • What visitors can reach. Everything the bound agent can reach as a Viewer: all of its knowledge bases, whatever their sensitivity, except documents that have their own document permissions. Unlike Zalo, the widget does not limit itself to knowledge bases marked Public, so bind it to an agent whose knowledge suits everyone who can open the page.
  • What visitors cannot change. They cannot choose other knowledge bases, documents, agents or models. Web search and file upload work only if you allowed them. The agent never queries Databases or Power BI for a visitor.
  • Agents with limited access. If the agent's Who can use it is limited to chosen members, or to a role above Viewer, the widget does not answer.
  • Allowed origins stop other websites from showing your widget in a browser. They do not identify visitors, and they cannot stop a program that holds the key. Use Secure mode and the request limits for that.
  • Request limits. Besides Requests per minute per visitor IP and the Daily request cap, Genie caps the whole widget at 20 times the per-IP limit per minute (at least 120), so changing IP addresses does not get around the limits.
  • Who sees the key. Only Admins and Owners open the widget's settings, where they can see, copy and reset the Channel key. If you use Secure mode and someone who should not have the key has seen it, reset it.
  • Event callbacks send the visitors' questions and the answers to the Webhook URL. Use an address on your own servers, and set a Webhook secret so your server can check that events come from Genie.

Who reads channel conversations ​

Genie keeps every channel conversation like any chat, so the bot remembers what was said earlier in it, until the retention period deletes it. Who can read it in Genie depends on the channel:

ChannelWho reads the conversation in Genie
Teams, Zalo and other chat appsNo one. The conversation belongs to the person in the chat app, the way a chat in the web app belongs to whoever had it. It appears in no one's sidebar, linked account or not, and Admins and Owners cannot open it.
The Genie APIOnly the application that had it: the API key that started it, or the user the request named. Admins and Owners cannot list or open it.
Website widgetAdmins and Owners. Visitors are not members of the workspace, so your team can follow up on their questions: at the top of the sidebar, switch My chats to the widget's name. Members do not see these conversations.

About Teams and Zalo, Admins and Owners still see the channel's settings, Linked people, a Zalo channel's activity counts and the usage figures. As with chats in the web app, these conversations count in the Analytics numbers, never with their questions or who asked (see What admins can see).

Security at a glance ​

Teams and other chat appsZalo Official AccountWebsite widget
Who can writeWhoever can reach the bot in the chat app; for Teams, people in your Microsoft 365 organizationAnyone on ZaloAnyone who can open a page that embeds it
Asks asTheir own Genie account when linked; otherwise a guest with the Viewer roleAlways a guest with the Viewer roleAlways an anonymous guest with the Viewer role
Knowledge reachedLinked: what that person may see. Guest: the agent's knowledge bases, except documents with their own permissionsOnly knowledge bases marked PublicThe agent's knowledge bases, except documents with their own permissions
Databases and Power BINot availableNot availableNot available
Who reads the conversation in GenieNo one, Admins and Owners includedNo one, Admins and Owners includedAdmins and Owners
LimitsBy default 10 messages a minute per person in each chat (commands are not counted); when many people ask at once, questions wait in lineThe same, plus Zalo's own limitsRequests per minute, a widget-wide limit per minute and the Daily request cap

Good to know ​

  • Only Admins and Owners see IM channels, Website widget and Linked people, and create, change, turn off and delete channels and widgets. Other members just chat with Genie in the channels.
  • If IM channels or Website widget is missing from your Settings, your deployment does not offer it: ask your Genie provider.
  • Answers given through chat apps and the widget appear in usage reports as IM bots and Website widget. The widget's settings show no usage figures; a Zalo channel shows its own counts. See Usage, analytics and audit.
  • Creating, changing, turning on or off and deleting an IM channel, and authorizing, disconnecting or testing a Zalo OA, are recorded in the workspace audit log, without secrets. Changes to website widgets, including key resets, are not recorded there.
  • The Teams client secret expires (at most 24 months). When it does, the bot stops answering: create a new secret in Microsoft Entra ID and enter it in the channel's Client secret field.
  • Microsoft Teams works with commercial Microsoft 365 and GCC. GCC High, DoD and Microsoft 365 operated by 21Vianet are not supported. Each Azure Bot can serve one channel only.
  • Teams and Zalo do not read files and images people send yet. Slack and Telegram do.
  • In a chat app, when the agent needs an MCP service that asks for a personal sign-in, the chat cannot open the sign-in window: the reply tells the person how to authorize, and they then send their message again.