Best Chatbot Service for Website Integration for Research Purpose (2021) - web

I am a researcher and I do conduct research on conversational agents, chatbots, anthropomorphism and human-computer interaction.
For a series of online experiments I need to implement a functioning chat. I already conduct a few online experiments with a dummy chatbot to measure the mere presence of conversational user interfaces.
Now I am looking for a functioning chatbot so that my participants can interact with the chatbot. I was already looking into Dialogflow, BotFramework and various other services. However, I do have some requirements
The chatbot should be integrated into a website. The website already exists and is developed using plain HTML,PHP,JS.
The chatbot should be able to take data from the website (i.e. user_ID, treatment condition etc.) and should be able to adapt accordingly (language, design, features).
The website should be able to access the chatbot conversation and save it into a DB (I'm using a simple MySQL)
Any recommendations?
Currently I want to use DialogFlow and the Dialogflow Messanger, which however only has limited styling options (change of color etc.). Is there any saas for integrating the chatbot on the website?
Also keep in mind, in research, we unfortunately don't have much funding :D
Thanks
Dominik

Just going to answer my own question for now, still very much interested in your opinions.
So I have chose to use Google DialogFlow and the DialogFlow Messenger, which fulfill nearly all my requirements. Using JS on the website, I can access every interaction data (conversation) between the chatbot and the user. After collecting all data with JS i can continue with the experiment, take other data and then save everything in my MySQL database.
If you want to know more, feel free to contact me.

Related

How to add multiple choices to Chatbot with Azure?

I managed to create a chatbot using Azure with the QnA Maker service. Everything works fine and the bot responds to my questions if there is an answer set up already in my Knowledge base.
What I need to do now is to not let the client anything until a real assistant joins the chat to provide some answers. Bascially, I want the client to only communicate with the bot using premade questions. So if the user clicks on a question, it should follow a tree like structure to another question and so on. Something like this image:
I tried researching this and the only thing that I could find is a different Microsoft service that refers to some dialog flows, which is not really what I try to do since the bot is made in Javascript.

Dialogflow CX - Add bulk entities and query them

I’m new to Dialogflow CX and after reading its node.js documentation (I’m a jr Dev) I’m still struggling to get the problem below solved.
PROBLEM: I need my chatbot to receive the question “do you have Toyota Corollas (cars!) in black with less than 20,000 miles, 2017 or newer and cheaper than $15,000 for sale?”
CONTEXT: I have a database with all car makes, models, years, versions, mileage, colors and prices available. The problem is that I can’t (and sorry for how silly this looks) even initiate the bot and I know that after initiating it I would need to create a zillion entities through code (can’t do it manually) so the bot would be able to read all car parameters of the user’s question. Then after reading those parameters (entities) the bot should query my database to check availability of those particular Corollas and then give a proper answer.
ASK: I would be very grateful if you could please help me initiate the Dialogflow CX bot, load all car makes, models, years, versions, colors and prices into it AS ENTITIES and then give the answer that the user needs.
I’ve checked the GitHub quickstarts and read the documentation multiple times but am still very confused.
It looks like you have a few different issues with some of the Dialogflow CX basics. Let's try to clear them up.
How do I initiate the Dialogflow CX bot?
It isn't clear what you mean, exactly, from this.
Dialogflow CX, itself, isn't a bot client. Instead, it provides integrations with various ways to communicate with your agent. This may include telephone integrations, web-based chat systems, and an API so you can integrate with other clients such as Slack.
Your Dialogflow CX agent, itself, is setup using Google's Cloud services, and can support one or more of these integrations.
How do I create a zillion entities through code?
It isn't clear why you need to create a zillion of them, nevermind through code itself.
You likely will want to create a custom entity type for the make/model combination. And it should probably have aliases, so that people could say "Ford Explorer" or just "Explorer" and have it resolve to the same type.
If you really wanted to use an API to do this, you could use EntityType.create to do so. That points to the REST documentation, but based on the language you want to use, there may be a library able to handle it.
Some of the other types, however, can be handled with system entity types such as #sys.color or a numeric type. There's no reason for you to create those.
But what happens if someone asks for a combination that isn't valid?
Then you'll need to tell them it isn't valid. Just like if someone was talking to you in person and asked for something that didn't make sense.
How will it check the database for a good response?
You'll need to make this database call as part of a webhook that you create to implement the business logic.

In dialogflow chatbot can I do with pre-populated question

I want chatbot like I open the chat window it's automatically multiple questions that have come to the window.possible with Dialogflow if yes then how it's possible.
A chatbot is meant to be interactive unless user started the chat conversation, you should not do that. Better make a conversational tree and make a user start a conversation and have questions.
I see a lot of question-related to dialog flow and google assistant when are building assistant, we need to think a conversational design paradigm instead of app paradigm, that we are used for a long time.
The Assistant is meant to be conversational for a user to deliver the right experience. Due to that, you will find a lot of things we can not do with google assistant explicitly like sending a notification. This is not a conversational design pattern.
So, make your assistant more conversational. In those, you will not come an across with such Delima.

How to make a chatbot only for searching the excel

I want to make the simplest chatbot for searching the information much easier.
For example, if I ask John’s major, my chatbot will answer that it is Computer science. So simple.
But I found that if I want to make a chatbot which is answering based on database should through webhook thing, and It doesn’t sound easy for me.
Is there any other (easy) way to make chatbot based on excel data or send a query... or whatever databases..
I want to make this on dialogflow!
+If i use chatscript, webhook is not necessary?
You need a webhook to connect to your application which can do what you need.
You have 2 options in DialogFlow:
Webhook URL: to invoke your custom application (here you have all the flexibility you need: access Excel, compute a response, etc..)
Inline Editor: create a Cloud Function on Google Firebase (I have no experience but I expect you can do almost anything you need - check pricing as it is a cloud service)
Setup #1 is not difficult, the harder part is to manage/access the XLS file programmatically.
Best of luck,
Beppe

What is the difference between rasa core and botkit framework in terms of flow of conversation?

I am learning bot development using rasa. I took simple banking system use-case in that. Below is short flow:
I want to apply for loan
Home loan Car Loan Personal Loan
**User comes again after some days**
Hey, you inquired about the loan previously, what is the status?
Bought from another bank
Which bank?
Axis Bank
What interest rate did you buy the loan at?
5%
Suppose user asked "I want to apply for a loan" so I can classify intent and extract entity and accordingly reply to the user.
But if the user said "Axis Bank", how should I keep track for which question he replied as "Axis Bank" and what will my next question or answer be?
I searched for "How to keep track of conversation state?"
I came across [https://github.com/RasaHQ/rasa_nlu/issues/303][1] this link
In that they mention
I don't think that should be part of RASA's goal IMO: NLU is by itself
a very large and complex topic to handle. But you can use a specific
framework for that like botkit.
But in rasa-core there is a slot option (Information to keep track of during a conversation (e.g. a users age))
In below link mention
Difference between Rasa core and Rasa nlu
Rasa core is used to guide the flow of conversation while Rasa nlu is
the understand and process the text to extract information (entities)
Could somebody help me understand the difference between rasa-core and botkit in terms of the flow of conversation?
RASA and botkit aren't the only options, you of course also have (to name but a few developer friendly options) IBM Watson, MS Bot Framework (or botbuilder as they call it now), of which v4 is being developed in Open Source.
What makes RASA Core stand out is it learns what to do next based on the intent and current state of the conversation. With the others, you are expected to script the flow (or you have to build a data structure that can hold the flow which others can populate).
Which way you would go depends on how much conversational data you already have and how complex your bot will be. For a simple bot, it would be quicker to use a scripted flow. It's when it gets big that your script bot will be difficult to scale.
This are a couple of good articles that I read when I was learning about RASA.
https://medium.com/rasa-blog/a-new-approach-to-conversational-software-2e64a5d05f2a
https://medium.com/#harjun1601/building-a-chatbot-with-botkit-and-rasa-a18aa4d69ebb

Resources