
Challenges you’re going to face when building a chatbot - lukaszprzywarty
https://blog.infermedica.com/three-challenges-youre-going-to-face-when-building-a-chatbot/
======
vincvinc
The 3 problems listed are (in my experience) not the most important ones you
need to know about when you're making a bot. I'm not sure how this got to +100
points here on HN so quickly, since there are plenty of more informative bot
articles that would better serve the HN audience.

The article describes:

1 (scalable architecture) : but the common solutions to this problem are not
unique to chatbots

2 (a conversational agent must converse) : actually, that's a design decision
for each individual bot, there are alternative ways of thinking about it.

3 (users will get frustrated) : this is actually a not a tech/AI problem, but
a UI (user expectation) problem, see below.

The actual top 3 problems chatbot makers face are (in order):

#1 Discovery (!!!) : people don't know where/how to find bots and Facebook
does not have their shit together in this regard (almost a year after
launching their bot platform, there are still crucial errors. Result: most
bots that could make a difference in the real world never get any traction, or
enough users to train or iterate.

#2 Onboarding / setting expectations : the majority of (non-test or -product
hunt) users of your bot are having their first chatbot experience with yours.
Guiding them in the correct way is your #1 design priority. Result: a
dissapointed general public.

#3 Inflated expectations : Mainly a problem for those who try to sell chatbots
in B2B. Its' almost the opposite problem to #2. Most people and media conflate
AI with chatbots. But the recent advances in machine learning (which are the
reason for the current attention the term "AI" has been getting) are not (yet)
applicable to chatbots in general. Add to this expectations of a Jarvis, Siri,
etc. but then "for x". Result: dissapointed clients and an even quicker
deflation of the hype.

And this is not even going into monetization!

All in all, I'm just frustrated that everyone involved in bots seem to assume
that we already know how bots should work. I work in bots and I have yet to
see one really impact user's lives. I wish for more humility and
experimentation. At least we're all sharing what we're learning, so there's
that.

~~~
dangrover
PM on Messenger Platform here. Great feedback!

For discovery, FB Messenger actually has more channels for bot discovery than
any other platform, including:

\- m.me links with referral tracking

\- Messenger Codes

\- Several plugins that allow easy opt-in via developer's website, including
the ability to by default opt-in users on any form/flow on your website into
your bot experience on Messenger.

\- Customer matching (use phone numbers to send updates to customers and
acquire them as a bot user)

\- Messenger destination ads

\- Sharing features that many have used to achieve incredible viral reach.

The power that developers have to promote their own bots using these existing
channels is largely undertapped. I would encourage developers to see what
they're building as a business first, and a bot second. The bot is just a
facet/channel into what you offer (even if it is a primary one). If you don't
have a reason to offer a product or service or publish content, you probably
don't have a reason to have a bot.

Admittedly, we could do better at setting user expectations for bots and in
distinguishing them in search results and in the FB main app, and maybe
pushing them in more places.

Re: inflated expectations. Totally right. The "AI Agent"/NLP use case is just
one possibility for a bot, yet it's the sexiest one that the media seems to
like. It's the tip of the iceberg -- there are a ton of more mundane but
incredibly useful bots that are succeeding on the platform.

If any bot developer has questions about this, or wants to brainstorm ways to
get users, I am happy to help or bounce ideas!

~~~
ricardobeat
Note that none of what you mentioned is about _discovery_ , but pushing the
other way around.

~~~
dangrover
These are all ways to reach users in places they already are so that they can
discover your bot. People who already have a reason to encounter you are much
more likely to use your bot once they discover you have one.

Here's what I mean:

\- Processing orders through your site? Add the checkbox plugin. Users
discover the bot when they go about their business on your site.

\- Got a retail store, print ad, or want to post fliers around town? Messenger
Codes. Users can discover your bot by seeing it in real life in those places.

\- Reach a targeted audience on FB? Destination ads. Users discover via news
feed.

\- Got tons of users signing up for your app or site with SMS and want to
expose a bot version to them, to take advantage of a better notification
channel and social features? Customer matching.

\- Publishing content? Put the "Send to messenger" plugin on your site. And
use the share CTAs to let people spread the bot to their friends. The users
discover your bot because their friend thinks what you're doing is awesome.

