Microsoft Teams Bot - User cannot initiate conversation - botframework

We have a sideloaded Microsoft Teams bot (called Axel), fully operational and running in production. The bot is able to send messages (including proactive), receive messages, etc.
However, users cannot initiate a conversation with the bot -- the bot MUST send a message first for it to work. I believe this is not expected / desired behavior. When searching for the bot in the search tab, we find it, but when clicking on its name nothing happens.
How can we make it possible for users to initiate conversations with the bot?
Edit: here is our redacted manifest.json file
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.3/MicrosoftTeams.schema.json",
"manifestVersion": "1.3",
"version": "1.0.0",
"id": "{app_id}",
"packageName": "com.package.name",
"developer": {
"name": "HeyAxel",
"websiteUrl": "https://heyaxel.com",
"privacyUrl": "https://www.heyaxel.com/files/Privacy_Policy.pdf",
"termsOfUseUrl": "https://www.heyaxel.com/files/Privacy_Policy.pdf"
},
"icons": {
"color": "color.png",
"outline": "outline.png"
},
"name": {
"short": "Axel",
"full": "Axel"
},
"description": {
"short": "shortdesc",
"full": "fulldesc"
},
"accentColor": "#F9F9FA",
"bots": [
{
"botId": "{bot_id}",
"scopes": [
"team"
],
"supportsFiles": true,
"isNotificationOnly": false
}
],
"permissions": [
"identity",
"messageTeamMembers"
],
"validDomains": [
"{domain1}",
"{domain2}"
]
}
Translation of scopes:
Receive messages & data from me
Send me messages & notification
Access profile info
Receive messages & data from users in channels
Send messages & notifications in a channel Access team information

Your bot only has the "team" scope enabled.
Open your manifest.json in App Studio.
Go to the Bots section
Click Edit
Enable the Personal scope
Alternatively, you can just add the scope manually, then re-sideload/publish your bot.
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.3/MicrosoftTeams.schema.json",
"manifestVersion": "1.3",
"version": "1.0.0",
"id": "{app_id}",
"packageName": "com.package.name",
"developer": {
"name": "HeyAxel",
"websiteUrl": "https://heyaxel.com",
"privacyUrl": "https://www.heyaxel.com/files/Privacy_Policy.pdf",
"termsOfUseUrl": "https://www.heyaxel.com/files/Privacy_Policy.pdf"
},
"icons": {
"color": "color.png",
"outline": "outline.png"
},
"name": {
"short": "Axel",
"full": "Axel"
},
"description": {
"short": "shortdesc",
"full": "fulldesc"
},
"accentColor": "#F9F9FA",
"bots": [
{
"botId": "{bot_id}",
"scopes": [
"team",
"personal",
"groupchat"
],
"supportsFiles": true,
"isNotificationOnly": false
}
],
"permissions": [
"identity",
"messageTeamMembers"
],
"validDomains": [
"{domain1}",
"{domain2}"
]
}
Also, be sure that you've enabled the Teams Channel by going to:
Azure Portal
Your Resource Group
Your Web App Bot or Bot Channels Registration Service
Channels
Enable the Teams Channel

Related

Azure Bot added to Microsoft Teams returning "The bot is not part of the conversation roster" error

