is it possible to use chat bot on platforms like Dialogflow, IBM Watson, Kore.ai etc in integration with CAAS platforms like Sinch? To elaborate my query, I want to use Sinch for making calls to user and use my chatbot to provide dialogue responses to the user instead of doing it manually.
I can answer your query on behalf of Kore.ai & as well can give you insights regarding Watson & DialogFlow
Kore.ai- currently has a very vast library of API integrations available for most of the IVR services available in the market. Kore.ai also has an inbuilt ASR engine & the best TTS feature. This will help the incoming voice to be converted to text & the response can be automated based on the learning you impart to the bot. - I tried a similar one like this for personal use.
In perspective of IBM & Dialogflow - there are some of the integrations missing , since they do not actively collaborate with all vendors in the market (due to their size & presence) - and also, they have their own internal softwares which they'd ideally want to push for public use.
The TTS is IBM Watson & DialogFlow is not state-of the art there are many missing elements in how the voice is intepreted to text. Just the other day I was trying to compare the ASR of DialogFlow & Kore.ai - and I had visible differences. I will soon blog with the transcripts I received from both platforms.
To my view I'd suggest trying out Kore.ai platform & then comparing the same with others.
The chatbot platforms you have cited, Dialogflow an Watson for sure, have an extensive API and various methods to accept incoming messages, elaborate them, create discussion, create responses and send them back to the exterior.
So it is possible in principle to integrate them with the external world, but you need to study the inners of the framework and how it dialogates with external sources.
The principle with these chatbot frameworks, that often integrate also Natural Language Undersanding(NLU) and NLP capabilites, is like this:
text input from external world -> understand text\extract entities(names,addresses,ecc...) -> choose appopriate response/create a discussion/create a question -> send the response back to world
Related
I have a Text2SQL model (EditSQL: https://github.com/ryanzhumich/editsql) which I have configured to take a sentence as input and return a SQL query as output.
Now, I want to deploy this program as a chat bot application in Microsoft Teams.
I understand there's Microsoft bot framework that enables publishing a bot and the 3 options are described here.
https://learn.microsoft.com/en-us/learn/modules/choose-bot-building-tool/
However, I am not finding any of them suitable for my use case since I need to deploy a Question-Answering Bot where the Questions from users need to be sent to an external server like AWS and the response from AWS (could be an excel file) needs to be sent back to the user. Multiple questions can be the part of a conversation, so the chat client should be able to mark start and end of a conversation.
My problem:
What are the basic steps of exposing a ml model via a server so that it can be queried in production.
What are the tools that will allow me to make a client on Teams and a server for this model on AWS?
Please let me know if I should add more information on this.
Thanks
As you've seen, there are a bunch of tools/approaches to creating bots in the Microsoft world, for Teams or otherwise. Underneath, these all use the Bot Framework, but you can develop directly (i.e. write code), or use a higher-level tool like Bot Framework Composer - the choice is yours depending on your own internal skills. If you want to work with code directly, here are a bunch of bot samples, in multiple languages: https://github.com/microsoft/BotBuilder-Samples/tree/main/samples . For isntance, here is an example of integrating the Microsoft QnAMaker service into your bot: https://github.com/microsoft/BotBuilder-Samples/tree/main/samples/python/49.qnamaker-all-features
Basically, if you go the development approach, your bot is just a web service. Once it receives the message, it can call out to any other service behind the scenes. That means it can receive a message, call out to an AWS service, receive the response, and send a reply to the user.
For multiple questions as part of a 'set' of chats, Bot Framework provides an idea called "dialogs" that should work for you.
I am currently looking at using Microsoft Web Chat to interact with my existing Node Js application built on MS Bot Framework Core but uses DialogFlow as NLU.
Current implementation: Web Page -> Custom UI Widget -> Connects to Node.js app built on MS Botframework Core -> Queries DialogFlow NLU to identify Intent -> Node.js app constructs the Dialog -> Gives response to user.
Looking at the Web Chat component, I cannot find references using any other NLU except Azure Bot Service. Is it mandatory to use Azure Bot Service/LUIS NLU to integrate with Web Chat?
I have also looked at offline-directline npm module but the last dev on the module is more than 3 years ago.
Firstly, responding with a quick message about using offline-directline, you should feel reasonably comfortable with it. It is a few years old, but seems to stand the test of time with continued use and little in the way of issues that I have heard.
Another option would be to use a 'browser bot'. In this scenario, the bot is contained within the hosting page's html/scripts. So, there is no reliance on using Direct Line. I don't know your whole setup, so this may or may not align with your overall needs and architecture.
As for using Web Chat with something other than the Azure Bot Service, this would be an uphill battle. In theory, this is probably achievable to some degree. The issue is that Web Chat is heavily integrated with the BotFramework-DirectLineJS library. You might be able to cherry pick specific components from Web Chat, replace the Direct Line library with a make of your own, and modify the remaining code to work with your 'service'. But, I'm not certain the effort is worth it. That is something you would have to decide for yourself.
If you do go this direction, you will likely need to configure your 'service' to send messages that conform to the BotFramework schemas when communicating with Web Chat. Even without the dependency on Direct Line for connecting to the service, much of Web Chat is still oriented towards what an incoming message looks like (i.e. a BotFramework Activity) and handling it according to the properties it contains.
To start, here are a few areas you should review in order to correctly configure you service to handle inbound and outbound messages going to and coming from Web Chat:
BotFramework Activity schema
BotFramework Card schema
BotFramework Transcript schema
Web Chat's Activity, Card, Attachments, etc. Types - at present, these are loosely defined. I would expect that to change at some point in the future which may prove to be a changing break in your specific scenario.
This is not exhaustive and would require greater research as there are likely other considerations than the few I've listed above. But, again, this may not be necessary if you decide to utilize offline-directline.
I'm trying to figure out which open source framework to use to start building a conversational AI for our business. We are a financial technology company so security/ privacy is just as important as ability to build features quickly.
Amazon Lex seems to be a good choice, is it possible to use it with Google Home or other voice assistants?
Also, any additional advice on which platform to use/ architecture would be very much appreciated.
Thank you!
Yes Amazon Lex can work with other services. From the Lex website:
"With Amazon Lex, you can build, test, and deploy your chatbots directly from the Amazon Lex console. Amazon Lex enables you to easily publish your voice or text chatbots to mobile devices, web apps, and chat services such as Facebook Messenger, Slack, Kik, and Twilio SMS. Once published, your Amazon Lex bot processes voice or text input in conversation with your end-users. Amazon Lex is a fully managed service so as your user engagement increases, you don’t need to worry about provisioning hardware and managing infrastructure to power your bot experience."
The answer is a bit more complex than that! Adding a bit more here as this is coming up in Google searches:
Yes, it can integrate with Facebook Messenger, Slack, Kik and Twilio SMS — those have options direct in the Lex interface for linking those services. When it comes to Google Home, you'd need to create your own bridge between Amazon Lex and Google's Actions SDK.
So you'd take what the Google Actions SDK hears someone say when they speak to their Google Home (the fulfilment text), and then need to pass that onto Amazon Lex. To do that, you need to use Amazon Lex's postText or postContent functions (Lex Runtime docs on that). I haven't done this myself just yet, but I've heard of others doing similar and spotted this Stack Overflow post explaining it in a bit more detail when looking for an example.
I am looking to create a bot and have come across Microsoft Bot Framework (with LUIS or can use C# SDK provided by API.AI) and Howdy.ai Botkit (with Middleware support for LUIS & API.AI).
Can someone help me with comparison between these two?
I am looking for following things in my bot -
Support multiple channels including Email.
Have the bot act in both reactive (reply to some user message) and proactive (send out message to users once a day about something important to them or followups)
manners.
Save and later retrieve user provided data (manage state).
Rich message support.
Respond with delay.
Manage conversation history.
Are there things that are available in one but not in another?
I tried developing a bot in Botkit and MS Bot framework both. Ultimately I went with MS bot framework. Some of my reasons which could help with the comparison:
MSBotFramework has support for skype, slack, telegram, Facebook, and many other channels. BotKit, the last I checked, supported only Facebook and slack. I was targeting skype and telegram and that was a deal breaker.
Botkit currently is node.js only. On the other hand, MSBotFramework has .Net, Node.js and even a REST API (which basically means you can use it from any language you want). Also, there are python wrappers available which internally make use of the REST API.
Being a Microsoft product, MSBotFramework's integration with skype, azure, azure analytics, LUIS and other Microsoft services is very easy. This could be required for developing, deploying or integrating natural language support. Botkit supports LUIS integration, which is fairly easy( maybe as easy as MSBotFramework). The analytics (through botkit studio) (was) very basic and MSBotFramework wins hands down here.
I found the documentation for MSBotFramework more comprehensive than Botkit but both of them have an equal amount of resources and documentation.
Some of the other points you have asked about:
Proactive messages depend on the channel you are developing for. For eg. Facebook allows a time window of 24 hours from the user's last message in which you can reply. Whereas other platforms like skype and telegram allow you to send a message anytime you want.
State management will need to be handled on your end. Bot Framework provides some mechanism, but it is not robust enough to be used in production.msdoc
Rich messages are platform dependent, but bot framework does pretty well in catering to most of them. So, the way this works is, you send back the message to bot framework in its own rich message format. It converts to platform specific format. If you have only one or 2 platforms in mind, you can develop accordingly.
Respond with delay - You will have to implement it yourself, though bot framework has lots of examples of doing this.github
Managing conversation can be done easily if you are using C# and .Net platform in general. The documentation and number of examples are very impressive.github repo for samples
All in all, I would recommend MS bot framework.
I've found Twilio and Tropo so far as services to aid SMS and Voice apps.
Are there others?
I am interested mostly in real-time speech recognition (i.e. the user can speak things and the system can respond based on that).
Also, if anyone knows what the speech recognition quality is like, it'd help!
For reliable SMS delivery we tested Tropo and Twilio and Twilio won hands down... Better API imo (including callbacks that make things like knowing how long a call lasted trivially easy), they manage the sending rate so you don't have to (Tropo discards SMS messages if you send too fast).
On the other hand, Tropo has speech recognition that works very well (although not as well on real-world cell calls in less than silent environments) and has integrated Twitter support.
Both offer excellent support. Tropo is free for development, but Twilio is so inexpensive that's probably a non issue.
My more detailed writeup is at http://pardner.com/2011/04/tropo-not-ready-for-prime-time-went-with-twilio/
(Since the blog was written I've learned Tropo fixed Twitter support, so that's actually a very cool feature in favor of Tropo. Turns out you can mix n match, our app uses BOTH.)
For speech recognition and an API-based telephony service, Tropo's about the only option. If you drop the speech reco requirement CloudVox (hosted asterisk apps) could be a possibility. Or you could install Asterisk yourself and use something like Adhearsion to develop your apps.
If you want to expand your scope beyond cloud telephony APIs, then you could take a look at VoiceXML, a W3C standard for building telephony apps. VoiceXML hosts generally support speech recognition. A search for "VoiceXML Hosting" will turn up several thousand options.
In the interest of disclosure, I'm one of the guys behind Tropo and we're a product from Voxeo, the largest VoiceXML host.
I am reevaluating vendors that provide Voice, SMS, and Email broadcast services. It seems that most of the more reputable names out there (Twilio, Plivo, TelAPI) only offer SMS and Voice capabilities, not Email. SimplyCast is one of the few vendors that seem to provide all three.
Any recommendations on vendors that provide Email/Voice/SMS and the following capabilities through an API?
Submitting and reporting on broadcasts
Create Email broadcasts with attachments
Email templates for customized messages
Submit voice recordings (mp3 preferred) for voice broadcasts
SMS broadcast creation
Reliable uptime and support