admin

About admin

This author has not yet filled in any details.
So far admin has created 43 entries.

We announces general availability of Visual Dialplan 3.5

November 14th 2014

We are listening our customers, your needs are defining our product road-map.
After receiving number of request to move away from cloud based architecture, we did extra push to satisfy your needs and at the same time keep new modular architecture in core Visual Dialplan engine. We had to rewrite many lines of the code but now we are happy to announce Visual Dialplan v3.5 that comes with new architecture, one time fee licensing, and several bug fixes.

Visual Dialplan is next generation development platform for Asterisk dial plan development. It features drag-and-drop visual modeling environment, large component library, credit card processing capability through Authorize.net, support for all major database end email servers including MS SQL, MySQL, Postgres, Sybase, Gmail, Exim.

Visual Dialplan Professional 3.5 highlights:

  • Standalone desktop architecture
  • One time fee licensing model
  • Various bug fixes

Full functional free of charge trial version of Visual Dialplan Professional can be downloaded from our web site www.apstel.com/download-visual-dialplan-professional.

Visual Dialplan 3.4 is available

August 19th 2014

The first Visual Dialplan with cloud based architecture

Visual Dialplan 3.4 is the first cloud based dial plan development platform for Asterisk PBX. It features drag-and-drop visual modeling environment, large component library, credit card processing capability through Authorize.net, support for all major database end email servers including MS SQL, MySQL, Postgres, Sybase, Gmail, Exim.

Visual Dialplan 3.4 highlights:

  • Cloud based architecture
  • Subscription based licensing and pricing
  • Cloud storage for dial plans, configuration, dial plans history
  • Various bug fixes

Full functional free of charge trial version of Visual Dialplan can be downloaded from our web site www.apstel.com/download-visual-dialplan-professional.

Asterisk voip how to – create simple speech enabled call router

This Call Router dial plan applicationdemonstrates one method of asking for names and routing calls to the appropriate extension based on that name. Besides Asterisk PBX, you will also need the LumenVox Speech Engine for Asterisk installed in order to run this voice application.

This voice application is developed using Visual Dialplan for Asterisk and pre-configured to be used with FreePBX or any other Asterisk GUI that includes FreePBX (AsteriskNOW, Elastix, PIAF, trixbox).

The output of the Visual Dialplan is standard Asterisk extensions.conf code and grammar files, automatically deployed and loaded to the Asterisk server. However, you will need to manually place the sound files used in this demo in the /var/lib/asterisk/sounds/ folder.

The first step is to have installed and running three pieces of software:

1. Asterisk PBX

There are several Asterisk GUIs on the market.

We recommend Elastix GUI. Download it here.

Download the Elastix PBX ISO package and follow on screen instructions to install it.
We recommend installation on virtual machine rather than dedicating complete PC for this test.
Besides Asterisk GUI, the ISO will install Linux OS, MySQL database, Asterisk core PBX etc.

2. Visual Dialplan

Visual Dialplan is intuitive and easy to use tool for the dial plan development.

It comes with several ready to use dial plan examples, including several speech enabled dial plan examples.
You can start by trying and modifying one of the samples or you can start with the example we use in this article.

Download Visual Dialplan here: Visual Dialplan download

3. LumenVox automated speech recognizer

The LumenVox automated speech recognizer is a software solution that converts spoken audio into text, providing users with a more efficient means of input. A Speech recognizer compares spoken input to a list of phrases to be recognized, called a grammar. The grammar is used to constrain the search, enabling the recognizer to return the text that represents the best match. This text is then used to drive the next steps of your speech-enabled application.
More details about this software and download options can be found at LumenVox web site.

 

Contexts description

Call Router context
This is the entry point for the Call Router demo dial plan. Dial plan accept calls coming to DID (extension) 789 and creates a speech port. Then the directory grammar is loaded and SpeechBackground application executed to perform the speech recognition while playing the sayname voice prompt. And last the the grammar is deactivated.

Dial plan checks SPEECH(results) to ensure there was at least one result (i.e. we actually received spoken input).

If not, we play the no input prompt and ask the caller to say something. Now that we know there was input, we save the recognized extension to the variable DIALTHIS and print some log messages to the console. Then dial plan runs a few checks on the confidence score. If it was really low (below 400), we will reject the utterance and ask the user to repeat what was said. If it was between 400 and 700, we launch the confirmation macro, passing the recognized result as the argument. If the user confirms by saying yes, or if the confidence score was above 700, we send the user to the specified extension.

