PhoneMyBot provides all that chatbots need to connect with voice channels, with minimum development necessary, and with the best possible speech recognition and voice output. This page gives you a summary of the PhoneMyBot features.
We will keep this page up to date with new developments: please check in often.
PhoneMyBot uses SIP to interact with the telephone network, or a private switch that manages calls for a company (a PBX). SIP (Session Initiated Protocol) is the universal protocol for IP telephony. Interactive Media provides some provisioned telephone numbers in several countries for trial purposes. But other telephone numbers can be obtained and connected to PhoneMyBot, from different providers.
At the moment there are 2 providers that we have tested with PhoneMyBot, but it doesn't mean that others cannot be integrated. Please see here for instructions on how to provision a number from Twilio (https://www.twilio.com). And see here for a number from DIDWW (https://www.didww.com/).
If you have an Asterisk-based PBX, that uses the software from Asterisk.org (https://www.asterisk.org/), follow the instructions here to configure it to communicate with PhoneMyBot.
Finally, if you have a SIP-enabled phone number or endpoint that you want to connect with PhoneMyBot based on some other platform, please contact Interactive Media to finalize the connection.
PhoneMyBot provides the means to connect more than one chatbot to the same telephone number. This is useful to demo the service for different customers, for instance in different languages.
In this demo mode, as you call into your PhoneMyBot number, an initial dialog can ask you to insert a 4-digit PIN, which then identifies the chatbot your call will be directed to. The language of the initial dialog is configurable. You are assigned the PIN as you define a PhoneMyBot channel.
A telephone number can also be configured to point to a fixed chatbot. This is useful for demos used very frequently and, of course, for production services.
PhoneMyBot receives an audio flow from the telephone line. This consists mostly of voice, but also (possibly) of DTMF (touch-tones). PhoneMyBot monitors the line and detects basic call events like whether voice is present and what tones have been dialed, if any. PhoneMyBot uses the presence or absence of voice on the line to start streaming the voice to the chosen speech recognizer and to stop streaming when the voice ends.
PhoneMyBot integrates with multiple speech-to-text services and uses the best one, depending on the language being transcribed. In addition, special tasks can use a specific speech-to-text engine especially configured and specialized for the task at hand.
We call these tasks contexts. The chatbot can trigger a task in several ways, see the API page and the chatbot actions page to learn more. See here for a list of available contexts.
But don't ask what speech-to-text engine does what: this is one of the secret sauces that make PhoneMyBot great!
Barging-in is when users interrupt a sentence from the chatbot, either to ask for something else or because they have understood what the bot wants and are answering immediately.
Users do this often, but not necessarily allowing barge-in is a good strategy for voice applications: in general, the error rate goes up because users may misunderstand or not state their need clearly. PhoneMyBot may also mistake a noisy environment for a user speaking, stopping the bot's answer. However, the conversational effect is certainly more natural when barge-in is enabled.
PhoneMyBot supports barge-in as a configurable option, and allows to enable / disable barge-in for any single prompt coming from the chatbot. This can be done with a regular expression matching part of a prompt, by adding a tag to the prompt text, or from the PhoneMyBot API, depending on how the chatbot interacts with PhoneMyBot.
PhoneMyBot allows the chatbot personnel to choose among several different voices for each language. Integrating custom voices for a particular chatbot is also possible: please contact Interactive Media to get the ball rolling.
Normally, the conversation flow in PhoneMyBot is fairly straightforward. The user speaks, PhoneMyBot transcribes the user’s utterance and sends it to the chatbot. The chatbot responds with a text-based message (usually in JSON format). PhoneMyBot extracts the text to be spoken to the user from the message, transforms it into speech using the associated voice, and streams the answer to the user.
For more information on how PhoneMyBot decides on the text to be spoken based on the chatbot’s message, please see the Chatbot Adaptors section.
However, there are configurable exceptions to this flow.
In addition to conversations, PhoneMyBot provides an offline voice transcription service. This is useful for chatbots conversing with users over a messaging service that also allows the user to record and send voice messages. One example is WhatsApp.
PhoneMyBot offers two types of interfaces for offline message transcription: a RESTful API and a native WhatsApp number. The offline API is described here.
For WhatsApp, the chatbot can simply send a message with the recorded file to the PhoneMyBot number and receive back a message with the transcription. A number of commands are also available on the WhatsApp number through keywords. A description of this capability is here. Note however that this way to access the transcription is more expensive and so mostly used for demos. In production, use of the API is recommended.
Just like users want to send voice messages through WhatsApp or other messaging services, they may also want to receive voice messages in return. So, PhoneMyBot has a service for chatbots to send a text message and receive back a voice file with the text rendered in speech. The language, the voice and several tone / emphasis parameters can be set by the chatbot, either by configuration or keywords commands. See here for details.
In addition to its own RESTful API that chatbot can implement, PhoneMyBot provides an automatic way to connect with several chatbot platforms, by using their native API.
This is the job of the chatbot adaptors, that sit on top of the PhoneMyBot engine and manage the connection with the supported chatbots. You can see the supported platforms here. New chatbot platforms are being added all the time and if you have one that you want to get support for, please contact Interactive Media.
Chatbot platforms not only expose their API to chatbot clients. They also define different messages and information types, to show users different looks during a conversation. Not always these messages are easily translatable to speech and, especially for complex messages, PhoneMyBot needs to choose the right field or combination of fields to compose the voice message to the user. This is also the job of the adaptors, which analyze the incoming messages with the aid of the API specification to optimize the voice conversation. To do this, the adaptors may have different configuration parameters that the customer should set. See an example of the parameters for a typical adaptor here.
PhoneMyBot supports transferring an ongoing call to a human agent, or another service, as necessary. The decision to transfer the call is taken by the chatbot and PhoneMyBot supports multiple ways to start the transfer, to facilitate integration.
PhoneMyBot exposes a RESTful API that can be used by the chatbot to specify the number to transfer the call to. PhoneMyBot then reports the status of the call to the chatbot in case of failure to transfer or ends the session if the transfer succeeds.
The chatbot can also use a regular expression to configure a special sentence that will cause PhoneMyBot to transfer the call, either to a number specified in the chatbot message, or to a number (a queue) that has been pre-configured through the dashboard. After PhoneMyBot receives the message with the configured sentence, it transforms it into speech, streams the speech to the user, then transfers the call.
In all cases, the call is transferred using the SIP REFER method, which frees the voice channel for the next call. See here for more information on how to transfer calls.
PhoneMyBot supports outbound calls originated from a chatbot towards a telephone number. The chatbot can use a simple RESTful API exposed by PhoneMyBot to initiate a call and receive call progress events: call connected, busy, not answered, call disconnected. This page gives you information on how to place outbound calls.
Once the call is established, it is treated like any other call, and can also be transferred to a human agent through the same API used for inbound calls.
PhoneMyBot connects with several of the most common contact center software suites. This includes not only transferring a call to a queue managed by the Contact Center, for delivery to the next available human agent, but also attaching call data to it.
The pre-integrated contact center suites include Genesys, Cisco, Avaya, Nice InContact, Sinch.
Attached data may include the user’s number, the called number / service, and configurably, parts of or the whole text conversation with the chatbot.
However, usually no project to integrate with a contact center is "vanilla", and there are always tweaks to consider. Please contact Interactive Media when you need to integrate with a contact center.
The PhoneMyBot dashboard provides organizations deploying the service control on its configuration, statistics about traffic and activities, billing management and access to support. The dashboard manages the PhoneMyBot trials and operational service and is multi-lingual, currently supporting English, Spanish, Portuguese, and Italian.
To see your dashboard, log in to PhoneMyBot at https://www.phonemybot.com/cloud/en.