Bot Framework Exception Handling in Channels? - botframework

I wanted to know if anyone knows what happens when a public bot on azure crashes for one user (i.e. when an Exception is thrown while a user is communicating with a bot via a channel)? Does this affect other users using the bot or the channel? Also, what happens to the conversation between the user and the bot when this crash happens, or when an exception is thrown?

By crashes, do you mean when Errors and/or Exceptions are thrown will a user is communicating with a bot via a channel like skype, FB Messenger, etc...)? If so, the default response for an Exception/Error is "Sorry, my bot code is having an issue" -- (I see this in MS Teams when I encounter an error in my code) As shown here:
While this is vague you can always go to the Bot Framework Portal to see more detailed error reporting. As shown here:
More than likely the users' experience will vary based on what caused the crash/error/exception.
When testing in the Emulator you may get a more detailed response, stating that an Exception occurred. You can also view the stack trace in the Emulator as well. For this reason you may want to thoroughly test your bot code there before deploying it to Azure.

Related

Microsoft Bot send the response twice in Teams

I've used Microsoft bot framework SDKv4, and integrated to Teams channel. It is running well, but giving responses twice.
But, I didn't get the same behavior, while I tested it on Emulator and Web Chat in Azure Portal.
However, I can see below issue, while I ping the bot in web chat and get a response.
Further, I can also see, that its always 'sending' as a status although I got a valid response, and the status later changes to "Send Failed. Retry"
Is the issue related to my teams integration for getting message twice? and how, should I fix it!
Are you using webhooks? If so, having multiple webhooks with same ID could be the reason for double messages. Hope this helps
I made my bot working. It was the issue of MS authentication!
I had a call with MS support person and the root cause appeared to be only the MS authentication. Had to reset app secret and then re-deloyment.
Its weird that, although it was not getting authenticated primarily yet it was returning me the response. This, I still haven't got it!

Sending messages to my bot via Slack gets no response

I have a bot deployed to our Azure subscription. Using the webchat channel, I can interact with the bot using the url:
http://mybotname.azurewebsites.net/
We have added the bot to Slack as an app. We followed all the instructions given by the documentation on how to add a bot into Slack - https://learn.microsoft.com/en-us/azure/bot-service/bot-service-channel-connect-slack?view=azure-bot-service-3.0
When I send a message to the bot in the Slack channel we have created, I get no response. There is not error message, or in fact anything, returned.
Whereabouts can I start looking to see what the problem could be? Suggestions for error logs, traces, etc would be appreciated. I enabled App insights for the Azure Web App which the bot runs under, but nothing comes up as an error, or warning, or anything. I'm a bit lost here, any suggestions would be appreciated.
Note that I was made aware that, for Slack, I may need to tailor the responses in order for Slack to render them e.g. FormFlow define options for string field
I'm not sure how to do that, or even if this is a case that my bot simply isn't working in Slack regardless of how I'd format the responses.

Bot framework Unable to use with Skype For Business

I've built a Bot using C#. I tested it using the emulator, web chat, direct line and Skype, and it's working as expected.
I followed the steps to register the bot with skype for business, I waited more than 24 hours to see what's happen.
So far, I can see the Bot as a contact, however, when I try to send a message, the error
"Error happened in Skype for business when reaching bot service. We
saved this conversation. You'll see it soon in the Conversations tab
in Skype for Business and in the Conversation History folder in
Outlook."
Looking for some logs or something, I collected some info, that I'm sharing here.
Analytics from BOT that proves that it's reaching it:
The Log for SFB channel said: "There was an error sending this message to your bot: HTTP status code NotFound"
It's look that the Bot endpoint is not available. When I registered it in SFB, I've been using NGROK (to run agains my machine), but later I've change it to a azure site.
"Old" endpoint is used yet today:
So, all I can guess is that Bot End Point was "registered" at the moment that I made the registration of my Bot in SFB, and now it's not possible to change it.
Does it make sense to anyone of you?
My problem seems to be kind of similar to Bot Framework - An error while sending a message from Skype for Business
Adrián
Ok, I'm sure the problem with the bot was the endpoint registration. I found a powershell script that update the endpoint.
I Opened Windows PowerShell as Administrator and run the ff scripts:
Import-PSSession (New-CsOnlineSession -Credential (Get-Credential))
Set-CsOnlineApplicationEndpoint -Uri sip:username#yourdomain.com
Obviously, I changed username#yourdomain.com with my own.
Then, after waiting 8 hours (or so), I was able to communicate with the bot, using SFB as channel.
Bot running as expected
I hope this can be useful for others.

Bot Service Basic Bot not responding to prompts

I've a Basic Bot Template based Bot set up using Bot Service. I've built a use case with few question prompts and capturing answers. I see the timestamp below my prompt in the chat box indicating that my prompt is delivered. But don't get a response back from the service. The application is still in develop and still haven't published it.
On Channels -> Web Chat -> I see few errors being logged.
Error: "There was an error sending this message to your bot: HTTP status code NotFound".
Could anybody help resolving this error?
A 404 (Not Found) would imply there's something wrong with your bot's registration in the bot framework portal. Can you log into dev.botframework.com, open your bot, hit edit, and see what the endpoint URL looks like?

Microsoft bot works locally but not when published

So I created a chatbot which works perfectly fine on the Microsoft Bot Framework Channel Emulator when run locally.
However, after I publish it, when I test it on Telegram, I get Error 500: "POST to pbot2 failed: POST to the bot's endpoint failed with HTTP status 500".
I have absolutely no clue as to where I might have gone wrong. Usually its a credentials issue if it works locally but not when published, but I tried testing connection to my bot on the Microsoft Bot website and it gives me: Endpoint authorization succeeded. So credentials is definitely not an issue.
Googling gives me results where the problem is with the backward compatibility of the System.IdentityModel.Tokens.jwt, but I did not update that package so that should not be an issue.
At this point I've ran out of ideas, will appreciate any help! Thanks in advance.
Without a little more context I might not be of much help; however there are a number of tools you can use:
1) If you hook up app insights in the bot framework portal, we'll log exceptions we see from your bot into app insights. The first couple million transactions a month are free for dev time debugging it's a must have.
2) 500 is internal server error. I assume your bot is set to take the other activity types beyond just "Message"? You'll get conversationUpdate Activity messages from the channel that you won't see automatically in the emulator.
3) You can point the emulator at your cloud endpoint and verify there as well and often get more detail for exceptions than you will in your chat channel.
Let us know what you find.
You're getting an uncaught exception; what I do is wrap everything in in the Post method in MessageController.cs in try...catch, and when the exception is caught, send the exception's Message and StackTrace into the chat. Usually the first few lines will contain the general error description and most of the times the line number.
catch (Exception ex)
{
string error = Emoji.Blush;
//for debugging in bot emulator, also output stack trace
if (activity.ChannelId == "emulator"
|| activity.ChannelId == "facebook" //uncomment this line to get stack traces on facebook too
)
{
error += ex.Message + ex.StackTrace;
}
//create response activity
Activity response = activity.CreateReply(error);
//post back to user
ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
await connector.Conversations.ReplyToActivityAsync(response);
}

Resources