Image

 

Macro/Subroutine description

CallRouter-confirm macro/subroutine
The confirmation macro is used when the application receives input that has a middling confidence score. The macro will ask the user to confirm what he or she said. There are three prompts used in this case: confirm990.gsm, confirm991.gsm, and confirm992.gsm. The macro knows which one to play based on the CONFIRMPROMPT variable, made by combining the word “confirm” with the recognized extension.

Image

Create Call Router for your own company

If you want to add more employees to Call Router list you will have to change grammar and sound prompts. Grammars are files that contain a list of words and phrases to be recognized. They consist of a list of rules. Each rule contains tokens which will match those rules. A special rule called the root rule exists. It must be matched for the grammar to be matched.

Grammar used in Call Router dial plan:

#ABNF 1.0;
language en-US;
mode voice;
tag-format <semantics/1.0.2006>;
root $company_directory;

$tom = (Tom [Smith]) {out=”990″};
$joe = ((Joe | Joseph) [Jones]) {out=”991″};
$bob = ((Bob | Robert | Bobby) [Johnson]) {out=”992″};

$company_directory = ($tom | $joe | $bob ) {out = rules.latest()};

If you want to add for example Melisa to your Call Router list you will have to change Grammar to look like this (text added in blue):

#ABNF 1.0;
language en-US;
mode voice;
tag-format <semantics/1.0.2006>;
root $company_directory;