I have an Azure bot that we are using to build a message extension functionality in Microsoft Teams.
Users access it via the conversation feature in team channel. It works by taking a search string entered by a user in the message extension, searching our database for matching entries, and once an entry is selected posting a message into a team channel linking to the resource.
It is working as expected in all environments except for Production, where we see the following behaviour:
Some search strings return the expected ("nothing found") response
But most search strings return a 502 error. The bot's log says "The bot is not part of the conversation roster"
We are sideloading the manifest for the bot and its associated tab app. As far as I can tell, there are no differences in bot or app setup between Production and the other apps we setup (QA, staging, etc)
I've checked the other SO posts and those on the Microsoft PowerUsers forum. They mostly say that the bot needs to be added to Teams in Azure, but this has been done. And it's working for all of our environments except for Production...
This is the manifest. It references the eduMe app already published in AppSource:
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.11/MicrosoftTeams.schema.json",
"manifestVersion": "1.11",
"version": "1.1.3",
"id": "28beac77-2765-4248-8a25-02779d7242ca",
"packageName": "com.microsoft.teams.extension",
"developer": {
"name": "eduMe",
"websiteUrl": "https://edume.com",
"privacyUrl": "https://edume.com",
"termsOfUseUrl": "https://edume.com"
},
"icons": {
"color": "resources/edume-hexamark.png",
"outline": "resources/edume-outline-hexamark.png"
},
"name": {
"short": "eduMe Beta_test2",
"full": "eduMe Beta_test2"
},
"description": {
"short": "Giving the deskless workforce seamless access to relevant knowledge",
"full": "Training your workforce doesn't need to be painful. No more clunky authoring tools and dated, desktop based learning. eduMe helps you deliver the training when and where your workforce need it."
},
"accentColor": "#F3F3FF",
"bots": [
{
"botId": "e9aa4df6-ed17-423f-bb7a-5cb1f6f090d7",
"scopes": ["personal", "team", "groupchat"],
"supportsFiles": false,
"isNotificationOnly": true
}
],
"composeExtensions": [
{
"botId": "29b96f25-2032-4fa4-8abd-5ac8f652699f",
"commands": [
{
"id": "searchQuery",
"context": ["compose", "commandBox"],
"description": "Command to search courses.",
"title": "Search",
"type": "query",
"parameters": [
{
"name": "searchQuery",
"title": "Search Query",
"description": "Your search query",
"inputType": "text"
}
]
}
]
}
],
"configurableTabs": [
{
"configurationUrl": "https://edume-ms-teams.herokuapp.com/index.html#/config",
"canUpdateConfiguration": true,
"scopes": ["team", "groupchat"]
}
],
"staticTabs": [
{
"entityId": "index",
"name": "Home",
"contentUrl": "https://edume-ms-teams.herokuapp.com/index.html#/tab",
"websiteUrl": "https://edume-ms-teams.herokuapp.com/index.html#/tab",
"scopes": ["personal"]
}
],
"permissions": ["identity", "messageTeamMembers"],
"validDomains": [
"localhost",
"*.microsoftonline.com",
"*.herokuapp.com",
"*.botframework.com",
"edume.com"
],
"webApplicationInfo": {
"id": "29b96f25-2032-4fa4-8abd-5ac8f652699f",
"resource": "api://edume-ms-teams.herokuapp.com/29b96f25-2032-4fa4-8abd-5ac8f652699f"
}
}

Microsoft Teams Manifest isFullScreen doesn't work

I am using the yeomen generator to create a Microsoft Teams Application with NodeJS and React. https://learn.microsoft.com/en-us/microsoftteams/platform/tabs/quickstarts/create-personal-tab-node-yeoman
I implemented the "isFullScreen" option into the Schema, but it just doesn't work. Here my Schema:
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.7/MicrosoftTeams.schema.json",
"manifestVersion": "1.7",
"packageName": "TeamsApp",
"id": "8af948a0-0fc1-409c-942a-9376fc2d7f46",
"version": "1.0.2",
"isFullScreen": true,
"showLoadingIndicator": true,
"developer": {
"name": "xxx GmbH",
"websiteUrl": "https://www.xxx.de",
"privacyUrl": "https://www.xxx.de/Datenschutz",
"termsOfUseUrl": "https://www.xxx.de",
"mpnId": "1512061"
},
"name": {
"short": "Teams App",
"full": "Teams App Tool "
},
"description": {
"short": "xxx",
"full": "xxx"
},
"icons": {
"outline": "icon-outline.png",
"color": "icon-color.png"
},
"accentColor": "#004578",
"staticTabs": [
{
"contentUrl": "https://xxx.ngrok.io/overviewTab",
"entityId": "TeamsApp",
"name": "Overview",
"scopes": ["personal"]
}
],
"validDomains": [
"*.eu.ngrok.io"
]
}
I Developed a Microsoft Teams App with SPfx before and there the option worked completely fine. I also tried using the App Studio Application where the "isFullScreen" option is displayed, but even there it does not do anything.
In a another Post from 3 Months ago they just said it should work now. isFullScreen manifest setting doesn't do anything
"isFullScreen" works only with LoB Store Apps.

Microsoft Teams: Messaging Extension with Search-based commands

