Dial Plan Visualizer Module

Because it is all hard-coded. It looks at every module database. It would need to be updated in a few places to be more dynamic and do these checks.

1 Like

Hi. Installed on my FPBX17. I had red banner (but module is not red) and if i try to use it, when i select an inbound route i obtain this error:

SQLSTATE[42S02]: Base table or view not found: 1146 Table ‘asterisk.directory_details’ doesn’t exist

Error selecting from directory::

My machine is an Ubuntu 22 with FPBX17 working and all modules updated.

Thanks for the feedback.
These 2 + more are now optional.
The only required modules are inbound routes, recordings, time conditions/ groups, users, and queues.

2 Likes

You should not see a red banner.
I have just updated the module to not require tables to be present.
Please try again.

3 Likes

Thanks. Now with this new version banner and mysql errors disappeared. All seems to be right. I will test it more in next days on more complex pbxs.

2 Likes

This needs a lot of modernization – the module code is extremely dated – but it could be useful for getting my head around some of our more complex dialplans, will check it out. Thanks for bringing it to our attention.

I tried to install it on FreePBX 13 and I received this:

/­drbd/­httpd/­www/­html/­admin/­modules/­dpviz/­Dpviz.class.php42

Whoops \ Exception \ ErrorException (E_PARSE)

syntax error, unexpected ‘[’

/drbd/httpd/www/html/admin/modules/dpviz/Dpviz.class.php

panzoom = :panzoom, horizontal = :horizontal, datetime = :datetime, destination = :destination, scale = :scale, dynmembers = :dynmembers WHERE id = 1"; $insert = [ ‘:panzoom’ => $panzoom, ‘:horizontal’ => $horizontal,

GET Data

display modules
action process
quietmode 1
online 1

POST Data

modules Array ( [dpviz] => Array ( [action] => install [track] => stable ) )

Files empty

Cookies

lang en_US
searchHide 1
destinationUsage 0
local-type upload
PHPSESSID tuuh8j8u6rv9qfr09j0en49jf3

Session

langdirection ltr
module_name modules
module_page modules
AMP_user ampuser Object ( [username] => admin [id] => 431 [password:ampuser:private] => 86c16a459ecf39fd76a8e750f9d5074c4722f22b [extension_high:ampuser:private] => [extension_low:ampuser:private] => [sections:ampuser:private] => Array ( [0] => * ) [mode:ampuser:private] => usermanager [opmode:ampuser:private] => [deptname] => [_lastactivity] => 1744094603 )

Server/Request Data

SSLSETUP true
HTACCESS on
HTTPS on
HTTP_HOST 192.168.0.183
HTTP_USER_AGENT Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:137.0) Gecko/20100101 Firefox/137.0
HTTP_ACCEPT /
HTTP_ACCEPT_LANGUAGE en-GB,en;q=0.5
HTTP_ACCEPT_ENCODING gzip, deflate, br, zstd
HTTP_REFERER https://192.168.0.183/admin/config.php?display=modules
CONTENT_TYPE application/x-www-form-urlencoded
CONTENT_LENGTH 75
HTTP_ORIGIN https://192.168.0.183
HTTP_CONNECTION keep-alive
HTTP_COOKIE lang=en_US; searchHide=1; destinationUsage=0; local-type=upload; PHPSESSID=tuuh8j8u6rv9qfr09j0en49jf3
HTTP_SEC_FETCH_DEST empty
HTTP_SEC_FETCH_MODE cors
HTTP_SEC_FETCH_SITE same-origin
HTTP_PRIORITY u=0
PATH /sbin:/usr/sbin:/bin:/usr/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/ucb
SERVER_SIGNATURE Apache/2.2.15 (CentOS) Server at 192.168.0.183 Port 443
SERVER_SOFTWARE Apache/2.2.15 (CentOS)
SERVER_NAME 192.168.0.183
SERVER_ADDR 192.168.0.183
SERVER_PORT 443
REMOTE_ADDR 192.168.15.31
DOCUMENT_ROOT /var/www/html/
SERVER_ADMIN
SCRIPT_FILENAME /var/www/html/admin/config.php
REMOTE_PORT 53064
GATEWAY_INTERFACE CGI/1.1
SERVER_PROTOCOL HTTP/1.1
REQUEST_METHOD POST
QUERY_STRING display=modules&action=process&quietmode=1&online=1
REQUEST_URI /admin/config.php?display=modules&action=process&quietmode=1&online=1
SCRIPT_NAME /admin/config.php
no-gzip 1
dont-vary 1
PHP_SELF /admin/config.php
REQUEST_TIME 1744094603