At this stage, "How do I get my bot discovered?" is akin to "How do I get my
website discovered?".

The answer, as it is for every startup, is "Make something people want" (and
put it in places people in that audience are likely to be!) If users have zero
reason to come into contact with what you're doing otherwise, why would it
being in the form of a bot make any difference?

That being said, we definitely want to familiarize more users with the concept
and get them to try more bots! It's clear even those who are doing their
darnedest to get their bot out there are running into this as an obstacle.

Yet still, the sum impact developers could have by solving a real problem in
users' lives (i.e. not "I wish I had more bots to try out!"), and wielding
these tools to make people with that problem come across your bot is going to
be way more substantial than anything we can do on the platform level.

There plenty of real world problems whose solutions may be best expressed as
bots rather than yet another app to download or website login to remember. And
they come with awesome discovery opportunities built-in:

\- Bot for dentists that sends appointment reminders and makes it a few taps
for patients to book appointments (instead of calling and having to deal with
the receptionist). Discovered via phone number matching. (Paging kalzumeus!)

\- Bot for restaurants that makes it easy to order take-out and has special
offers and loyalty points. Discovered via codes or me.me URLs printed on the
receipt, and/or website.

\- Bot for schools that make it easy for teachers to communicate with
students/parents at scale, as well as collect money for field trips/supplies.
Discovered via phone matching or URL sent out to students/parents, or by
searching for the name of the school.

\- Bot for night clubs that lets them send out their performance schedule and
sell tickets all in the same place. Discovered via the nightclub's website +
QR codes physically placed in the club. Or by searching for that nightclub. Or
by your friends forwarding the fliers from the bot and asking "What are you
doing Friday?". (Stuff forwarded from bots in Messenger automatically have a
huge button linking the recipient to the bot to check it out!)

\- Bot for newspapers to send out content to subscribers in a high engagement
way. Discovered via website and via printed codes/URLs on the newspaper
itself.

\- Bot for public transit agencies to let riders look up schedule/fare info
and get notifications for their routes and notification of anything that might
affect their trip. Discovered via poster by the bus stop, on the bus, and on
the agency's website.

\- Bot for landlords to collect rent, sent invoices, and recieve maintenance
requests without the user having to download some dumb app. (After moving back
to SF, saw that mine has something called "Rent Cafe" I'm supposed to
download. Puh-leese.). Discovered via the move-in packet and/or link in
emails. I'd probably pay my rent on time if I had this.

I think you're getting the point. The total number of people who go to
nightclubs, dentists, read newspapers, ride busses, and live in apartments, is
many many times the number who go "Oh, I wonder what bots are out this week!"

These examples are not to say that "bots for bots sake" won't succeed and that
you should only be solving boring small business problems. But these sort of
problems felt by the long tail are things bots are particularly great at!
They're real problems worth money, have natural built-in discovery
opportunities that wouldn't work for apps/sites.

I hope this makes sense and gets people thinking!

~~~
godot
Hi Dan, great list of things that should be bots here. (also, I'm a fan of
your post about your experience in wechat while in guangzhou)

Funny that you made the comparison of bots to websites, I wrote a post making
the same comparison (in other aspects). Won't link here (don't want to self-
promo), you can check my post history on HN if interested.

Anyway, I wanted to point out that while you're absolutely correct that there
are tons of channels of Discovery outside of Messenger, I've found that by far
the most effective method for accelerated growth of a bot was being featured
on the "Bots" section on the Messenger app. In my experience launching several
side projects bots, the only scenario where I've gained any meaningful amount
of users at all is when I was listed there for a short time in a region.

This leads me to think that a lot of users browse around the Messenger app
itself, looking for things to do, or bots to message.

Yes, in most of your use cases on this list, the bots tie to some outside
service (physical or digital), and it wouldn't make sense to feature those
bots on Messenger itself. But there are also bots that are primarily useful as
a bot only, not tied to other services. (Icon8 is a great example, it's a very
cool filter app that works by itself as a bot. Which is why it seems to be
featured forever :) But that's exactly what I mean.)

In one of my previous write-ups I pointed out that, while unlikely for FB to
implement, if there is some sort of newsfeed-like page on the Messenger mobile
app where users can explore what other bots that their friends are using, it
could expose bots to users a lot more quickly. Not saying exactly that would
be a good design (it probably is a poorly designed feature if done that way),
but something along those lines is what we would think is something that the
platform itself could do to help.