I'm testing Teams Messaging Extension for Search-based commands. After creating solution with "YO TEAMS" and creating BOT in Azure with BotId / AppId and password / Secret. And put these as values in .env file in solution.
By running the command "gulp ngrok-serve" I get ngrok url generated and things look like it should be fine. But by uploading a .zip file from the package folder in Teams, I get the error message "Unable to reach app, Please try again".
Just to test, I have created another solution with only "Tab". And I get almost the same error message when I try to upload .zip,
"There was a problem reaching this app"
There are many frustrating tutorials some old and some new. By running the command "gulp ngrok-serve" you start ngrok for tunnel. And ngrok URL that is generated seems to work:
And the URL is stored as an endpoint for BOT in Azure:
So what have I missed here since it does not work?
Here is my manifest file:
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.6/MicrosoftTeams.schema.json",
"manifestVersion": "1.6",
"id": "{{APPLICATION_ID}}",
"version": "{{VERSION}}",
"packageName": "{{PACKAGE_NAME}}",
"developer": {
"name": "gonadn consulting",
"websiteUrl": "https://{{HOSTNAME}}",
"privacyUrl": "https://{{HOSTNAME}}/privacy.html",
"termsOfUseUrl": "https://{{HOSTNAME}}/tou.html"
},
"name": {
"short": "TeamsMsgExtSearch",
"full": "TeamsMsgExtSearch"
},
"description": {
"short": "TODO: add short description here",
"full": "TODO: add full description here"
},
"icons": {
"outline": "icon-outline.png",
"color": "icon-color.png"
},
"accentColor": "#D85028",
"configurableTabs": [],
"staticTabs": [],
"bots": [],
"connectors": [],
"composeExtensions": [
{
"botId": "{{MICROSOFT_APP_ID}}",
"canUpdateConfiguration": false,
"commands": [
{
"id": "msgSearchCommandMessageExtension",
"title": "MsgSearchCommand",
"description": "Add a clever description here",
"initialRun": true,
"parameters": [
{
"name": "parameter",
"description": "Description of the parameter",
"title": "Parameter"
}
],
"type": "query"
}
]
}
],
"permissions": [
"identity",
"messageTeamMembers"
],
"validDomains": [
"{{HOSTNAME}}"
],
"showLoadingIndicator": false
}
Link to Git Repo

Failed to load the package The add-in package provided was not understood. Verify that the submitted file is a valid Office add-in package

