employee call in and give trip information to be saved in database - database

I would like to code something up where my employees can call in and Watson will ask them the important questions, and they can just tell Watson the information and Watson then output that information into a CSV, XLS or etc. format possibly even a database.
It seems that I should be able to do this because of the way it can converse with people through messenger etc.
I know it is probably a 3 pronged approach.
Ideas?

#Florentino DeLaguna, in this case, you can use Conversation Service and Text to Speech and Speech to text API's from IBM Watson. See options you can use for that:
In theory, you would have to built an application that integrates with one URA (using Asterisk for example), convert the Speech to Text, send that text for Conversation Service, and the response of the Conversation you would have to transform into voice and send to the URA . In practice, there are some conversational problems, especially from Speech to Text. But the return voice you can use some effects using the IBM Watson Text to Speech (faster and slower voices, control of pauses, put emotions ...).
Obs.: The URA audios are in narrowband, 8khz, and most Speech to Text services only accept broadband, 16khz.
Obs II.: You app (like Asterisk) need to be able to consume a REST API and / or make use of Web Sockets then it will be able to invoke the Watson Speech to Text service.
Another option is to route a call out of Asterisk to the new IBM Voice Gateway which is a SIP endpoint that fronts a Watson self-service agent by orchestrating Speech To Text, Text To Speech and the Watson Conversation service. You can think of IBM Voice Gateway as a stand alone, Cognitive IVR system. Go here for more details.
Another potential option is to use MRCP. IBM has a services solution that will allow you to reach the Watson STT and TTS engines using MRCP. Not sure if Asterisk supports MRCP but that is typically how traditional IVRs integrate with ASRs.
Important: The options 2 and 3 are answered for another person, see the official answer.
See more about these API's:
Speech to Text
Text to Speech
Conversation

Have a look to the Voximal solution, it integrates all the SpeechToText Cloud API (and TextToSpeech) as an Asterisk application throw a VoiceXML standard browser.
All is integrated in the VoiceXML interpreter, you got the full text result of the transcription, and you can push it to a chatbot to detect the intent of the users and pick dynamic parameters like date, number, city, and more... for example by using api.ai.
Voximal supports the STT from Google, Microsoft, IBM/watson (and soon Amazon).
The 3 API listed by Sayuri are embedded in the solution.

Related

Connect IBM Speech to Text service to IBM Watson Assistant

I'm using IBM Speech to Text service (STT) and I want to connect it to IBM Watson Assistant (WA) Plus Plan to allow ask questions in speech instead of text only.
What I want to have is a microphone icon in the chat window, in which after clicking this microphone icon a user can talk and and ask a question.
I tried to the documentation on how to connect STT to WA, however the only thing I found is how to connect STT to WA through a voice telephone line.
Any help, please?
Thanks
With the Watson Assistant web chat, you can connect it to both TTS and STT services.
For TTS, the short explanation is to use the receive event that is fired whenever web chat receives a message. You can send the message to your TTS service to speak the desired text.
For STT, you'll need to add a button of some sort to the UI. You are a little limited here - you won't be able to put a microphone icon inside the input field, but you can put one directly above the input field using one of the writeableElements (beforeInputElement being the most appropriate). Once the button is clicked, you'll make a call to your STT service. When it returns the appropriate text, you can use the send method to send the text to WA.
We even have a complete tutorial showing you how to get all the pieces working together: https://github.com/watson-developer-cloud/assistant-toolkit/tree/master/integrations/webchat/examples/speech-and-text
And links to the relevant documentation:
https://web-chat.global.assistant.watson.cloud.ibm.com/docs.html?to=api-instance-methods#writeableelements
https://web-chat.global.assistant.watson.cloud.ibm.com/docs.html?to=api-events#receive
https://web-chat.global.assistant.watson.cloud.ibm.com/docs.html?to=api-instance-methods#send

