How to resolve Luis - 403 Out of call volume quota - azure

I am testing my bot for my school project which was due in next two days and suddenly, the bot stopped functioning correctly and showing the default message all the time.
After some research in Google and Stackoverflow, found it is due to Quota limit.
I see in the Luis keys, the current key is "Starter_key" and also below error message in the end-point.
{ "statusCode": 403, "message": "Out of call volume quota. Quota will be replenished in 11.00:25:53." }
I read similar problems here, but none of them clearly mentioned what next. What is the best possible way to overcome this and I dont want to wait for the next 11 days. Is there anyway to upgrade to pay-as-you-go only for Luis? or even that wont work?

As your error message indicates, you simply hit the max amount of request for your LUIS Starter_Key (which is sort of a trial).
To permanently resolve this issue you need to provision a LUIS resource on your Microsoft Azure Subscription and use the subscription keys from there.
The approach is well documented here.
In short:
Create a LUIS Resource within your Azure Subscription
Back in your LUIS portal go to Keys and Endpoints of your model
Click "Assign resource" and select the previously created LUIS Resource

I resolved the problem with below steps and this can be marked as closed.
Created New Luis app in luis.ai using different account.
Exported the existing account settings from My Apps -> Export as Json.
Imported the Json into new app under Manage -> Versions
Trained and published the new Luis app.
Copy the new app's App ID and API key and update them in the Bot Application settings --> LuisAPIKey and LuisAppId
Restart the Bot service.
Validate the Bot.

Related

Receiving an InvalidAuthorizationTokenTenant error when triggering a Logic App on Azure even with one account?

Currently, I am trying to run a trigger on a Logic App on Microsoft Azure, but every time I try, I receive an InvalidAuthorizationTokenTenant error. Let me explain.
So I have a Virtual Machine on Microsoft Azure called StaticReportingVM that runs a service automatically when it is turned on. I am trying to automate the process of turning the machine on and off using a Logic App called startVM. The logic design is below: it has a recurrence task that checks the time of year it is (the task should run at the beginning of every month), it tells the machine to turn on, and notifies me through my personal email whether or not the task has succeeded.
startVM design
startVM parameters
The parameters are correct for my machine and my subscription. However, every time I run the trigger, I get the following error:
{
"error": {
"code": "InvalidAuthenticationTokenTenant",
"message": "The access token is from the wrong issuer 'https://sts.windows.net/xxxxxxx-xxxxxxx-xxxxxxx/'. It must match the tenant 'https://sts.windows.net/yyyyy-yyyyy-yyyyyy/' associated with this subscription. Please use the authority (URL) 'https://login.windows.net/yyyyy-yyyyy-yyyyyy' to get the token. Note, if the subscription is transferred to another tenant there is no impact to the services, but information about new tenant could take time to propagate (up to an hour). If you just transferred your subscription and see this error message, please try back later."
}
}
Note that xxxxx-xxxxx-xxxxx is different from yyyyy-yyyyy-yyyyy and the two yyyyy-yyyyy-yyyyys are the same. (Not sure if this helps answer my question but I just want to cover more bases!)
Below is a (poorly edited) image of the connections I have set for the Logic App to work, where the email above is the email registered with my Azure account and the Office 365 email is my personal email to notify me of whether or not the trigger has worked.
startVM connections
I have a few questions about this: why am I getting an InvalidAuthenticationTokenTenant error even though I only am using the one subscription? Is it possible I have multiple tenants under this account and if so how can I delete those tenants? How can I bypass the error and get the logic app working?
P.S. This is my first stackoverflow question so I'm sorry if I am missing any critical details! Any and all feedback is appreciated.
• The way you are trying to trigger a logic app on Microsoft Azure VM for starting a recurrence task and notify you through the personal email address is incorrect. You should create a managed identity for the logic app through which the trigger is configured. Once configured, then assign a new role to the logic app’s managed identity through the VM’s IAM (Identity and Access Management) blade. Once done, then update the ‘Start the Virtual Machine’ task in the logic app to connect using the managed identity created for the logic app.
In this way, your issue should get resolved and you should not receive any error regarding the ‘Tenant token authentication’. Also, you are getting this error because, when you are configuring the ‘StartVM parameters’, the tenant ID is not asked in it, rather only ‘subscription ID’ is asked and the ‘resourceGroup’ is asked. Thus, due to which, if you have atleast ‘Contributor’ role access in more than one tenant linked to each other, then the default tenant ID and the tenant in which your VM us deployed will be different and hence the conflicting error faced regarding it.
• Please find the below snapshot of the configuration for including the managed identity in your logic app design: -
Thus, once you give managed identity of a VM as the connection in the logic app ‘Start VM’ action, the logic app ‘Start VM’ trigger will use the managed identity’s assigned role to the VM as authorization to start the VM and hence the tenant token issue will get resolved.
For more information and clarification on this, kindly refer to the below link: -
https://learn.microsoft.com/en-us/azure/azure-functions/start-stop-vms/deploy#enable-multiple-subscriptions

Unauthorized: Your bot is not configured to interact with LUIS app

