
Show HN: A dialog system framework for conversational services? - solyaris
https://github.com/solyaris/dialogs
======
solyaris
Hi all! author here. It make sense to implement chatbots dialogs where each
dialog is implemented as a finite state machine ? Good idea or a naif-robotic
approach ?

BTW, please consider:
1:[https://github.com/solyaris/dialogs](https://github.com/solyaris/dialogs)
as a VERY VERY DRAFT / proof-of-concept 2:I'm a bad (Ruby) programmer. 3:I'm
not a NLP expert. 4:please tolerate my long story/bad English.

Contributes/Collabroations on the open source project, are very welcome:
a:comment here. b:email me (prefereed at first glance.
giorgio.robino@gmail.com). c:open issues on github (perfect for share nd
persistence).

Have a good reading. Thanks. giorgio
[http://www.twitter.com/solyarisoftware](http://www.twitter.com/solyarisoftware)

~~~
kleiba
Hi there! Did you look into VoiceXML and AIML?

~~~
solyaris
Hi Kleiba

years ago I studied a bit AIML and also recently I see that Ruby language
implementation is a bit obsolete.

My feeling is that AIML are not maintained / growing, but the principal point
I a bit discarderd AIML is that it seems to me not faiseable to do a
"deterministic" workflow (just let consider the e-commerce purchasing workflow
I described in my project
[http://www.github.com/solyaris/dialogs](http://www.github.com/solyaris/dialogs))

giorgio

------
BjoernKW
Though finite state machines can work for simple dialogue structures, more
complex dialogues generated by them will come across as robotic.

For non-naive implementations you'll have to learn about a linguistics
discipline called pragmatics, which deals with conversational semantics and
context:

[http://nlpers.blogspot.de/2006/04/please-pass-
pragmatics.htm...](http://nlpers.blogspot.de/2006/04/please-pass-
pragmatics.html)
[http://www.amazon.com/gp/product/0521294142/sr=8-1/qid=11459...](http://www.amazon.com/gp/product/0521294142/sr=8-1/qid=1145977367/ref=pd_bbs_1/104-2252564-4179952?_encoding=UTF8)

~~~
tonylucas
A great point regarding pragmatics. Personality is also becoming a key issue
to consider.

There is a whole pile of interesting posts around building conversational
services/bots.

Some interesting ones:

Sam Lessin: [https://t.co/0ZFlBGPqpg](https://t.co/0ZFlBGPqpg) Chris Messina:
[https://medium.com/@chrismessina/2016-will-be-the-year-of-
co...](https://medium.com/@chrismessina/2016-will-be-the-year-of-
conversational-commerce-1586e85e3991)

Matt Galligan: [https://medium.com/@mg/the-graphical-user-interface-will-
soo...](https://medium.com/@mg/the-graphical-user-interface-will-soon-give-
way-to-the-rise-of-the-conversational-user-interface-ba8cc52f945b)

Clement Vouillon: [https://medium.com/point-nine-news/software-
bots-c56aeedcfec...](https://medium.com/point-nine-news/software-
bots-c56aeedcfec3)

Ryan Block: [https://medium.com/@ryan/bots-messaging-and-the-interface-
vi...](https://medium.com/@ryan/bots-messaging-and-the-interface-visibility-
scale-c77ce56f1401#.ex6jt2rll)

I've also written a bunch of articles on how we tackle some of these problems
at Converse AI here:

[http://blog.converse.ai/introduction/an-introduction-to-
conv...](http://blog.converse.ai/introduction/an-introduction-to-converse/)

~~~
solyaris
thanks a lot for your links!

I maintain a sort of microblog just about these topics:
[http://www.twitter.com/solyarisoftware](http://www.twitter.com/solyarisoftware)

Me too I just discovered Chris Messina's definition of "conversational
commerce", definition that I like.

About "personality":

Maybe some years ago we have called this just "user profiling".

In facts approach I suggested (modeling dialogs as a composition of state
machines:
[http://www.github.com/solyaris/dialogs](http://www.github.com/solyaris/dialogs))
is just a workflow framework indipendent by the personality/profiling
implemenentation. \- On one side personality/profiling could be delegated to
to some "inerithed class" (of what I defined as "elemental" dialogs). \- on
the other side I'd delegate in the "interpret" method.

Let's consider the usual ecommerce workflow. This could be splitted in 2/3
successive dialogs:

1\. compiling a shopping cart - dialog

2\. setting the delivery address - dialog

3\. setting the delivery time - dialog

So, by example, in the delivery address dialog, the chat bot (or
"conversational agent") know the buyer person interacting (because he stored
somewhere the buyer address in a previous "profiling" dialog ), so the chatbot
could simply propose to use the stored address or submitting a new one.

Just to say, that, for business workflow, maybe the "personality" maybe is
just a smart profiling. isn't it ?

giorgio