$tom = (Tom [Smith]) {out=”990″};
$joe = ((Joe | Joseph) [Jones]) {out=”991″};
$bob = ((Bob | Robert | Bobby) [Johnson]) {out=”992″};
$melisa = ((Melisa [Mel]) {out=”994″};

$company_directory = ($tom | $joe | $bob | $melisa ) {out = rules.latest()};

You will also need to add the sound prompt confirm994.gsm to your Asterisk sound folder.

 

Asterisk voip how to – create simple speech enabled dial plan

Did you ever wanted to create IVR that recognize caller’s voice?
I guess you did but there are too many questions that are immediately coming to your mind when thinking about caller’s voice recognition – what software do I need to recognize voice, how to program it, do I need some additional hardware besides Asterisk PBX etc.

However, the truth is that creating speech enable dial plans is much more easier than it looks like at first glance.
Of course, to make it easy you would need the right set of tools.

In this article we will discuss how you can create simple speech enabled dial plan, and will create Hello Worlds dial plan that recognizes caller voice.
You can also download already created dial plan that will be used here: Download hello-world speech enabled dial plan

If you have any trouble loading the dial plan, contact us and we’ll gladly work with you to help you set it up.

The first step is to have installed and running three pieces of software:

1. Asterisk PBX

Asterisk PBX is available in two major distributions – standalone Asterisk PBX without GUI, and Asterisk PBX with a GUI.
We recommend Asterisk PBX with a GUI since it is much easier to set it up through the GUI comparing to manual files configuration under Linux.

There are several Asterisk GUIs on the market (Elastix, PIAF, AsteriskNOW etc.) but we do recommend Elastix GUI. Download it here.

Download the Elastix PBX ISO package and follow on screen instructions to install it.
We recommend installation on virtual machine rather than dedicating complete PC for this test.
After you are learn more, you can always switch to dedicated PC.

Besides Asterisk GUI, the ISO will install Linux OS, MySQL database, Asterisk core PBX etc.

2. Visual Dialplan

Visual Dialplan is intuitive and easy to use tool for the dial plan development. It is especially good choice in case of speech enabled dial plans development since it comes with ASR (Automatic Speech Recognition) Grammar editor and integrates ASR grammar with the dial plan during the deployment process. This last functionality will significantly speed up your speech enabled dial plan development and deployment.
Also, there is no need to know Linux or to have some Asterisk experience to use Visual Dialplan and create complex dial plans.

Visual Dialplan comes with several ready to use dial plan examples, including several speech enabled dial plan examples.
You can start by trying and modifying one of the samples or you can start with the example we use in this article.

Download Visual Dialplan here: Visual Dialplan download

3. LumenVox automated speech recognizer

The LumenVox automated speech recognizer is a software solution that converts spoken audio into text, providing users with a more efficient means of input. A Speech recognizer compares spoken input to a list of phrases to be recognized, called a grammar. The grammar is used to constrain the search, enabling the recognizer to return the text that represents the best match. This text is then used to drive the next steps of your speech-enabled application.

This is the last piece of the software you would need to create speech enabled dial plans.
More details about this software and download options can be found at LumenVox web site.

 

Create hello-world speech enabled dial plan

This dial plan is developed using Visual Dialplan for Asterisk and pre-configured to be used with Elastix or any other compatible Asterisk GUI (AsteriskNOW, PIAF, trixbox etc.).

The output of the Visual Dialplan is standard Asterisk extensions conf code and grammar files, automatically deployed and loaded to the Asterisk server.
However, you will still need to manually place the sound files used in this dial plan in the /var/lib/asterisk/sounds/ folder.

Contexts description

The entry point for this dial plan is the vdp-inbound or vdp-outbound context.

This dialplan will play the welcome message and ask the caller to select the sex.
Depending on the caller’s input the say block will play number one or number two (1 for mail or 2 for female).

Speech enabled dial plan

Complete ASR logic is in the ASR-select-sex context.

ASR logic

Each speech recognition action sets two variables, first is the value of the recognized word and the second is the score of the recognition (number between 1 and 100).

ASR-select-sex context plays hello-world voice file and listen to the user input. If the user input is ‘0’ i.e. user didn’t say anything, it will `play did-not-get-it` voice file and repeat the question again.

The dial plan will then check if the speech score (recognition score) is higher than “sex-treshold” value and proceed if it is and set variable “sex-value” to 1 or 2 depending on the caller input (1 in case the user said “male”, 2 in case the user said “female”), or ask the user to repeat the entry if the recognized score is below the threshold (poor recognition).

After this the context will return control to the vdp-inbound context to evaluate the GotoIf expression.

If expression returns true say block will say 1 and if false it will say 2.

ASR grammar

The ASR grammar in this dial plan is very simple – we will instruct engine to recognize just two words, “Male” and “Female”.
In case the “Male” word is recognized, the “sex” variable will be set to “1”.
In case the “Female” word is recognized, the “sex” variable will be set to”2″.

sex
#ABNF 1.0 UTF-8;
language en-US;
mode voice;
tag-format ;
root $sex;

$Male = (Male);
$Female = (Female);
$sex = $Male {$=”1″;}|$Female {$=”2″;};

 

Deployment

The output of Visual Dialplan is standard Asterisk code (extension.conf) and standard ASR grammar file.

Simply select “Dialplan” and then “Deploy” from the main many and Visual Dialplan will SSH to your remote Asterisk server, deploy the dial plan and grammar files, and reload it into the Asterisk PBX. 

You’ll be presented with a box to confirm the remote deployment. Just click yes and few seconds later a confirmation window will appear.

Make sure you validate your Asterisk dial plan before you deploy it to Asterisk server. This will make the whole process go a lot smoother.

Download hello-world speech enabled dial plan here

Asterisk voip how to – create office dial plan

In this article we will discuss how small to mid size company may have implement its dial plan.

The dial plan will provide basic capabilities of IVR, inbound and outbound calling, voicemail, DISA and other standard PBX functionality used in small to mid size companies.

If you are interested in company IVR only, check this article: Asterisk voip how to make company IVR

For this purpose you will need the following two software products – Asterisk open source PBX and Apstel Visual Dialplan.

Asterisk PBX is free, open source PBX, while Visual Dialplan is commercial software but its trial version can be freely downloaded and comes with all major functionality that we need to create this dial plan.

1. Download and install Asterisk PBX

Asterisk PBX is available in two major distributions – as a standalone Asterisk PBX without GUI, and Asterisk PBX with a GUI.
We recommend you to use Asterisk PBX with a GUI since it is significantly easier to set it all up through the GUI comparing to manual edit of configuration files at Linux OS.

You can find several Asterisk GUIs on the market (Elastix, PIAF, AsteriskNOW etc.) but we do recommend Elastix GUI.

After you download the Elastix PBX ISO package, run it on some virtual machine and follow on screen instructions.
The ISO will install all you need – Linux OS, MySQL database, Asterisk PBX, Elastix GUI etc.

2. Download and install Visual Dialplan

Visual Dialplan is intuitive and easy to use tool for dial plan development. There is no need to know Linux or to have some Asterisk experience to use it and create complex dial plans. It also comes with several ready to use dial plan examples.

Download Visual Dialplan here: Visual Dialplan download

 

Asterisk voip how to – create office dial plan

Now that we have both software components up and running, Elastix GUI and Visual Dialplan, we can proceed and create office dial plan.

The dial plan is broken into contexts, separated parts of the dial plan where each part has its own functionality.

We will create the following contexts:

sip

This context is intended for placing the SIP outbound calls and for checking voicemail.
Outbound calls are all calls initiated from the SIP endpoint (voip phone) to other SIP endpoints or outside world.

Asterisk voip how to - SIP outbound context

The first entry component matches all the extensions (each voip phone has its own extension number) in the following format 1XX (e.g. 100, 101, 102 … 199).

Calls that land on these extensions will be forwarded to the dial-ext context, which is used to dial the SIP endpoint.

Second entry point component matches the extension *1 and invokes the voicemail main application (administrative voicemail application). The caller is sent to the administrative interface for the voice mailbox based on the caller ID number. For example, the employee on extension 101 will be sent to the administrative voicemail application for the voice mailbox 101.

The third entry point component matches all other extensions and dials that number over the DAHDI channel from group 1 (DAHDI/g1/${EXTEN}).

dial-ext

This context is used for dialing the local extensions.

Asterisk PBX - Dialing local extensions

After the call is logged for debugging purposes (Log component), appropriate Sip extension is dialed.
In case of the busy, unavailable or no answer response, the call is sent to the voice mailbox for the dialed extension.

dial-in

This context accepts all incoming calls coming through the DAHDI lines.
Basically it is simple company IVR call flow.

Visual Dialplan - incoming calls

All inbound calls (landing the S extension) are first answered and presented with a welcome message, after which the main menu is played and caller input is expected.

The caller can choose from one of the following options:
0 – A call is sent to the dial-attendant context in order to dial employee based on the caller ID number.
1 – A call is sent to the dial-employee context to allow the caller to choose the employee extension that should be dialed dial.
2 – Allow employees to check the voicemail. A call is sent to the VoicemailMain application, without parameters, meaning that the application will ask the caller for both mailbox number and password.
3 – Allow employees to dial out. The call I sent to the DISA (Direct Inward Dialing Application) application. The caller is expected to type the password 123 after which he is allowed to dial-out as if he was using the local SIP phone.

If no choice I made by the caller within the RESP_TOUT (10 seconds), the call is hanged up.
In case the caller hangs up the caller, before making any choice, a debug message I logged using the Log component.

dial-attendant

This context dials one of the employees based on the caller’s area code.

Asterisk GUI - dialing employees based on caller area code

This very simple context sets the first four digits of the caller ID number to the area_code channel variable.
The select-attendant macro is call with the area_code value in order to find appropriate employee.
The last step of this context is dialing the SIP endpoint returned as a result of the previous macro call.

dial-employee

This context enables external caller to reach an extension.

The caller is prompted to type in the three digit extension of the employee he wishes to reach. If caller types the valid extension, the call is sent to the dial-ext context, otherwise the call is terminated.

Global variables

DIAL_TOUT
Dial timeout – 20sec.

DIGIT_TOUT
Digit timeout – 3sec.

RESP_TOUT
Response timeout – 10sec.

Channel variables

attendant
Selected Sip extension for this call. This variable is set by the select-attendant macro.

area_code
This variable holds the first four digits of the caller ID number.

mailbox
Default mailbox for the SIP peer.

Macros/subroutines

select-attendant

This macro selects extension based on the first four digits of the caller ID. The associated extension is read from the database.

If no value is passed in the area_code argument, this macro will read the default extension. If the value of the area_code argument is not empty, the macro will read the associated extension for that area code.
After the value is read from the database, the macro returns the control to the calling context.

Note:
In order to function properly, sample dialplan requires that some of the resources are already configured in the Asterisk server (i.e. SIP endpoints, voice mailboxes, sound files …).

 

Deploy the dial plan

The output of Visual Dialplan is standard Asterisk code (extension.conf).
Please find below the output of the dial plan described above.

You can use this code and deploy it to your Asterisk server manually or you can use Visual Dialplan and deploy it from Visual Dialplan automatically, with a single press of a button.

Simply select “Dialplan” and then “Deploy” from the main many and Visual Dialplan will SSH to your remote Asterisk server, deploy the dial plan, and reload it into the Asterisk PBX. You’ll be presented with a box to confirm the remote deployment. Just click yes and few seconds later a confirmation window will appear.

Make sure you validate your Asterisk dial plan before you deploy it to Asterisk server. This will make the whole process go a lot smoother.

Here are the URLs for download:

Download Visual Dialplan here: Visual Dialplan download

There is no need to download dial plan used in this article since it is already provided with Visual Dialplan – just load dial plan titled “04_quick_office.vdp” (Small office dial plan example).

If you still want to do this manually, here is the code you would need to copy-paste into your extensions.conf file and then reload the dialplan at Asterisk server.


; ------------
; Generated with Visual Dialplan.

[general]
static=yes
writeprotect=no
priorityjumping=no
autofallthrough=yes
clearglobalvars=no

[globals]
; Dial timeout - 20sec.
DIAL_TOUT=20
; Digit timeout - 3sec.
DIGIT_TOUT=3
; Response timeout - 10sec.
RESP_TOUT=10

; Context for the SIP outbound calls.
[sip]

exten => _1XX,1,Goto(dial-ext,${EXTEN},1)
exten => *1,1,Set(mailbox=${CALLERID(number)})
exten => *1,n,VoicemailMain(${mailbox})
exten => *1,n,Hangup()
exten => _X.,1,Dial(Zap/g1/${EXTEN},${DIAL_TOUT},HrS(600)TWK)

; Context used for dialing the local extensions.
[dial-ext]

exten => _1XX,1,Log(DEBUG,Dialing local extension ${EXTEN})
exten => _1XX,n,Dial(SIP/${EXTEN},${DIAL_TOUT},htwk)
exten => _1XX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?lbl_dial-ext_1:)
exten => _1XX,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?lbl_dial-ext_1:)
exten => _1XX,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?lbl_dial-ext_1:)
exten => _1XX,n(lbl_dial-ext_0),Hangup()
exten => _1XX,n(lbl_dial-ext_1),MailboxExists(${EXTEN})
exten => _1XX,n,GotoIf($["${VMBOXEXISTSSTATUS}" = "FAILED"]?lbl_dial-ext_2:)
exten => _1XX,n,VoiceMail(${EXTEN},u)
exten => _1XX,n,GotoIf($["${VMSTATUS}" = "FAILED"]?lbl_dial-ext_3:)
exten => _1XX,n,Goto(lbl_dial-ext_0)
exten => _1XX,n(lbl_dial-ext_3),Log(ERROR,Caller ${CALLERID(all)}
failed to leave a voicemail for ${EXTEN} mailbox.)
exten => _1XX,n,Goto(lbl_dial-ext_0)
exten => _1XX,n(lbl_dial-ext_2),Hangup()