Working with the Azure enterprise bot model, everything is deployed, enabled and functioning. But all calls to LUIS are failing in the chatbot, both on desktop and in Azure's web environment. My LUIS model works in luis.ai when testing, but when connecting to LUIS from the bot I get the error below:
The only thing that does not work is the call to LUIS from the chatbot. It returns unauthorized. I've spent about 8 hours on google and verifying settings. Can somebody tell me where the checkbox is that i've missed?
Basic chatbot function is good.
microsoft app id and secret are good.
QNA maker implementation is good.
Publish cycles from Visual Studio is working fine.
I have verified the LUIS app functions in luis.ai.
I have verified all keys are properly written in cognitivemodels.json
I have verified all keys are correct by changing them incrementally, noting that the app fails, restoring to the correct value, and noting that the app functions.
trace results:
App ID:
Version: Unknown
Slot: Production
Recognizer ResultRaw Response
{
"recognizerResult": {
"alteredText": null,
"entities": {
"$instance": {}
},
"intents": {
"l_general": {
"score": 0.6153312
}
},
"text": "test"
}
}
Top-Scoring Intent
l_general (0.6153312)
Please add your LUIS service to enable reassigning.
Entities
No Entities
error from emulator log:
[LUIS] Unauthorized: Your bot is not configured to interact with LUIS app: . Please connect your bot to LUIS using the services pane.
The service pane appears, I add in all the keys and information as copied from luis.ai for the referenced appID. On save, the pane disappears and nothing changes.
This error looks to be specific to the Bot Framework Emulator as per this code.
I can reproduce the error locally by doing the following:
Debugging my bot.
Submitting a query that will trigger a request to LUIS.
Clicking on the hyperlinked trace text next to a LUIS Trace log entry in the log pane.
You aren't actually able to add a service to a bot without creating a bot configuration first (File > New Bot Configuration). Fill out the following:
Bot name
Endpoint URL (use your local one)
Microsoft App ID
Microsoft App password
Save and connect
Save the configuration somewhere
Then you will be able to add the services:
Click the + next to the Service.
Add your LUIS apps by filling out the dialogs.
Try the steps in the first set of my bullet points again and see if errors come through. If they do then you will need to add a service for the GUID that comes back in the error message - this GUID will match one of your LUIS app ids.
Even after doing this I still got the error message in the Log page, starting the emulator and bot didn't help. So I would advise raising an issue on the official GitHub for the Bot Framework Emulator about adding the services not working.
My AD password changed, Powershell had cached my credentials. Although I was not actively using powershell, apparently my credentials are locally cached on the dev box and used for some specific funcitons, which manifests as seemingly random authentication errors in logs. logging out of azure and logging back in (in powershell) resolved the issue.
Oh the hours of my life I will never get back.

From free to paid subscription on LUIS

I recently reached the limit for the free LUIS usage. I first created the LUIS app directly on the LUIS.ia portal and used those keys on my code. Now I wanted to get the paid option to continue using it so I created an azure resource for LUIS.ia I then went to the LUIS.ia app and added the azure resource throught the Publish>>Add Key on the LUIS.ia portal. I then changed on my code the subscriptionKey for one of the two from the new keys but it is still not working. What did I do wrong?
One answer that probably isn't applicable at this time is that it will take time for an Azure resource to successfully propogate throughout Azure. What this means in the case of newly created LUIS Subscription keys, is that it can take up to ten minutes for a newly created LUIS Subscription Key in Azure to be valid to LUIS.
However, the steps you outlined indicate that you might be missing this next part.
After you created the key in Azure, you should have associated the key with the LUIS application you wish to use it with. Following a successful LUIS Subscription Key association in the LUIS Portal with one of your applications, the next step is to continue to your bot's code and change the previous key, to your new key.
Depending on which the error codes you're getting when you try to use LUIS will help with unblocking you.
If you're getting a 401, that means the key you're using is invalid, which might mean either the wrong region, or that the key hasn't finished propagating.
If it's a 403, that usually means you're out of your monthly quota, which would imply that the key being used in your LUIS queries are of the free-tier or is the Authoring/Programmatic API Key, so the key needs to be replaced with your paid-tier LUIS Subscription Key.
Edit for BotBuilder .NET v3 users:
For users of the .NET v3 SDK, when instantiating the LuisModel, if you are using a region other than westus, you must pass in the correct domain. An example of this in action can be found here, but I've also included the code below:
[LuisModel("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX",
"XXXXXXXXXXXXXXXXX", domain: "eastus2.api.cognitive.microsoft.com")]

Why is Azure "Unable to find the bot with the specified id" when attempting to open a Bot Service that very much exists in the Azure Portal?

I'm having a problem that I cannot find any information on anywhere on the Internet. I'm sharing an Azure directory with a number of my cohorts, and as such, any number of us might be working on a Resource in the Portal. However, when anyone creates a Bot Service, nobody else can access that Resource. Mind you, whoever creates the Bot Service can do whatever they want with it, but anyone else will see the error "Unable to find the bot with the specified id." (Written as is.)
We know that there's no problem with permissions, as everyone has full access to everything, and the problem only seems to be present for the Bot Service Resource.
UPDATE
All righty; so the problem's been solved. In order to avoid this error, I had to go to the dev.botframework.com website (where MSDN Bot Framework bots are hosted). Then, I went to the "Edit" section in the details panel on the bot's info page:
Next, I added the email addresses (corresponding to the appropriate Azure accounts) of the users who I wanted to have access to the bot to the Admin section's list of Owners:
And that's all there was to it. Would have been a lot simpler to figure out if there was a better error message! Jeeeeeeez.

How do I debug problems during Azure Store offer upgrade?

I'm having troubles debugging "upgrade" of my offer in Azure Store. I've "purchased" the offering, then I click "Upgrade", select a more expensive plan and click the "Proceed" arrow I see the following error message:
We cannot provide a billing estimate at this time. Please try again later. If this error persists, contact support with the following information.
(Subscription could not be found for the provided subscription id (DM - ActivityId={GuidHere}
On my service side I see that there's a GET to /storebase/subscriptions/sub-id-here/cloudservices/service-name-here to which my service returns an XML reply together with HTTP 200.
That's all the data I have.
How do I find why the upgrade process fails?
The answer is there's no way to actually debug something because there's no way to access Azure Store logs and no way to find what happens behind the scene when the user goes from one Azure Store purchase step to another. All the developer can do is contact support.

Resources