I just wanted to ask about the intelligence built into the bot. I dug through the code a bit (great documentation btw) and it seems that this is using a state machine you've written and custom plugins for different scenarios. How would one account for situations were a case keyword in a plugin is used in a different context? Say for example, I ask "What street number did you say?" to the bot with this plugin^1. It seems that these are items that would trip it up?
Also these bots would not "learn" or get better over time without direct human input correct?
I hope these don't sound like critiques. They're not. Just generally curious about how all of this is put together - particularly the state machine and then also how the plugins can be built (and improved).
[1]: https://github.com/itsabot/plugin_restaurants/blob/master/re...
You're also right that Abot plugins as they stand now do not improve or learn automatically over time. I've done some work on a training system which will enable a Facebook M or Magic-style human-aided training backend. It'll be a plugin just like any other which will eventually be hooked up to a neural net with optional centralized training (so you don't need a GPU rig or tons of data to get started). An early version of that is probably going to be ready going into June with the v0.2 release.
Thanks so much for the feedback. I'd love to continue this discussion and find ways to improve plugins and training. If you're interested, there's a mailing list here: https://groups.google.com/forum/#!forum/abot-discussion
Regarding the neural net, I think that's an important feature because the most difficult part about guessing triggers is, well, guessing. Our language is awfully diverse and I think you'll get better results in the long run.
I've applied for membership to the mailing list. I'll keep my questions there.
Any bots you build on Microsoft's framework as far as I can tell are also locked into a closed Microsoft-controlled system. Just because it's readable on Github and pushes messages to Slack doesn't really mean that it's open-source in the way we've come to expect from Linux, etc.
I'm building a free-as-in-speech alternative.
What closed Microsoft-controlled system? You can compile that code in either Mono or coreclr.
I get you're not happy Microsoft just released something in an area you've been working in, but this is just FUD.
Don't be a knob. That's clearly not how he feels at all.
Please don't call names in HN comments. Your comment would be good without that bit.
https://github.com/Microsoft/BotBuilder/commit/78e7730f49574...
Otherwise all our software would be capable of reading email.
The maintainer(s) get(s) PR approval. Big features that change the direction of the tool are welcome in forks but require maintainers to agree if merged upstream.
Until/unless a community fork could gather critical mass it might not be worthwhile. That said, yes, it's certainly possible to do.
chatskills: A chatbot API inspired by Amazon Alexa skills and intents
https://github.com/primaryobjects/chatskills
No server required. It can run right in the console, web, slack, etc.
Correct me if I'm wrong, but isn't slack a closed ecosystem, akin to Skype?
Dunno, but I winced at "in the bot space". I hate anything that smells of marketing/management speak. Going forward/we reached out... just use normal language like a normal person.
Looks awesome though good job!
1. It's fast and resource efficient.
2. It's easy to cross-compile and deploy with a single binary and no external VM dependencies.
3. It offers static typing and compile-time checks, which massively reduce development time for me.
4. As Abot is a framework with downloadable plugins, Go's tooling handles most of the heavy lifting for us, like downloading and updating dependencies. Go's automated testing, linting, and formatting are really nice as well, and it's great to have those built into the language itself so there's standardization across an ecosystem of plugins.
While not one of the core reasons, I really like the Go community and the language (generics be damned). This is a personal, spare-time project, so my preference of working in the Go language definitely did factor in.I very much admire and appreciate the work you've done bootstrapping Abot in your spare time. Now that Microsoft is in the game, my concern is we will see a "tower of babel" type of situation develop for bots emanating from the corporate behemoths (i.e., here come the Facebook bots, Google bots, Amazon of course, and Apple might play catch up too at WWDC). I much prefer grass roots growing from open source projects like Abot so as to no be locked in (financially, legally, cognitively) to one platform run by a large corporation seeking world domination.
Forensics specialist Jonathan Zdziarski wrote an interesting post recently titled "Free Software Always Costs Something" it is a good read -> http://www.zdziarski.com/blog/?p=5948
Perhaps Abot would benefit from having its own Foundation similar to the likes of, say, the Apache Software Foundation https://www.apache.org/ ... "The Apache Software Foundation provides support for the Apache Community of open-source software projects, which provide software products for the public good."
As Satya Nadella commented in this recent Bloomberg interview http://www.bloomberg.com/features/2016-microsoft-future-ai-c... how app stores and Facebook remind him of the walled gardens of 25 years ago (e.g., AOL and CompuServe), its what he didn't say (intentionally omitted?) in this interview which strikes me as more interesting. The rise of chat bots and Nadella's views about them remind me somewhat of the vision General Magic had precisely 25 years ago with their forward thinking ideas about personal digital agents and Telescript https://en.wikipedia.org/wiki/General_Magic ... if Nadella has indeed channeled some of the old ideas of 25 years ago and chat bots are to become the next big thing (Nadella thinks chat bots could be as big or bigger than the Internet itself, and the next logical step after app stores), and if indeed its time to break down walled gardens, then it would probably be very important for an implementation of chat bots to be a part of the global commons and available to all of humanity. Abot to the rescue?
I'm very open to building a Foundation around this. My goal for Abot is to make it self-sustainable (paying salaries for key people to enable full-time development) and owned by everyone.
I admire the Apache Software Foundation for all the work they've done and can see a similar path forward with Abot. But recall that 24 hours ago it was really just me working on this. Give me another day or two :)
What is your approach to speech recognition and speech synthesis?
There's an interface (shared/interface/sms) that defines the functions any SMS driver needs to implement, like `Send(to, msg)`. Then we have a Twilio driver that implements those functions, but you could easily write a Nexmo driver or a driver for any other service in the same way.
With speech recognition, we'll design an interface and build drivers for popular services, like Google's new speech recognition API. For the end user, that means you'll be able to pick and choose which service you'd like to use, and by adding it to your plugins.json, speech will be loaded up and handled automatically.
As an alternative to this closed approach, I've been building an MIT-licensed bot framework using Golang, enabling anyone to build advanced AI bots. The API we've built seems to be a lot more robust than what Microsoft showed today. https://github.com/itsabot/abot
It's still very early (too early for a ShowHN), but there's tons of documentation and guides if you wanted to get your hands dirty before we do a proper release.