Giter VIP home page Giter VIP logo

qbot's People

Contributors

antares-solutions avatar benhatton-unsw-edu-au avatar subhasish-msft avatar vishnu-msft avatar vishrutshuklamsft avatar yjasony avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qbot's Issues

Notifications in QBot

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.

Unable to create Course

This time I am able to sign in to the Dashboard app in teams and I could see details as in below image

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

Cannot select correct answer in UI when 2 or more replies to question

Bug with the user interface that clicking when there is 2 or more replies to a question clicking "Select Answer" does not respond.
image

The user much click to a different channel and return for the user interface to update to show which reply to select as correct.
image

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.

Region deployment & Internal server error.

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(Task1 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.FirstPartyChannelConfigHelperBase1.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.ConfiguredTaskAwaitable1.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.BaseTypedArmChannelManager3.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'."
}
}

Validation required in ARM template.

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:

  • Only lower case letters a - z or numeric number 1 to 9 allowed.
  • Cannot use hyphen
  • Resource name cannot end with a numeric value

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

Config problems: Dashboard tab not loading

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?

Restrict which roles can "save" a new answer

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:

  1. Ask a question, tagging the bot
  2. Someone, anyone, responds in the thread with a nonsense or even malicious answer
  3. When the bot responds, a student clicks "Tag Teaching Staff"
  4. The "Select an answer" dialog appears
  5. Anyone selects the nonsense or malicious answer and clicks "Save"
  6. The incorrect answer is then saved to the database, and then eventually published to the knowledge base
  7. Future students asking the same question from step 1 then may be receive a response that includes the incorrect answer

I would love to know if this is a bug, a feature, or working as intended.

Thanks!
Dave

Question: WebConfig file

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.

Locating the QBot Connector in Microsoft Teams

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

Is there any movement left in this project?

Hi @vishrutshuklaMSFT

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!

Conflict error during deployment, code: ResourceDeploymentFailure

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?

Dashboard keeps asking to "sign in to continue"

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.

MS Teams Dashboard

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?

Screenshot 2020-09-03 at 15 51 36

Any help would be amazing, thank you

Qbot user list does not update when membership in Team changes.

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.
image

The only workaround is to manually click save from Course Admin
image

Repro steps: Add a new member to a team. User does not appear in Qbot users list.

Permissions issue when trying to select answer from adaptive card

image
image

System.ArgumentNullException: Value cannot be null. Parameter name: source at System.Linq.Enumerable.Where[TSource](IEnumerable1 source, Func2 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";

e.g. https://graph.microsoft.com/beta/teams/0c954098-ee6f-4559-b08b-3cf965b6e9b4/channels/19:[email protected]/messages/1600957992560/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.

Deployment failing for Dashboard and Question app in non-$ currency regions

Error when deployed into non dollar currency based Azure subscription the Dashboard and Question apps fail to deploy giving a "conflict" error.

image

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.

Issue where a user has more teams than can be pulled back by the Graph integration in a single page

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.

First time Dashboard app is opened returns an error

When the personal tab app Dashboard is opened for the first time it returns a status 500 error.

image

To resolve the user needs to refresh the page. This creates a bad first time experience as there the app does work, but fails on the first opening.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.