~~~
dangrover
I would be curious to see the bots you've made.

Lots of side-projects don't get traction -- whether they're apps, sites, or
bots.

Would love to see what you've tried and learned along the way.

~~~
godot
Sure, here's a list of bots that I've either made solely or with some friends,
chronologically from newest to oldest:

[https://m.me/memechicken](https://m.me/memechicken) (dev myself with design
help)

[https://m.me/mobmessenger](https://m.me/mobmessenger) (with friends)

[https://m.me/playcoffeebreakgames](https://m.me/playcoffeebreakgames)
(myself)

[https://m.me/localcatchclub](https://m.me/localcatchclub) (with friends)

As far as learnings go, by far the most significant thing was on the UX side
-- to not leave a user hanging. At the end of almost every response, include a
quick reply button or a button (in a template) -- even if it just says "back
to main menu" or something. As soon as the conversation hits a "dead end", the
likelihood of a user dropping off skyrockets.

------
protomikron
Slightly off-topic, but do you people also feel an enormous increase in chat
boxes at the bottom right of the screen, in particular at SAAS companies?

For me this is really off-putting, in particular as they suggest that you are
talking with a human (photo and pseudo-friendly greetings), although they just
want to catch your e-mail address, and the first interaction is clearly with a
bot.

I am not sure where this is going, maybe I am a minority, but for me this
"interactions" are really off-putting.

~~~
lcpriest
Those are powered by about 5 main startups - a lot of them are actually people
on the other end too, or they are during work hours.

~~~
legodt
Can you talk more to humans being behind the boxes? How do they have the
human-power to do such a thing?

~~~
MattJ100
Similarly to how they staff support phone numbers, with teams of people
trained in domain-specific knowledge (of the product, account management,
etc.). Sometimes these teams are in-house, sometimes they are contracted to a
third-party (i.e. how most call centers are).

If you don't think they could handle the volume, that's not really an issue in
practice. Chat scales better than phone calls (agents can handle multiple
chats concurrently), and just as with phone systems, the chat systems support
wait queues. If the queue is long, then you will usually be presented with a
contact form or the chat button will just be hidden from view in the first
place.

Some of these systems do use bots for initial triage, and the "pro-active"
ones that look like an agent is asking if they can help are almost always fake
(you only get connected to a real agent if you actually reply).

------
k__
The new wave of chatbots gives me a fuzzy feeling, because I began programming
~2000 by writing chat-bots for IRC in mIRC script.

They didn't have NLP, but some easy commands and they didn't need to scale
much, because I always had below 1000 users at the same time. News bots,
filesharing bots, social network/user stat bots, game bots, etc.

Funny that I accomplished to write a news bot that got its data from some news
site via sockets by copy-paste and edit some code I found online. I didn't
even know what arrays were, let alone half ot the code I copied. But somehow I
got the target host changed and the needed data parsed out of the HTML.

~~~
Guyag
Ditto, that was my entry to 'programming' \- to begin with it consisted of
copying a bunch Runescape stats scripts from Hawkee and running on my desktop.
As it progressed I included some persistence for some feature, implemented by
creating a bunch of global variables with the user's nick as the first part of
it. I think I felt that storing to file was overcomplicating things, bearing
in mind that I was pretty young at the time.

I do recall coming across some scaling issues, which I resolved by spinning up
another instance of mIRC and running it with the name <botname>2\. That seemed
to work pretty well. 'v2' came next, wholly consisting of changing all of the
scripts' colours to be homogeneous.

------
olavgg
While spell-checking is slow, it is not necessarily as slow as 200ms per word.
But it is necessary to have one or else people will struggle with your
chatbot.

We have created a chatbot that handles mispellings and dialects just fine for
the banking and insurance industry in scandinavia. You can try him here:
[https://james-demo-test.boost.ai](https://james-demo-test.boost.ai) (You need
google translate as it only understands norwegian, with some support for
danish and swedish synonyms. Support for english and other languages are under
development)

For fast spell checking, I recommend reading this
[http://theyougen.blogspot.no/2010/02/faster-spelling-
correct...](http://theyougen.blogspot.no/2010/02/faster-spelling-
corrector.html) which uses a bloom filter. We use
[https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_di...](https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance)
and we use a slightly modified slow python implementation
[https://www.guyrutenberg.com/2008/12/15/damerau-
levenshtein-...](https://www.guyrutenberg.com/2008/12/15/damerau-levenshtein-
distance-in-python/)

Performance is not a high priority for us, we can easily scale by adding cpu
cores. A good precise answer is a lot more important and its where we spend
most of our time improving our chatbot.

~~~
semi-extrinsic
Native Norwegian speaker here. I've tried about ten different questions off
the top of my head, and it's very much "God dag mann - økseskaft."

E.g. I asked "What is the interest rate on mortgages?" and it gave me
basically what I asked for, with an example of total cost over 25 years. Then
I asked "How much would that be every month?" and it gave me a link to
applying for "avdragsfrihet", but with a text recommending against doing so.
Apparently dividing by 300 is beyond its faculties.

Or I asked "How do I invest in index funds?" and it replied "I don't
understand, try calling us".

Basically, I couldn't get an answer to any of my questions that I hadn't
gotten if I'd just googled the exact same phrase. And it doesn't appear to
understand follow-up questions at all.

I'm curious, do you have a question I can try that will give me something
google won't answer given the same query?

~~~
olavgg
Thank you for feedbank.

1\. We are currently working on supporting queries with amounts, the first
kind will be a "loan-calculator" that tell you how much you can loan for a new
house or a new car. We did try syntaxnet for this earlier, but it failed big
time with dialects, so we are creating our own variant.

2\. We have nothing on index funds yet, our customers so far does neither have
that kind of a thing, though it should at least have been a synonym for funds.
This will be corrected.

This bot is a customer service kind of chat bot. It's not something to have a
conversation with, but more like a bot that can understand questions and help
you. The business value here is not to be better than human, but be as close
as possible for the most common support queries. Trying to pass the Turing
test is unrealistic... We are trying to automate support issues for the most
common questions like, I have lost my credit card, I need a new card and I
cannot login.

Compared to a regular search engine, ours will have a much better
understanding of what your intention is. Google also tries to predict your
intention when you search. However Google is not a replacement for customer
support for most banks, telecoms, logistics, energy and insurance companies.

~~~
semi-extrinsic
> Trying to pass the Turing test is unrealistic

I agree.

But beating an equivalent Google query should be the goal IMO. Otherwise
what's the point? Unfortunately, I don't think business specific chatbots are
able to; Google just gets many orders of magnitude more users (even when
narrowed down to Norwegian Bank X), so their "dumber" algorithms work just as
well.

So I reiterate my question: can you give me one example query where this
chatbot outperforms Google search?

The same goes for site-specific search engines, especially MSFTs Bing (neé
Fast) that universities etc. seem to love spending money on; I've always found
it to be worse than plain Google search with a "site:univ.edu" suffix. So you
can definitely sell this tech to non-tech-savvy companies/institutions and
make money, but users won't like it.

------
vonnik
The biggest challenge you're going to face is that the state of the art in NLP
is not sufficient for chatbots to conduct a prolonged conversation that is
either useful or interesting. This will lead to disappointment on the part of
your users, who have probably been exposed to the hype or expected a human.
The more modest approach of mapping a Web UX to a sequential chat leaves users
at best indifferent, and at worst annoyed.

------
AndrewOMartin
A literal challenge (i.e. competition) you may choose to face, is of course
the Loebner prize. Held in Bletchley Park due to its history with Alan Turing.

If your chatbot can be more convincing than three other finalist chatbots over
four half hour dual-conversations (a human judge conversing simultaneously
with one chatbot and one confederate human, but is not told which is which)
then you stand to win a solid bronze medal and $4000 ($1500, $1000 and $500 to
the runners-up).

A silver medal and $25,000 goes to any chatbot which fools half the judges.

To get $100,000 and a solid gold silver medal, you'll need to make a chatbot
that is indistinguisable from a human over video chat, now that's a proper
challenge!

~~~
gspetr
> you'll need to make a chatbot that is indistinguisable from a human over
> video chat

This may sound cynical, but if you could arrange a tableau, looking like
someone is paralyzed in a hospital environment, speaking like Stephen Hawking,
then you don't need any serious advances in robotics (IIRC uncanny valley
still hasn't been crossed) to fool humans. But I imagine the rules won't allow
that.

~~~
AndrewOMartin
This is a good point, and arguably a weakness in the Turing test, the headline
grabbing Eugene Goostman chatbot's limited success was from a similar "social
engineering" style technique, of tying slowly, changing the subject, telling
its own stories and claiming to be a distracted teenager with poor English.

In response to the comment by Coincoin, each judge gets to pick "Human,
Computer, Not Sure" for both participants, so they're at liberty to respond
"Human, Human". It's true that the "real" human might make someone more likely
to declare the "fake tableau" a chatbot, but the perceived disability might
also make them less likely to risk declaring them a computer.

------
ec109685
This is an excellent article, including a section where they compare ordering
a pizza via a chatbot and a simple wizard based interface:
[http://dangrover.com/blog/2016/04/20/bots-wont-replace-
apps....](http://dangrover.com/blog/2016/04/20/bots-wont-replace-apps.html)

The wizard was by far the better experience.

------
smoyer
Off topic but ...

Any time I hear about a health related app, I have to reread "The Anorexic
Startup" [0]. It's cautionary and it pokes (gentle) fun at our industry. If
you're in the mood for a bit of humor today, it's a fun read.

[0] [http://theanorexicstartup.com/](http://theanorexicstartup.com/)

~~~
SonOfLilit
The first paragraph reminded me so much of jwz's diary from his Netscape days,
which is one of the most important documents I've read on startups (and it
taight me the brilliant term "impedance mismatch" for how it feels to hang out
with drunk people when you aren't, which I last used in casual conversation
yesterday)

[https://www.jwz.org/gruntle/nscpdorm.html](https://www.jwz.org/gruntle/nscpdorm.html)

~~~
danielhunt
The immediate redirection as a result of the HN referral on this page is
frustratingly childish

~~~
wyldfire
Makes you wonder if his advice is really worth reading. :/

~~~
thick18cm
"you have to live in a tall building to see which are the other tall
buildings" \-- a wise man once said

this is one of those "if you have to ask, you won't understand" situations.
jwz is a genius, as insightful as you find him unciteful, and with a lot of
relevant experience to support his worldviews. He's not for everybody, but
true genius frequently goes unrecognized.

------
skrowl
I'm surprised that they didn't mention monetization / profitability. Even
basic Google / Bing API usage will start to add up on any moderately popular
chatbot with some kind of search functionality. Without the ability to serve
ads, it's pretty difficult to even break even.

~~~
adamra
That's a very good point indeed. In that particular case the diagnostic
chatbot is a proof-of-concept to grab attention to the diagnosis+NLP API
offered by Infermedica, and also serve as an example app.

~~~
petero
This is 100% correct. The chatbot is currently a proof-of-concept and our
first take on a conversational symptom checker. Our core business is the
Infermedica API and patient prescreening tools based on the diagnostic engine.

~~~
ec109685
Wouldn't a more graphical implementation of the symptom checker, possibly with
a tree the user can follow in a wizard style be more effective than a simple
texted based chat?

~~~
petero
Could be. But you need a chatbot to compare the performance. :)

------
tyingq
_" Our first finding was that requirements 2 and 3 are satisfied by a feature
called Message Groups. What came as a surprise...ActiveMQ and RabbitMQ, do not
support this feature"_

A quick search seems to indicate that ActiveMQ does support message groups:
[http://activemq.apache.org/message-
groups.html](http://activemq.apache.org/message-groups.html)

~~~
adamra
Actually this is right, so the information in the article is somewhat
incorrect. Thanks for spotting this! There is however an issue with the
ActiveMQ implementation: once a user is assigned to a consumer, it is hard to
make ActiveMQ rebalance it. At least by default the load-balancing does not
take place until a consumer is dead. In case of a chat bot, some users may be
returning, while others may quickly go away, leading to drastic imbalances.
Apollo does the balancing perfectly out-of-the-box.

------
skewart
> To put it bluntly, a huge proportion of messages will not be understood at
> all and there is little we can do about it. What we can do is anticipate
> user frustration and alleviate the situation by offering a little help and
> managing expectations.

I get the impression that a lot of people have found this to be the case with
chatbots these days.

Chatbots can be great for certain situations - when an app needs to initiate
the interaction, for example. However, any UI that routinely causes users
significant frustration seems pretty problematic. It has to let you do
something so awesome and special that you're willing to put up with all that
frustration - e.g. a buggy screen sharing app is often still better than no
screen sharing app. Is there a compelling enough benefit for chat UIs? Maybe
if all you have is text messaging and can't install apps or browse the web?

I'm inclined to think that not trying to be too smart and instead just going
with more of a command line interface rather than an "intelligent" agent might
be better for users. Have people developing chatbots found that to be the
case?

~~~
Corence
I don't really understand the motivation behind chat UIs. Dan Grover says it
better than I could here: [http://dangrover.com/blog/2016/04/20/bots-wont-
replace-apps....](http://dangrover.com/blog/2016/04/20/bots-wont-replace-
apps.html)

------
pottspotts
I suffer from general anxiety. I listed some of the common symptoms of such
(chest pain, feeling anxious). I was given a "weak evidence" report of
myocardial infarction, and there was no mention of anxiety.

I assume most people new to the symptoms do not know what myocardial
infarction is (heart attack). And that if you are experiencing one or new
symptoms you should consult with a doctor (call family doctor or visit ER,
etc.)

I had no trouble communicating my symptoms and the questions made sense, but
despite this the information shown in the end was not helpful in some obvious
ways. This seems like a substantial usability problem that is not addressed in
your article.

------
ohstopitu
Since everyone is talking about chatbots, I thought this might be a good
thread to ask for some feedback:

I am considering creating a chatbot platform for developers to create, host
and sell bots (as a side project which may turn into a main project if it goes
well),

I was wondering if it's something devs/people are interested in? (to those who
don't code, there'd obviously be an easy GUI way to build basic bots - like
wit.ai)

~~~
Klathmon
It depends on what you mean by a "chatbot platform".

If it's a way of developing a single "chatbot" and having it work across
multiple "platforms" (think slack, hipchat, irc, facebook, standalone, etc...
maybe even including voice-specific platforms like Amazon echo and Google
Home). I would LOVE that. However it's going to most likely suffer from the
same issues as other "platform-independent systems" which is that you'll be
developing to the lowest common denominator.

If it's just a way to make a chatbot via a GUI, I'm personally not interested
at all.

~~~
ohstopitu
The idea is just as you mentioned - a platform where you'd basically create a
bot (by that i mean, your code will be given a context, and your response
would be forwarded to the chatting service - be it slack, irc, etc.)

Furthermore, with an base SDK, you'd not build for a specific service, you'd
build it for MY service and it'd handle every other service out there (insert
XKCD joke about different platforms here)

Also as for GUI, it's not a requirement - it's for those who are not
programmers but want to a chatbot for their Echo or Home etc. (an IFTTT of
sorts if you will).

Also it'd have extra stuff that devs won't have to worry about (like hosting
or charging users, promoting etc.) - all of which would be handled by my
platform).

~~~
johnsmith21006
Checkout AI .API. This sounds like!E what you might be looking for.

------
ilikechatbots
Overview of chatbots in 2016: \- Almost every messaging platform announced
support for bots. \- Almost every major tech company announced their own
machine learning and NLP products. \- 30,000+ people starting building bots.
\- 100,000+ bots built across different platforms. \- Lots of hype, not a lot
of useful bots.

~~~
pskomoroch
Good overview, similar to the year in review conclusions here:
[https://www.oreilly.com/ideas/2016-bots-year-in-
review](https://www.oreilly.com/ideas/2016-bots-year-in-review)

------
mysterydip
Chatbots are a great place to experiment. I made one for a hosted web chatroom
that essentially ran on markov chains of varying accuracy to the source
(choose something that had the same previous one/two/three words, etc).

It would listen to the chats in the room for training data, and optionally
could parse and ingest a webpage (blog, wikipedia entry, email, etc). You
could then ask it a question, which would make it generate a sentence based on
a random word it picked out of the question. The goal was to make something
entertaining for the chatroom, and it mostly succeeded with often hilarious
results :)

Something fun was giving it "personalities" based on input data, for example
giving it the timecube website, or read in a person's emails to copy their
style.

------
axiom92
I must mention ChatScript
([https://github.com/bwilcox-1234/ChatScript](https://github.com/bwilcox-1234/ChatScript)).
ChatScript is a programming language that allows you to create bot
conversations in text files. You divide your conversations into topics and
typically have one file per topic. The system makes good use of Wordnet, and
allows rules based on POS tags and Wordnet concepts. Checkout
[https://github.com/bwilcox-1234/ChatScript/blob/master/WIKI/...](https://github.com/bwilcox-1234/ChatScript/blob/master/WIKI/OVERVIEWS-
AND-TUTORIALS/What-is-ChatScript.md).

------
mikesabat
One of the bigger challenges I've seen is driving usage. We've got the MVP up
and running, and it's possible to improve the experience, but getting more
people to message in (FB Messenger) has been a hurdle.

Anyone have tips or experience with that?

~~~
melvinmt
Have you tried the recently announced Newsfeed Ads for Messenger to drive
traffic to your bot?

[https://developers.facebook.com/blog/post/2016/09/12/new-
mes...](https://developers.facebook.com/blog/post/2016/09/12/new-messenger-
features-payments-ads-enhanced-mobile-websites/)

~~~
mikesabat
Yes, I actually wrote this post on that subject.
[http://bit.ly/2hngmmr](http://bit.ly/2hngmmr) I've seen so so results so far.
It's clear that Facebook is working on finding ways to increase people
messaging in. 1\. I think there will be new best practices on top of new
targeting for this destination.

2\. I'm genuinely interested to hear other success stories and learnings. Are
people finding that Messaging apps are 'build it and they will come' or are
there new techniques for driving usage?

~~~
melvinmt
Great post, I bookmarked it (and your website as well). I'm also looking for
more success stories / use cases.

I'm personally not very convinced about automated conversational interfaces,
but Messenger does provide a great opportunity (1bn users) and platform
(ios/android/web) to create and grow new kinds of applications with very
little effort, if only we can figure out how to get people using it :)

~~~
mikesabat
Be convince about automated conversational interfaces! They are not the
miracle that AI would be, but they exist and 3-4x the results of webforms....
Once the conversation starts. Here is another case study I wrote about from
the election. [http://bit.ly/2fPwwSz](http://bit.ly/2fPwwSz)

The top comment on this post is the same topic, worth checking out. Thanks for
the bookmark.

------
aleem
Or you could just use

> Claudia Bot Builder helps developers create and deploy chat-bots for various
> platforms in minutes to AWS Lambda. It simplifies the messaging workflows,
> automatically sets up the correct web hooks, and guides you through
> configuration steps, so that you can focus on important business problems
> and not have to worry about infrastructure code.

[https://github.com/claudiajs/claudia-bot-
builder](https://github.com/claudiajs/claudia-bot-builder)

------
alkonaut
> If users just wanted to tap and swipe, they wouldn't be using a messenger;
> they'd go to your fancy responsive website

The point of a chat bot is to perform things without leaving a chat. I'm not
going to _go to_ chat bot to do something I could do with a better UI than a
NLP bot.

If a chatbot would ever say "would you like to chat to me or go to a nice
website where you can tap and swipe to describe what you mean" \- then that's
all that chatbot would ever have to say.

------
harry8
Is there actually a case where a chatbot is an appropriate solution for
commercial or government enterprise at all?

3) users hate them

Maybe that should be (1) and no need to proceed further.

------
protomyth
I sometimes wonder if Infocom had held it together what they would be doing in
the chatbot era. Seems like they had some ideas that might have helped.

------
transposed
I think a symptom checker bot has much to offer (though the devil is in the
details). How is information extracted from a curated knowledgebase? In any
case, a system with such probabilistic machinery could add a lot to our
healthcare system since it would not make human errors such as base rate
neglect. Furthermore, would existing doctors approve of machine responses?

~~~
adamra
I am the author of the article and also the designer of the NLP system. If
you're asking about how the mentions of the medical concepts (as defined in
the curated knowledge base) are extracted from user messages then here is a
short explanation.

The bot uses an entity recognition engine for this. The engine is available
via API [1]. The engine itself uses dictionary phrases from the knowledge base
and a custom matching strategy that operates on dependency graphs, which
allows to abstract from some surface details (e.g., understand that “pain in
my left leg” is “pain in leg”). It also contains a modified version of the
DepNeg algorithm [2] to detect negated mentions (“I don't have headache”, “no
history of chest pain”).

[1]
[https://developer.infermedica.com/docs/nlp](https://developer.infermedica.com/docs/nlp)
[2]
[http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3392064/](http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3392064/)

------
antiffan
You can also give yourself a nice head start by remixing one of GoMix's bots:
[https://gomix.com/community/handy-bots](https://gomix.com/community/handy-
bots)

(I have no affiliation, but I'm a fan of Fog Creek and super excited by this
product.)

------
zitterbewegung
I went through the Alexa Skills tutorial and I'm looking into making another
bot. I agree with the article that designing the natural language interface is
the hardest part and they touch thisbut from a messaging viewpoint. It looks
like most APIs attack this using some event driven system.

~~~
johnsmith21006
Try AI.API. It is a chat bot framework

------
rkfreely
Has anyone used IBM Watson Converstations? I would be interested in
understanding how it compares with the others on market and whether I should
invest in learning it versus the other options?

------
frik
Speaking about chat bots. There are the usual simple bots based on keywords
and simple fixed coded branches.

But for more advanced bots, that uses NLP (eg Stanford's CoreNLP). What's the
next step? What do you do with input sentence, each word labeled as noun,
adverb, person, company, etc ? I imagine a list of sentence structure
templates and calc the probability. This step is only very briefly and vaguely
mentioned in literature (books, papers).

Can you recommend some blogs, sample code, tutorials that explain that step,
how resonate based on NLP lib? And where machine learning comes in, to improve
the trained data?

~~~
Rabidgremlin
Check out
[https://github.com/rabidgremlin/Mutters](https://github.com/rabidgremlin/Mutters)

It uses ML to figure out the "intent" of what the user has said (using a
document classifier) and named entity recognition (NER) to extract data from
the text (date, location etc).

That is actually the easy part. The harder part is the conversation scripting
and state handling. Mutters uses the Ink narration engine (originally designed
for dialogue heavy games) for this.

It works pretty well. IMHO :)

~~~
samcodes
Other services and projects:

There are hosted services like API.ai, wit.ai and Microsoft LUIS. Init.ai has
NLP built into their bot building platform. Rasa NLU is an open source NLP
project that is very interesting.

~~~
adamra
I'm curious if some of those platforms allow to write custom code for
processing of the raw message. Either to embed the code directly on their
server or to expose a custom webhook. For instance, if I were to write such a
diagnostic chatbot as described in the article but would prefer to use a
service such as those to take care of the integrations with various platforms,
message queueing, tracking basic stats etc.

------
brilliantcode
What chat platforms other than Microsoft's Bot Framework is there? I built a
chatbot with C# on BF and frankly it hasn't been a smooth experience, but to
be fair, they were changing things so fast.

I almost expect AWS to release their own "Bot Framework" soon.

~~~
tonylucas
Quite a few depending on what level of control/functionality you are looking
for.

Some are more developer/write your own code focussed, other more graphically
focused.

In alphabetical order and not exhaustive.

API.AI (now Google) Chatfuel (YC) Converse.AI (disclaimer, $currentstartup)
Flowxo Gupshup.io IBM Watson Engagement Advisor/Watson Meya.ai Microsoft Bot
builder Motion.ai Wit.ai (Facebook)

AWS also has a suite of tools that between them you could use, check out Lex,
Polly & Steps

All of these do one or more of the following:

NLP User management Messaging Platform Integrations Conversation State &
Context Management Workflow Human Escalation Backend integrations (Helpdesk,
CRM etc) Analytics

Pick your poison based on what you need :)

~~~
tmsam
Don't forget init.ai, Botkit, Chatfuel, Chatflow, Last Mile...

------
Pica_soO
Ive tryied to train a chat-support bot with data- the biggest challenge was
ironically - the read the documentation, one answer- one link answers. You can
expand all the answers , but the web is incomplete, readable text and direct
pointers are rare- so you end up with whole wikkipages in your answers.

Using NN, you migrate your problems into filter tooling and data refining.

------
johnsmith21006
Spent some time reading the AI.API documentation and looked pretty interesting
as a chat bot framework. Anyone else tried it?

