CPaaS Solution and Why should we adopt

There are many reasons for choosing CPaaS solution. Many telecom companies and call center providers are adopting this solution as it is deployed in highly scalable environment. In this solution one can expose his/her VoIP services in form of API and web hook responses only. This solution provides programmable interface to develop the IVR call flows, now no need to develop dialplan every time for a new IVR. The all heavy lifting is done in core development. People just need to Buy DID number, configure with incoming URL and generate appropriate web hook response to drive the call.

Also, some of the services can be delivered in form of APIs. This way customers do not require to worry about heavy VoIP server setup and it’s maintenance. They just need to hit required API to consume the service. As this solution is API rich, one can develop his/her own UI to present it to other clients.

Benefits of CPaaS Solution:
– Telecom companies can offer their voice services in form of API and that way they can expose their services in more effective way
– Customer does not require to do heavy VoIP server setup
– Telecom companies do not require to route physical SIP trunk lines to customer premises
– Customers do not require to care about server administration, any down time or scaling the voice traffic

About my CPaaS Solution:

I have developed such solution which is based on Asterisk media server, and Kamailio for scaling the voice traffic. In my solution there is one Programmable Voice Interface and one is API Interface. About both the interfaces I have given detailed explanation as below.

Programmable Voice Interface (INBOUND):

This interface provides you flexibility to develop your own IVR, Voicebot flow programmatically. You can use any programming language and generate appropriate web hook response as below. I have given some example apps that you can generate to create Voicebot or IVR.

1. VoiceBot:
Customer can dial DID number and flow can be routed to Voice Assistant. This VoiceBot is using Rasa NLP engine to query for user input and detect appropriate intent.

VoiceBot capabilities:
– Multilingual
– Intent detection
– Entity detection
– Programmatically control to route call based on intent or entity detection
– Can be connected to any RASA NLP server (Client’s already deployed NLP server)

Whenever incoming call comes to the platform, just need to generate below JSON response to connect call to the VoiceBot.

