I have developed a small bot using Microsoft Bot Framework. I have deployed it to Azure as an App Service and hooked numerous channels to it. DirectLine, Skype, Facebook and Telegram. Everything worked as expected. I then updated my code to a new distinctly different dialog and republished to Azure from Visual Studio. Now I am seeing strange behavior. My DirectLine channel, my embedded WebChat and the emulator picked up the new bot. My Facebook channel, Skype channel and Telegram channel are still playing the old bot. Any hints what might be causing this? Is Microsoft hosting replicas of my bot? I have restarted everything and even deleted and recreated the App Service, but to no avail.
Tilo
You have probably started conversations on the channels where you still have the old version. The BotState is preserved even after code modification.
If you want to manually reset the conversation's dialog stack and state during development of your bot, you can use the /deleteprofile command to delete state data. Make sure to include the leading space in this command, to prevent the channel from interpreting it.
After your bot has been deployed to production, you can version your bot data so that if you bump the version, the associated state data is cleared. With the Bot Builder SDK for Node.js, this can be accomplished using middleware and with the Bot Builder SDK for .NET, this can be accomplished using an IPostToBot implementation.
More details on the documentation here
Related
Any ideas on How to send "ephemeral" messages using Bot Framework Composer?
I am building a bot that "listens" in a shared channel and under certain circumstances, it should reply ONLY to a specific user. I know I could send a private message, but that will require the user to "get out" of the channel.
In Slack, it looks like this:
Ideas?
Thank you.
There is currently a bug in the C# BotFramework SDK's Slack adapter that, at present, blocks ephemeral messages from working. You can reference this GitHub issue that discusses the problem.
There is a workaround presented there, but it applies to the developer who is building his bot using the SDK. In your case, building from Composer, you could also clone the repo, make the necessary changes, and build the files locally. Then, you should be able to reference the updated library in the bot's runtime.
At this point, you ought to be able to construct an activity in Composer following the SDK's schema for a NewSlackMessage.
I'm currently evaluating Azure Bot Service using Azure Function as a Slack bot.
It works fine with direct and group messages, but I'm having troubles to make it work with app_mention events, the azure function is not getting fired at all.
Also, i'd like to experiment with slash commands, which are also a feature available to slack app.
Reading the docs, I understand have to write my own middleware to parse these messages, but it's not clear to me how can I do it with Functions.
Is it possible? Or will I need to host a separate webapp?
Turned out that Azure Bot Service is currently supporting a subset of Slack events out-of-the-box; this was not clearly stated in the documentation.
We ended up with a first prototype based on Bot Service integrated with the basic Slack events, will evaluate it and then proceed with a full bot-framework WebApp if needed.
I am developing a customer service chatbot, using Azure's Bot Framework in .NET, using the the Messenger channel. I wanted to know if anyone knows what the best way to handle the handoff to a human on Zendesk (which my platform already uses as its CRM platform). I'm not looking for when to do the handoff, but how to manage what happens next.
What I would love to be able to do would be that so when handoff is needed, a ticket on Zendesk would be created, sending for example a file (the transcript of the conversation so far). Then the agent would be able to solve the customer's problem in that ticket, having a conversation with him, having the bot sending messages back and forth between zendesk and messenger.
I don't know if this has been done before, or if it's at all possible. And I'm free to other solutions to the problem of handling this kind of handoff, without having to create a separate "chat" for the customer service agents to use, like it's explained on the azure documentation.
Thank you for your patience while I researched this. I found this resource that I believe will meet your needs. This functionality is built off of the Bot Framework utilizing .NET (it's also available for Nodejs). There are two available methods to connect a client to an agent.
The first (which should apply to you) aggregates different channels into one allowing an agent to pickup in the same channel where the bot handed off. The second opens a new channel when an agent joins the conversation.
Intermediator Bot
I was able to spin up a bot using this and confirmed the bot was listening for outside traffic.
Hope this helps.
Steve.
One thing that I'm about to try is this:
Bot conversation ends.
Bot service calls an Azure Function, passing the conversation content.
The Azure Function integrates with Trello API, creating an entry on a Kanban board.
So, instead of Trello as I want to do, you can make a call to the Zendesk API.
I'm writing a few articles about developing Azure bots. The next two actually are dealing with these very things. You can find out more here. sign up if you'd like to get notified over the next week or so when the new tutorials are online.
Hope that helps!
Tim
Where does bot framework stores dialog stack? My bot started to act strangely since couple of days. It seems that the bot is stuck in a dialog and is not willing to let go whatever the user says. Even resetting the stack doesn't work.
Does the dialog stack has to do something with the bot state service? Which will be soon deprecated?
The issue was resolved after implementing custom state service with Azure Cosmos DB as described here. - Manage custom state data with Azure Cosmos DB for .NET
I'm looking at using the Bot Framework (https://docs.botframework.com) is it possible to register a bot programmatically e.g via service? I see there are Azure bots but still don't see a way to register via service?
At the moment you have to manually log into the portal to register the bot and obtain your keys. There has not been any indication from Microsoft that this will change in future.
from what I know about the goals of the dev team, since this is a highly requested feature, we will probably see this in action in future version of the bot framework.
But no kind of timeline yet for this feature.