Looking for suggestions on web hosting solution (Wix, Squarespace, WordPress, for following

I want to host a clean, branded site that allows users to submit data which I will post process on some regular cadence and send custom emails based on data processing results. I can write code and have extensive experience with AWS, but am looking for the fastest solution.
Any experienced web developers have suggestions of which hosting solution to use? Wix, Squarespace, WordPress. I would prefer Squarespace but am not finding clear documentation stating I can create a form which writes to a database (I.e. DynamoDB, Redshift).
Any suggestions would be great! Thanks!
Having a good deal of experience with Squarespace, I will address the question "Is it possible to connect a Squarespace form to a third-party database and, if so, by what means?". While I won't address Wix or Wordpress, hopefully it will provide some objective answers and provide some help to your larger context/question.
Squarespace doesn't support any server-side code; it only supports supports the addition of HTML, CSS and Javascript within Code Injection, Code Blocks, and Developer Mode.
Therefore, your options are:
Send the data client-side with JavaScript. Write your own HTML form and insert it via code block, markdown block, of developer mode. Then write the corresponding JavaScript to send the data, on submit, to your external database. Alternatively, use a Squarespace form block, prevent the default submission from executing and use your own methods instead.
Connect the Squarespace form block to a Google Sheet and the sheet to the external DB via Apps Script. Once connected, use Apps Script (set to trigger when a row is added to the sheet) to obtain the submission from the sheet and send it to your external database (similar to this or this, but you'll be going "the other way", sending data to the external DB from Apps Script).
Use Zapier (or similar service) to bridge the gap, either using Squarespace's built-in integration or setting up Zapier on your own and setting the Zapier email address as the email recipient. You can use Zapier to send form submissions to a new item in DynamoDB, for example. It appears that, at a minimum, you'd have to pay for Zapier as that is a "Premium Integration". For Squarespace, if you were to use their built-in Zapier integration, you'll have to pay for a higher-cost plan (which could be avoided by using the email storage option instead, as mentioned previously).
I think you should choose WordPress, they have a huge documentation, a big community, you can get a ton of support from Wordpress's users when you run into a problem.

Retrieve a Chat Log watson assistant

I'm using Watson Assistant and Cloud Function in a basic chatbot. How can i retrieve via Cloud Function (node.js) the chatlog of a specific conversation? I'd like to implement this user functionality. So for example, if the user types "Chat Log", Watson Assistant send him back (via Cloud Function) his chatlog. Thanks.
In case you are using v1 version of the Watson Assistant(WA), you will get the logs via the API: https://cloud.ibm.com/apidocs/assistant/assistant-v1#listlogs
In case you are using v2 version of the Watson Assistant(WA), you will get the logs via the API: https://cloud.ibm.com/apidocs/assistant/assistant-v2#listlogs
In both of these versions, you will find a filter parameter which can be set to the current chat conversation ID or session ID and could be used to get the chat log.
Now there is a REST API that allows to get the user conversations - however this gets all users conversations so you would need to implement some kind of a proxy that would filter these logs anyway.
For this particular use case, I believe, it would be the best to log the conversations into a separate database where the data would be organized by user id. First of all - separate results for particular user can be achieved easilly in this case, second of all - in IBM Cloud in Watson Assistant the chat logs are kept for 30 days - that might not be enough for this kind of functionality.

How to send user data to developer? Xcode/Swift

I'm creating my first application that requires me to update the app based on user input. I've been searching for the best way to send input to me. For example, I have a button that when the user presses I would like to send me the information they've added to a text field. Being new to this, I thought this could be done by simply sending the information to a specified email, but from what I've researched I will need some sort of database. Looking through the Apple Developer Documentation I don't even know which topic I should be looking at to figure this out, any help or direction would be very helpful!
You need to setup a server (using an API) to receive the information.
Usually you will use a webservice to receive the info from the app, although there are other ways to do that.
Sending an email through iOs would require the user to accept the email that is being sent, so doesn't look like a good idea.
Take a look at some options available to create webservices (django rest framework or flask), Google's Firebase also can be handy in this situation, since is only integrating it with your app and storing the data you want to store, with easy integration for Authentication and user tracking.

How do free SMS apps like Pinger work?

I want to build an app whose core functionality is essentially the same as Pinger and other free SMS apps - that is, it needs to allow for texting without going through your phone's service provider by sending the data over the web. But I can't find any APIs or explanations as to how this is accomplished.
Pinger assigns you a phone number to use, which I assume means it must also run its own SMS gateways. But I don't know how to do either of these things (assign valid phone number and create SMS gateways), or whether I can even do them on my own and purely programatically. Does anybody know where I can find this information?
TL;DR: Essentially, I need to know how to create my own Pinger/free SMS app. My app will be different, but will employ the same underlying functionality.
SMS messages are not free to send and this is why Pinger's business model is based on advertising when you send and receive their messages, see http://www.pinger.com/content/advertise.html
In order to do this yourself you would need to work with one of the companies that offers a SMS gateway. You could use a whole bunch of different providers, take a look at this post I previously made with some of them How to send SMS programatically in a professional and reliable way?
I also add, you would need to work out a suitable business model to pay for the SMS messages you plan to send :-).

Resources