unsw-edu-au / qbot Goto Github PK
View Code? Open in Web Editor NEWQuestion Bot - plugin for Microsoft Teams
License: MIT License
Question Bot - plugin for Microsoft Teams
License: MIT License
Hi all,
May I know how QBot is able to send the notification to users at the exact time every day.
I have built a solution to send the notification to users but not able to figure it out to send the notification to users at exact time the way Qbot is doing.
I have tried using web job to trigger the notification but there is the delay in sending user to user
Thanks.
This time I am able to sign in to the Dashboard app in teams and I could see details as in below image
Only problem here I am facing here is not able to create a Course and it is not even logging any logs to check the issue.
@microsoft Teams Developer Support
Bug with the user interface that clicking when there is 2 or more replies to a question clicking "Select Answer" does not respond.
The user much click to a different channel and return for the user interface to update to show which reply to select as correct.
The interface allows you to select the answer, but then has another bug that the interface does not update showing the selected correct answer until the navigating away from the channel
Repro steps: Try to select and submit an answer where there is 2 or more replies to a question.
This is in regards to the azure deployment template.
First, we have restrictions on where to deploy (Eu West and Global).
Even when i set the location to EU West i see that the code is still trying to create resources in US West.
In the Azure arm template I can se a reference to US West, and even though I have tried to change that it still is trying to use US West.
I have tried to deploy this in different regions (turned of our restrictions) but still it fails everytime on the Microsoft.BotService/botservices/Channels (internal server error).
I will note that I'm very novice around this stuff but I think I have followed every instruction.
Error:
{
"status": "Failed",
"error": {
"code": "UnknownError",
"message": "An unexpected error occurred. Exception: 'System.AggregateException: One or more errors occurred. ---> SkypeApsAdapter.SkypeApsAdapterException: Agent failed APS validation. ---> System.ArgumentException: UserTileExtraLargeUrl must use HTTPS.\r\n at Microsoft.Skype.Platform.AgentProvisioning.Contracts.ValidationHelper.ValidateUrl(Uri uri, Boolean allowNull, String name, Boolean requireHttpsScheme) in D:\a\_work\179\s\AgentProvisioning\Contracts\ValidationHelper.cs:line 84\r\n at Microsoft.Skype.Platform.AgentProvisioning.Contracts.AgentValidation.Validate(AgentDescriptionSkypeChannel agentDescription) in D:\a\_work\179\s\AgentProvisioning\Contracts\AgentHelper.cs:line 157\r\n at Microsoft.Skype.Platform.AgentProvisioning.Contracts.AgentValidation.Validate(AgentSkypeChannel agent) in D:\a\_work\179\s\AgentProvisioning\Contracts\AgentHelper.cs:line 149\r\n at SkypeApsAdapter.ApsAdapter.MergeAndNewAgent(Agent2 existingAgent, BotService bot, String botHistoryType, Boolean trackExceptions) in C:\__w\1\s\SkypeApsAdapter\ApsAdapter.cs:line 109\r\n --- End of inner exception stack trace ---\r\n at SkypeApsAdapter.ApsAdapter.MergeAndNewAgent(Agent2 existingAgent, BotService bot, String botHistoryType, Boolean trackExceptions) in C:\__w\1\s\SkypeApsAdapter\ApsAdapter.cs:line 116\r\n at SkypeApsAdapter.ApsAdapter.d__2.MoveNext() in C:\__w\1\s\SkypeApsAdapter\ApsAdapter.cs:line 42\r\n --- End of inner exception stack trace ---\r\n at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)\r\n at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)\r\n at Intercom.Helpers.TaskUtility.PropagateExceptions(Task task) in C:\__w\1\s\Utilities\Intercom.Helpers.Extensions\TaskUtility.cs:line 77\r\n at Intercom.Helpers.Concurrency.<>c__DisplayClass3_01.<_handleStatusCodes>b__0(Task
1 antecedent) in C:\__w\1\s\Utilities\Intercom.Helpers.Tasks\Concurrency.cs:line 61\r\n at System.Threading.Tasks.ContinuationResultTaskFromResultTask2.InnerInvoke()\r\n at System.Threading.Tasks.Task.Execute()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Intercom.Channels.Controllers.Skype.ApsAgentManager.<GetOrNewAgentAsync>d__3.MoveNext() in C:\\__w\\1\\s\\Intercom.Channels\\Controllers\\Skype\\ApsAgentManager.cs:line 48\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Intercom.Channels.Controllers.Skype.ApsAgentManager.<UpdateOrNewAgentAsync>d__4.MoveNext() in C:\\__w\\1\\s\\Intercom.Channels\\Controllers\\Skype\\ApsAgentManager.cs:line 66\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Intercom.Channels.Controllers.Shared.FirstPartyChannelConfigHelperBase
1.d__15.MoveNext() in C:\__w\1\s\Intercom.Channels\Controllers\Shared\FirstPartyChannelConfigHelperBase.cs:line 188\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Intercom.Channels.Controllers.Shared.FirstPartyChannelConfigHelperBase1.<UpdateConfigSettings>d__9.MoveNext() in C:\\__w\\1\\s\\Intercom.Channels\\Controllers\\Shared\\FirstPartyChannelConfigHelperBase.cs:line 80\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.ConfiguredTaskAwaitable
1.ConfiguredTaskAwaiter.GetResult()\r\n at Intercom.ResourceProvider.Channels.TeamsArmChannelManager.d__4.MoveNext() in C:\__w\1\s\Intercom.ResourceProvider\Channels\TeamsArmChannelManager.cs:line 58\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult()\r\n at Intercom.ResourceProvider.Channels.BaseTypedArmChannelManager
3.d__8.MoveNext() in C:\__w\1\s\Intercom.ResourceProvider\Channels\ArmChannelManager.cs:line 309\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()\r\n at Intercom.ResourceProvider.DataProviders.ChannelResourceDataProvider.d__9.MoveNext() in C:\__w\1\s\Intercom.ResourceProvider\DataProviders\ChannelResourceDataProvider.cs:line 113\r\n---> (Inner Exception #0) SkypeApsAdapter.SkypeApsAdapterException: Agent failed APS validation. ---> System.ArgumentException: UserTileExtraLargeUrl must use HTTPS.\r\n at Microsoft.Skype.Platform.AgentProvisioning.Contracts.ValidationHelper.ValidateUrl(Uri uri, Boolean allowNull, String name, Boolean requireHttpsScheme) in D:\a\_work\179\s\AgentProvisioning\Contracts\ValidationHelper.cs:line 84\r\n at Microsoft.Skype.Platform.AgentProvisioning.Contracts.AgentValidation.Validate(AgentDescriptionSkypeChannel agentDescription) in D:\a\_work\179\s\AgentProvisioning\Contracts\AgentHelper.cs:line 157\r\n at Microsoft.Skype.Platform.AgentProvisioning.Contracts.AgentValidation.Validate(AgentSkypeChannel agent) in D:\a\_work\179\s\AgentProvisioning\Contracts\AgentHelper.cs:line 149\r\n at SkypeApsAdapter.ApsAdapter.MergeAndNewAgent(Agent2 existingAgent, BotService bot, String botHistoryType, Boolean trackExceptions) in C:\__w\1\s\SkypeApsAdapter\ApsAdapter.cs:line 109\r\n --- End of inner exception stack trace ---\r\n at SkypeApsAdapter.ApsAdapter.MergeAndNewAgent(Agent2 existingAgent, BotService bot, String botHistoryType, Boolean trackExceptions) in C:\__w\1\s\SkypeApsAdapter\ApsAdapter.cs:line 116\r\n at SkypeApsAdapter.ApsAdapter.d__2.MoveNext() in C:\__w\1\s\SkypeApsAdapter\ApsAdapter.cs:line 42<---\r\n'."
}
}
ARM template does not validate that the base resource name or SQL user details meet required naming conventions. This causes deployment errors, because ARM allows incorrect naming and passwords.
Require validation for base resource:
Required validation for SQL password must meet minimum requirements here - https://docs.microsoft.com/en-us/sql/relational-databases/security/password-policy?view=sql-server-ver15#password-complexity
Hi,
First of all, thanks for making this solution available!
I've deployed the solution, tripple checked everything and as far as i can see haven't mixed up any app ids,clientid's , secrets etc. App is configured to use the Delegated permissions, admin consent has been given.
The dashboard app loads in Teams and shows the Sign In message. Signing in however resulted in a warning (AADSTS90002: Tenant 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx' not found. This may happen if there are no active subscriptions for the tenant. ) . The url it redirected to was https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/oauth2/authorize?response_type=id_token&client_id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx&redirect_uri=http%3A%2F%2Fhhs-qbot-questions-tab.azurewebsites.net%2Fapp-silent-end&state=fec80d89-ae0a-4cc5-bc4d-1dcfd7cef76b%7Cxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx&client-request-id=eaebf59c-044d-475e-8058-547bbf746403&x-client-SKU=Js&x-client-Ver=1.0.17&prompt=none&nonce=36ccd3a5-2a6e-4d27-90e5-f683fea845bf&iframe-request-id=f224beaf-bde6-4b43-9c42-e01200224e00
Googling led me to a few posts that suggested ticking the checkbox for an implicit grant of ID Tokens under the authentication settings of the Qbot-api app registration. I tried this, and got me one step further (or farther away). After signing in on the dashboard it now gives the following error: There was an error initializing the Bot serviceResponse with status: 0 for URL: null .
Any ideas or things that i should check?
Hello!
It appears that any user in a class can select and save answers to a question - and those new answers are then published into the knowledge base. This opens the door to students degrading the quality of the knowledge base, either intentionally or accidentally. Is there a way to restrict which users (or preferably which roles) can save a new answer to a question?
Steps to reproduce:
I would love to know if this is a bug, a feature, or working as intended.
Thanks!
Dave
hello,
I am trying to deploy the qbot but I am currently filling in the web config file and the documentation is not clear for me on the AADServiceName and AADServicePassword. For the AADServiceName do I need to make a new Teams account or use the email address that is giving in the documentation? For the AADServicePassword where can I find the encrypted password for it?
your help is really appreciated.
Hi there,
First of all, thanks for creating QBot! I can't seem to find the QBot Connector as a Microsoft Teams Connector. Does this need to be deployed beforehand or is this more likely to be a permissions error?
Thanks!
Shohil
It has been a long time and it seems like people have problems getting this project to run in their environments - is there anything still going on? I really want to set this up on our tenant.
Any help or official response would be greatly appreciated!
Hi QBot Team,
I don't know where else to post this question. I have been having problems deploying because during Step 5, I would always get a failed deployment marked with 'Conflict'. I checked operation details but there isn't any indication of which value I may have not provided adequately.
{
"status": "Failed",
"error": {
"code": "ResourceDeploymentFailure",
"message": "The resource operation completed with terminal provisioning state 'Failed'."
}
}
I would get this for [base]-questions/web resource.
Any ideas of where I should look?
Hello. It seems we were able to complete our deployment of this application in our environment. We do have a strange issue with using the bot from Teams. We get to the Dashboard tab with a request to sign in. We do without errors, but we do not get to the next screen or functionality. We can keep doing a sign in, but that is pretty much it.
We have rechecked the configuration and options, and I am sure we are just missing a small detail to get this to work. Has anyone encountered this issue before?
Thank you.
Hi, I have been trying to deploy this and came across an issue. I am a little novice on these things, but i deployed the QBot to MS teams and added the APP/Manifest. The issue I have is, when I go to the APP and dashboard tab it says the following:
"Hey, App Service developers!
Your app service is up and running.
Time to take the next step and deploy your code."
I am not able to start a conversation with the bot to finish the final step?
Any help would be amazing, thank you
With Qbot deployed using delegate permission when you add members to a team they do not get added to Qbot in the dashboard. This causes an error for the new user. Clicking Sync Users From Teams does not update the user list.
The only workaround is to manually click save from Course Admin
Repro steps: Add a new member to a team. User does not appear in Qbot users list.
System.ArgumentNullException: Value cannot be null. Parameter name: source at System.Linq.Enumerable.Where[TSource](IEnumerable1 source, Func
2 predicate) at
Microsoft.Teams.Apps.QBot.Bot.MessagesController.d__8.MoveNext() in D:\home\site\repository\Source\Microsoft.Teams.Apps.QBot.Bot\Controllers\MessagesController.cs:line 704
--- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Teams.Apps.QBot.Bot.MessagesController.d__4.MoveNext() in D:\home\site\repository\Source\Microsoft.Teams.Apps.QBot.Bot\Controllers\MessagesController.cs:line 382
--- End of stack trace from previous location where exception was thrown --- at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Teams.Apps.QBot.Bot.MessagesController.d__1.MoveNext() in D:\home\site\repository\Source\Microsoft.Teams.Apps.QBot.Bot\Controllers\MessagesController.cs:line 71
--- End of stack trace from previous location where exception was thrown --- at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Teams.Apps.QBot.Bot.MessagesController.d__0.MoveNext() in D:\home\site\repository\Source\Microsoft.Teams.Apps.QBot.Bot\Controllers\MessagesController.cs:line 53
The Graph call that fails comes from:
string endpoint = ServiceHelper.GraphRootUri + @"/beta";
string queryParameter = "/teams/" + teamId + "/channels/" + channelId + "/messages/" + messageId + "/replies";
Logging in to Graph Explorer as my service user and executing the above also returns 403 but also informs me that I have no missing permissions to make this call! (I have added the required User.Read.All and Group.ReadWrite.All, and am a member of the Team). Executing the same call as System Admin works fine.
Error when deployed into non dollar currency based Azure subscription the Dashboard and Question apps fail to deploy giving a "conflict" error.
Error details
The command "npm install --save-dev @angular-devkit/build-angular" exited with code -4048
It's failing when trying to compile
npm WARN tarball tarball data for [email protected] (sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==) seems to be corrupted. Trying one more time.
Steps to replicate. Deploy using the Azure ARM template in a Azure subscription that is not dollars.
When deploying to test our QBot we found that there are issues if a user has more groups than can be displayed on a single page (in that not all groups / teams are then listed). This causes issues with adding a team to QBot as you can't pick teams that might be on a second / subsequent page.
It would also be really great if the list of teams could be sorted by name and also be searchable by entering a few characters at the start of a team name.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.