Environment Variables empty

Registered Handlers

  1. Whoops\Handler\PrettyPageHandler

This is a good tool. I created a similar tool with vis.js which also supports call pathss going through several FreePBX servers (versions 2.9, 2.10, 12, 13, 14, 15) representing each FreePBX modules in different colour. Of course, it will be hard to be created as a FreePBX module because the module should access mysql on all other FreePBX servers.

One feature request - support for Custom Destinations used for voicemails not attached to an extension. All our voicemails are setup in this way. This is displayed with dpvis:
image
This is displayed with my visualisation:

And one more feature request - display IVR break out menus of queues:



Ho great.
I started to do the same module.
I’m happy, no need to work on it now. :smiley:

Amazing module, thank you very much

2 Likes

Looks like you’re running an ancient version of PHP. We were running PHP 5.6 back in the v13 days, I’d suggest getting up to that level.

1 Like

You’re welcome.

1 Like

FreePBX Distro 10.13.66 is with PHP 5.3.28. I just tried it on an old server which is pending decommissioning first. It has no problems on newer servers.

I installed this on a few FreePBX 16 servers, worked brilliantly, and I am loving it… I wish I had this when I was learning (well, still am…) and when I was cracking my head over complex configs that didn’t work as intended.

This is much more relevant than just “eye candy” - it’s a real tool to clarify, communicate, debug, speed up navigating the UI… great value!

Often the people using the PBX are very unclear about their own requirements, as I am sure many of you have experienced. They don’t know what’s possible, they can’t get the complexities into their head, etc. Not their fault, this is all normal, I guess. I am now giving them these diagrams so they can see where their calls are going, and when, and how…

I created a few Issues on github and the dev fixed things, added features, with warp speed :rocket: amazing :exploding_head:

Buy this man a coffee!! I did.

(I am not affiliated in any way, no strings attached to this suggestion, I am just a thankful stranger)

3 Likes

Right - well said! Eye candy is a bonus, not the goal of this.
We have avoided a lot of troubleshooting time researching (or trying to remember) the dial plan.
This is the biggest advantage. “Why doesn’t my phone ring? I should be in the queue like so and so.” or “Calling the office says we are closed! It’s Tuesday, we’re open!” (but we or them forgot they took a vacation last year and the time group still exists)

2 Likes

I found a bug on this module.
The BLF on Phone Apps (Restapps) doesn’t work anymore.
After uninstalling the module dpviz, the BLF works again.
Weird.

Franck,

Were you able to isolate the issue?
Is there a conflict with functions or databases causing the BLF to not work?
-We do not use phone apps and cannot test this.

Happy Friday everyone…
I have made some improvements on the module:

  • Start from a node: Ctrl+click will redraw the diagram from that point. Ctrl+click on parent will revert.
  • IVR Break Out Menus
  • Navigation and usage help text within options section.
  • Optional destinations (No Answer, Busy, Not Reachable) on extension nodes.
  • Clicking an extension in a Queue or Ring Group will navigate to Extensions module.
  • Better tooltips. (need to improve/ add more information here)
  • Pattern matching routes (eg. _0[09])

Let me know if I broke anything or you run into any issues.
Thanks for all the suggestions and support.

4 Likes

Hmmm. Not yet.
I can do it, but I’m busy now.
If I’ve got the time to dig where the issue comes from, I will try later.