; Context for incoming external (zap) calls.
[dial-in]

exten => s,1,Answer()
exten => s,n,Playback(welcome)
exten => s,n(lbl_dial-in_0),Set(TIMEOUT(response)=10)
exten => s,n,Set(TIMEOUT(digit)=3)
exten => s,n,Background(main-menu,m)
exten => s,n,WaitExten(${RESP_TOUT})
exten => s,n,Hangup()
exten => 0,1,Goto(dial-attendant,s,1)
exten => h,1,Log(VERBOSE,Caller ${CALLERID(all)} hung up.)
exten => h,n,Hangup()
exten => 2,1,VoicemailMain()
exten => 2,n,Goto(s,lbl_dial-in_0)
exten => 1,1,Goto(dial-employee,s,1)
exten => 3,1,DISA(123,sip)

; Dial attendant.
[dial-attendant]

exten => s,1,Set(area_code=${CALLERID(number):0:4})
exten => s,n,Macro(select-attendant,${area_code})
exten => s,n,RetryDial(,5,2,SIP/${attendant},${DIAL_TOUT},A(attendant-msg)hm()twk)

; Dial employee.
[dial-employee]

exten => s,1,Set(TIMEOUT(response)=${RESP_TOUT})
exten => s,n,Set(TIMEOUT(digit)=${DIGIT_TOUT})
exten => s,n,Background(select-emp)
exten => s,n,WaitExten(${RESP_TOUT})
exten => s,n,Playback(goodbye)
exten => s,n,Hangup()
exten => _1XX,1,Goto(dial-ext,${EXTEN},1)

; This macro selects attendant based on the first four digit of the caller ID.
[macro-select-attendant]

exten => s,1,GotoIf($["${LEN(${ARG1})}" = "0"]?:lbl_macro-select-attendant_0)
exten => s,n,Set(attendant=${DB(attendant/default)})
exten => s,n(lbl_macro-select-attendant_1),MacroExit()
exten => s,n(lbl_macro-select-attendant_0),Set(attendant=${DB(attendant/${ARG1})})
exten => s,n,Goto(lbl_macro-select-attendant_1)
; ------------