I am trying to publish a MS Teams Chat bot on App Source but have came across the following error
Here is how my manifest.json file looks like
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.5/MicrosoftTeams.schema.json",
"manifestVersion": "1.5",
"version": "1.0.1",
"id": "0007-0007-4a9f-8163-0007",
"packageName": "MyBOT.Manifest",
"developer": {
"name": "MyCompany",
"websiteUrl": "https://MyBOT.azurewebsites.net",
"privacyUrl": "https://MyBOT.azurewebsites.net/Privacy",
"termsOfUseUrl": "https://MyBOT.azurewebsites.net/Termsofuse",
"mpnId": "0007"
},
"localizationInfo": {
"defaultLanguageTag": "en-us"
},
"icons": {
"color": "icon-color.png",
"outline": "icon-outline.png"
},
"name": {
"short": "MyBOT",
"full": "MyBOT Virtual Assistant"
},
"description": {
"short": "MyBOT",
"full": "I am a Virtual Assistant, continuously in training to enhance my skills. Currently, I can help you by answering inquiries related to COVID-19, Zoom, Webex, Microsoft Office, Adobe, Microsoft Azure and Xbox. For questions that are not currently in my search database, I leverage the web to fetch you those information."
},
"accentColor": "#F9F9FA",
"bots": [
{
"botId": "0007-0007-4a9f-8163-0007",
"needsChannelSelector": false,
"isNotificationOnly": false,
"scopes": [ "team", "personal", "groupchat" ],
"supportsFiles": false,
"isNotificationOnly": false,
"commandLists": [
{
"scopes": [ "team", "groupchat" ],
"commands": [
{
"title": "help",
"description": "Provides you the list of commands that you can enter"
},
{
"title": "cancel",
"description": "Cancels the current operation"
}
]
},
{
"scopes": [ "personal", "groupchat" ],
"commands": [
{
"title": "main menu",
"description": "This command takes you to the main menu"
},
{
"title": "help",
"description": "Provides you the list of commands that you can enter"
}
]
}
]
}
],
"permissions": [
"identity",
"messageTeamMembers"
],
"validDomains": [
"token.botframework.com"
]
}
The validator gives the following error as well
I have looked into Stackoverflow for this message as well as searched online but I am not able to get an exact article on how to fix this issue. I read about how the app has to work for all types of devices but the manifest.json file doesnt show how that is to be done. Can someone forward me a template that I can build my manifest.json file on? Or am I doing something wrong altogether?
Thank you.
This file resolved the issue. We used AppStudio to get this file.
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.7/MicrosoftTeams.schema.json",
"manifestVersion": "1.7",
"version": "1.0.0",
"showLoadingIndicator": true,
"isFullscreen": true,
"id": "80007-8049-0007-8163-e89f9a80007",
"packageName": "com.myCompany.myBOT",
"developer": {
"name": "myCompany Services",
"websiteUrl": "https://myBOT.azurewebsites.net",
"privacyUrl": "https://myBOT.azurewebsites.net/Privacy",
"termsOfUseUrl": "https://myBOT.azurewebsites.net/Termsofuse",
"mpnId": "00000"
},
"icons": {
"color": "color.png",
"outline": "outline.png"
},
"name": {
"short": "myBOT",
"full": "myBOT Virtual Assistant"
},
"description": {
"short": "myBOT",
"full": "I am a Virtual Assistant, continuously in training to enhance my skills. Currently, I can help you by answering inquiries related to COVID-19, Zoom, Webex, Microsoft Office, Adobe, Microsoft Azure and Xbox. For questions that are not currently in my search database, I leverage the web to fetch you those information."
},
"accentColor": "#F9F9FA",
"bots": [
{
"botId": "80007-8049-0007-8163-e89f9a890007",
"scopes": [
"team",
"personal",
"groupchat"
],
"supportsFiles": false,
"isNotificationOnly": false
}
],
"permissions": [
"identity",
"messageTeamMembers"
],
"validDomains": [] }
Can someone forward me a template that I can build my manifest.json
file on?
You can maybe start with this one (specifically for search extension), but you'll obviously want to change/trim/add it to do what you are actually wanting to do.
https://github.com/microsoft/BotBuilder-Samples/blob/master/samples/csharp_dotnetcore/50.teams-messaging-extensions-search/TeamsAppManifest/manifest.json
More samples have other examples of manifest files.
Additionally, you may want to try and create a manifest from App Studio (MS Teams app that allows you to create them).
"IsNotificationOnly"property is added twice in the manifest. Can you please try deleting it and check again.
Assuming that you already have two files "icon-color.png" and "icon-outline.png" along with the manifest.json in the app package zip file. Can you please verify if all three files are added to a zip files and no folder is created inside the zip package.

MS Teams app to display intranet works on mobile client but not on Windows

I've made a really simple Teams app which aims to display our internal company Intranet on a tab within teams.
This works on the mobile version of teams, but does not work on the Windows client.
Also, using the web client, it throws a error stating 'This content can't be shown in a frame'.
The manifest is as follows...
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.5/MicrosoftTeams.schema.json",
"manifestVersion": "1.5",
"version": "1.0.0",
"id": "72545647f-dd7c-4205-8749-7351561561f2",
"packageName": "<companyname>.teams.intranet.app",
"developer": {
"name": "John",
"websiteUrl": "https://www.<WEBSITE_URL>.uk",
"privacyUrl": "https://randomdomain.co.uk/ps",
"termsOfUseUrl": "https://randomdomain.co.uk/tou"
},
"icons": {
"color": "color.png",
"outline": "outline.png"
},
"name": {
"short": "Intranet",
"full": "Intranet"
},
"description": {
"short": "Bring the functionality of our Intranet into Teams",
"full": "The <COMPANYNAME> Intranet app will introduce an Intranet tab into teams"
},
"accentColor": "#FFFFFF",
"configurableTabs": [
{
"configurationUrl": "https://intranet.<companyname>.uk",
"canUpdateConfiguration": false,
"scopes": [
"team"
],
"supportedSharePointHosts": [
"sharePointFullPage"
]
}
],
"staticTabs": [
{
"entityId": "intranet",
"name": "intranet",
"contentUrl": "https://intranet.<companyname>.uk",
"websiteUrl": "https://intranet.<companyname>.uk",
"scopes": [
"personal"
]
}
],
"permissions": [
"identity",
"messageTeamMembers"
],
"validDomains": [
"intranet.<companyname>.uk"
]
}
Am I missing something?
Any help greatly appriciated :)
Your tabs needs to allow itself to be iframed.
Please go through this link to see how tabs work.

Resources