{“response”: {“app”: “voicebot”,”text”: “I am voice bot, please let me know how I can help you”,”silence”:”1000″,”voice”:”Joanna”,”volume”:”soft”,”rate”:”slow”,”pitch”:”medium”,”minspeaktime”:”500″,”action”:”http://localhost:80/api/voice_bot_action”,”rasahost”:”1.2.3.4″,”rasaport”:”5005″,”language_code”:”en-US”,”tts_engine_type”:”neural”,”nlp_engine”:”rasa”}}

The parameters explanation is as below:

app: the name of app to be executed
text: bot will announce this text as TTS
silence: stops for number of milliseconds after user completes his phrase
voice: male female voice in TTS
volume: type of volume
rate: how fast or slow the announcement
pitch: the pitch of announcement like high, medium
minspeaktime: the bot expects user to speak for at least these much number of milliseconds
action: once the bot detect some intent the call flow will be directed to this URL for further action to be taken after that
rasahost: the rasa host IP address
rasaport: rasa host port
language_code: in which language the announcement should be
tts_engine_type: standard or neural, the neural sounds more like human
nlp_engine: rasa or chatgpt, voicebot can use anyone of the specified NLP engine for queries

2. IVR:
This is traditional Interactive Voice Response service. Customer can dial DID number and flow can be routed to IVR, this programmable IVR and can be extended to any number of levels. It can collect DTMF inputs and store in a CDR as well.

Whenever incoming call comes to the platform, just need to generate below JSON response to connect call to the IVR app.

“response”: {“app”: “collect”,”refresh”: “1”,”text”: “Thank you for calling XYZ Bank. For English, press one. For Hindi Press two.”,”action”:”http://localhost:80/api/process_digits_hindi_english_demo?invalid_attempts=0″,”timeout”:”3″,”attempts”:”3″,”numdigits”:”1″,”voice”:”Joanna”,”volume”:”soft”,”rate”:”slow”,”pitch”:”medium”,”language_code”:”en-US”,”tts_engine_type”:”neural”}}

The parameters explanation is as below:

app: the name of app to be executed
text: bot will announce this text as TTS
action: once user press any DTMF the call control goes to this action url where we can take further action based on pressed DTMF input
timeout: number of trials before concluding as timeout when user do not enter anything
attempts: number of attempts to give when user presses invalid input
numdigits: number of digits to be expected from user like 10 number customer number or just press 1 for sales
voice: male female voice in TTS
volume: type of volume
rate: how fast or slow the announcement
pitch: the pitch of announcement like high, medium
language_code: in which language the announcement should be
tts_engine_type: standard or neural, the neural sounds more like human

3. Voicemail:
This app can be used when no one is available to answer the call. It can record user’s message and upload the recorded voice message to cloud.

Whenever incoming call comes to the platform, just need to generate below JSON response to connect call to the Voicemail app.

{“response”: {“app”: “voicemail”,”refresh”: “1”,”text”: “Please leave your message after the beep sound”,”voice”:”Joanna”,”volume”:”soft”,”rate”:”slow”,”pitch”:”medium”,”maxduration”:”30″,”action”:”http://localhost:80/api/voice_mail_recording”,”errortext”:”Something went wrong, we are not able to record your voicemail”,”successtext”:”Thank you for your message”,”language_code”:”en-US”,”tts_engine_type”:”neural”}}

The parameters explanation is as below:
app: the name of app to be executed
text: bot will announce this text as TTS
voice: male female voice in TTS
volume: type of volume
rate: how fast or slow the announcement
pitch: the pitch of announcement like high, medium
maxduration: number of seconds to record user’s voice message
action: once the message is recorded by the app, it will hit this action url and provides Recording URL and other info
errortext: if the app is not able to record the message then this announcement will happen
successtext: on successful recording of user’s voice message this announcement will happen
language_code: in which language the announcement should be
tts_engine_type: standard or neural, the neural sounds more like human

 

API Based Interface (OUTBOUND):

This is just API request, that is only required to hit with API credentials to use it. Here account wise separate API credentials are provided to consume the services and log data account wise.

1. Click2Call
This API request can initiate two outbound calls between customer and agent phone numbers and can bridge both parties in a call.

User can post below data in API request,
{“agent_number”:”91997927XXXX”,”caller_id”:”15168148720″,”destination_number”:”91800068XXXX”,”recording_option”:”on”,”transcript”:”on”}

The parameters explanation is as below:

agent_number: the agent mobile number
caller_id: the number to display as caller id
destination_number: the customer phone number
recording_option: on or off option can be provided to record call
transcript: to create call transcription at the call end this option should be on

2. Callback
This API can be used when Agent is going to schedule a callback on customer’s desired date and time.

Post Request Data,
{“agent_number”:”91997927XXXX”,”caller_id”:”15168148XXX”,”destination_number”:”91800068XXXX”,”recording_option”:”off”,”time_zone”:”Asia/Kolkata”,”scheduled_at”:”2023-08-15 12:55:00″}

The parameters explanation is as below:

agent_number: agent phone number
caller_id: caller id to be displayed when calling the number
destination_number: destination or customer phone number
recording_option: on or off option can be selected based on the requirement
time_zone: in which time zone the call should be scheduled
scheduled_at: on which date and time the call should be scheduled

3. Campaign Manager
a) Broadcast Announcement:
Here one can create a campaign that will auto dial contact numbers and when the call is answered a prerecorded file can be played or dynamic text to speech also possible
b) Collect Survey:
Here also one can create a campaign that will auto dial contact numbers and when the call is answered it can be connected to IVR flow
c) Connect to VoiceBot:
Here also one can create a campaign that will auto dial contact numbers and when the call is answered it can be connected to VoiceBot

{“list_id”:”LS608c393614″,”dnd_list_id”:”DNd2b09f8f80″,”campaign_name”:”test_broadcast_campaign_test_volume”,”campaign_type”:”0″,”campaign_caller_id”:”15168148XXX”,”dynamic_announcement”:”1″,”recorded_filename”:””,”announcement_text”:”Dear, {field1} , {field2}, Your due balance is,, {field3},, INR only”,”campaign_start_date”:”2023-09-25 14:05:00″,”campaign_end_date”:”2023-09-26 20:00:00″,”time_zone”:”Asia/Kolkata”,”repeat”:”2″,”max_retries”:”1″,”retry_time”:”60″,”calls_per_minute”:”10″,”voice”:”Matthew”,”volume”:”soft”,”rate”:”slow”,”pitch”:”medium”,”language_code”:”en-US”,”tts_engine_type”:”standard”}

The parameters explanation is as below:

list_id: the contact number list, these contacts will be dialed
dnd_list_id: the DND number list, there contacts will not get dialed and ignored during campaign
campaign_name: unique campaign name
campaign_type: 0 – broadcast announcement, 1 – Connect to IVR or Voicebot
campaign_caller_id: callerid to be displayed while dialing contacts
dynamic_announcement: 0 – recorded file announcement, 1 – TTS announcement
recorded_filename: in case of dynamic_announcement=0, one can provide filename to be announced
announcement_text: the dynamic text to be announced
campaign_start_date: start date
campaign_end_date: end date
time_zone: in which timezone the campaign should start and end
repeat: number of time to repeat the announcement
max_retries: number of times to retry call if not answered
retry_time: after how much seconds need to retry call if not answered
calls_per_minute: number of calls per minute to dial for the campaign
voice: male female voice in TTS
volume: type of volume
rate: how fast or slow the announcement
pitch: the pitch of announcement like high, medium
language_code: in which language the announcement should be
tts_engine_type: standard or neural, the neural sounds more like human

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *