Browse Source

Page Updates and TOC improvements. (#284)

* Update features.md

* Update sip_profiles.md

* Create dialplan_details.md

* Update dialplan_details.md

* Update dialplan_details.md
AdSecIT 5 months ago
parent
commit
5830587f08
3 changed files with 735 additions and 285 deletions
  1. 12 4
      source/advanced/sip_profiles.md
  2. 609 0
      source/dialplan/dialplan_details.md
  3. 114 281
      source/features/features.md

+ 12 - 4
source/advanced/sip_profiles.md

@@ -1,10 +1,18 @@
 # Sip Profiles
 
+```{toctree}
+:hidden:
+internal_sip_profile.md
+external_sip_profile.md
+internal_ipv6_sip_profile.md
+external_ipv6_sip_profile.md
+```
+
 -   Advanced \> SIP Profiles
 
 ![image](../_static/images/fusionpbx_sip_profiles.jpg)
 
-### [Internal](https://docs.fusionpbx.com/en/latest/advanced/internal_sip_profile.html)
+<h2><a href="/en/latest/advanced/internal_sip_profile.html">Internal</a></h2>
 
 Internal sip profiles (port 5060/5061) require registration or [access
 controls](access_controls.md)
@@ -12,7 +20,7 @@ cidr range to allow the IP address in without SIP authentication. Once
 the access controls are setup correctly, the carrier will be allowed to
 send calls to the internal profile.
 
-### [External](https://docs.fusionpbx.com/en/latest/advanced/external_sip_profile.html)
+<h2><a href="/en/latest/advanced/external_sip_profile.html">External</a></h2>
 
 External sip profiles (port 5080-5081) allow anonymous connection to
 FusionPBX and is optional. External profile is optional when freewitch
@@ -20,7 +28,7 @@ has a public ip address. Can be useful when setting behind nat. Being
 anonymous doesn\'t mean totally open due to the inbound routes call
 conditions.(call filtering)
 
-## [Internal ipv6](https://docs.fusionpbx.com/en/latest/advanced/internal_ipv6_sip_profile.html)
+<h2><a href="/en/latest/advanced/internal_ipv6_sip_profile.html">Internal ipv6</a></h2>
 
 Internal ipv6 sip profiles (port 5060/5061) require registration or
 [access
@@ -35,7 +43,7 @@ send calls to the internal ipv6 profile.
     of the profile you want to disable. From the dropdown box select
     **enabled** to false.
 
-## [External ipv6](https://docs.fusionpbx.com/en/latest/advanced/external_ipv6_sip_profile.html)
+<h2><a href="/en/latest/advanced/external_ipv6_sip_profile.html">External ipv6</a></h2>
 
 External ipv6 sip profiles (port 5080-5081) allow anonymous connection
 to FusionPBX and is optional.

+ 609 - 0
source/dialplan/dialplan_details.md

@@ -0,0 +1,609 @@
+# Dialplan Details
+
+## Global
+
+Global specific dialplans are global to all tennants(domains). These can be changed, however the changes apply to all tennants.
+
+### Not Found
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | | | | | 0 | 5 |
+| action | set | call_direction=inbound | | TRUE | 0 | 10 |
+| action | log | [inbound routes] 404 not found \${sip_network_ip} | | TRUE | 0 | 15 |
+
+### Call Forward All
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | \${user_exists} | TRUE | | | 0 | 5 |
+| condition | \${forward_all_enabled} | TRUE | | | 0 | 10 |
+| action | transfer | \${forward_all_destination} XML \${domain_name} | | | 0 | 15 |
+
+### Intercept Ext Polycom
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^\\*97(\\d+)$ | | | 0 | 5 |
+| action | answer | | | | 0 | 10 |
+| action | lua | intercept.lua $1 | | | 0 | 15 |
+
+### Talking Clock Date
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^\\*9171$ | | | 0 | 5 |
+| action | answer | | | | 0 | 10 |
+| action | sleep | 1000 | | | 0 | 15 |
+| action | say | \${default_language} CURRENT_DATE pronounced \${strepoch()} | | | 0 | 20 |
+| action | hangup | | | | 0 | 25 |
+
+### Talking Clock Date And Time
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^\\*9172$ | | | 0 | 5 |
+| action | answer | | | | 0 | 10 |
+| action | sleep | 1000 | | | 0 | 15 |
+| action | say | \${default_language} CURRENT_DATE_TIME pronounced \${strepoch()} | | | 0 | 20 |
+| action | hangup | | | | 0 | 25 |
+
+### Outbound Route Example
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | \${user_exists} | FALSE | | | 0 | 0 |
+| condition | destination_number | ^\+?1?(\d{10})$ | | | 0 | 10 |
+| action | set | sip_h_X-accountcode=\${accountcode} | | | 0 | 20 |
+| action | export | call_direction=outbound | | | 0 | 30 |
+| action | unset | call_timeout | | | 0 | 40 |
+| action | set | hangup_after_bridge=true | | | 0 | 50 |
+| action | set | effective_caller_id_name=\${outbound_caller_id_name} | | | 0 | 60 |
+| action | set | effective_caller_id_number=\${outbound_caller_id_number} | | | 0 | 70 |
+| action | set | inherit_codec=true | | | 0 | 80 |
+| action | set | ignore_display_updates=true | | | 0 | 90 |
+| action | set | callee_id_number=$1 | | | 0 | 100 |
+| action | set | continue_on_fail=true | | | 0 | 110 |
+| action | bridge | sofia/gateway/72d236fb-945b-4c86-8e75-af7c6bcf2862/$1 | | | 0 | 120 |
+| action | bridge | sofia/gateway/72d236fb-945b-4c86-8e75-af7c6bcf2862/$1 | | | 0 | 130 |
+
+### Talking Clock Time
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^\*9170$ | | | 0 | 5 |
+| action | answer | | | | 0 | 10 |
+| action | sleep | 1000 | | | 0 | 15 |
+| action | say | \${default_language} CURRENT_TIME pronounced \${strepoch()} | | | 0 | 20 |
+| action | hangup | | | | 0 | 25 |
+
+***
+
+## Domain Specific
+
+Domain specific dialplans are all the same initially but can be changed. Those changes are per domain, thus helps FusionPBX achieve multitenancy.
+
+### Hold Music
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data                              | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|---------------------------------------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition           | destination_number   | ^\*9664$                                          |                       |                        | 0                     | 5                     |
+| condition           | \${sip_has_crypto}    | ^(AES_CM_128_HMAC_SHA1_32\|AES_CM_128_HMAC_SHA1_80)$ |                    |                        | 0                     | 10                    |
+| action              | answer               |                                                   |                       |                        | 0                     | 15                    |
+| action              | execute_extension    | is_secure XML \${context}                          |                       |                        | 0                     | 20                    |
+| action              | playback             | $\${hold_music}                                    |                       |                        | 0                     | 25                    |
+| anti-action         | set                  | zrtp_secure_media=true                            |                       |                        | 0                     | 30                    |
+| anti-action         | answer               |                                                   |                       |                        | 0                     | 35                    |
+| anti-action         | playback             | silence_stream://2000                             |                       |                        | 0                     | 40                    |
+| anti-action         | execute_extension    | is_zrtp_secure XML \${context}                     |                       |                        | 0                     | 45                    |
+| anti-action         | playback             | $\${hold_music}                                    |                       |                        | 0                     | 50                    |
+
+### Agent Status
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data      | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|---------------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition           | destination_number   | ^\*22$                    |                       |                        | 0                     | 5                     |
+| action              | set                  | agent_id=\${sip_from_user} |                       |                        | 0                     | 10                    |
+| action              | lua                  | app.lua agent_status      |                       |                        | 0                     | 15                    |
+Conversion Notes:
+
+### Agent Status ID
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^\\*23$ | | | 0 | 5 |
+| action | set | agent_id= | | | 0 | 10 |
+| action | lua | app.lua agent_status | | | 0 | 15 |
+
+### DISA
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^\*(3472)$ | | | 0 | 5 |
+| action | answer | | | | 0 | 10 |
+| action | set | pin_number=36227215 | | | 0 | 15 |
+| action | set | dialplan_context=\${context} | | | 0 | 20 |
+| action | lua | disa.lua | | | 0 | 25 |
+
+### Provision
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^\*11$ | on-true | | 0 | 5 |
+| action | set | reboot=true | | | 0 | 10 |
+| action | set | action=login | | | 0 | 15 |
+| action | lua | app.lua provision | | | 0 | 20 |
+| condition | destination_number | ^\*12$ | | | 1 | 30 |
+| action | set | reboot=true | | | 1 | 35 |
+| action | set | action=logout | | | 1 | 40 |
+| action | lua | app.lua provision | | | 1 | 45 |
+
+### Call Forward
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^\*72$ | on-true | | 0 | 5 |
+| action | set | request_id=false | | | 0 | 10 |
+| action | set | enabled=true | | | 0 | 15 |
+| action | lua | call_forward.lua | | | 0 | 20 |
+| condition | destination_number | ^\*73$ | on-true | | 1 | 30 |
+| action | set | request_id=false | | | 1 | 35 |
+| action | set | enabled=false | | | 1 | 40 |
+| action | lua | call_forward.lua | | | 1 | 45 |
+| condition | destination_number | ^\*74$ | on-true | | 2 | 55 |
+| action | set | request_id=false | | | 2 | 60 |
+| action | set | enabled=toggle | | | 2 | 65 |
+| action | lua | call_forward.lua | | | 2 | 70 |
+| condition | destination_number | ^forward\+(\Q\${caller_id_number}\E)(?:\/(\d+))?$ | on-true | | 3 | 80 |
+| action | set | enabled=toggle | | | 3 | 85 |
+| action | set | forward_all_destination=$2 | | | 3 | 90 |
+| action | lua | call_forward.lua | | | 3 | 95 |
+
+### Call Block
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | \${call_direction} | ^inbound$ | | | 0 | 5 |
+| action | lua | app.lua call_block | | | 0 | 10 |
+
+### Do Not Disturb
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^\*77$ | on-true | | 0 | 5 |
+| action | set | enabled=toggle | | | 0 | 10 |
+| action | lua | do_not_disturb.lua | | | 0 | 15 |
+| condition | destination_number | ^\*78$|\*363$ | on-true | | 1 | 25 |
+| action | set | enabled=true | | | 1 | 30 |
+| action | lua | do_not_disturb.lua | | | 1 | 35 |
+| condition | destination_number | ^\*79$ | on-true | | 2 | 45 |
+| action | set | enabled=false | | | 2 | 50 |
+| action | lua | do_not_disturb.lua | | | 2 | 55 |
+| condition | destination_number | ^dnd\+\${caller_id_number}$ | on-true | | 3 | 65 |
+| action | set | enabled=toggle | | | 3 | 70 |
+| action | lua | do_not_disturb.lua | | | 3 | 75 |
+
+### Voicemail (Vmain User)
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^\*97$ | | | 0 | 5 |
+| action | answer | | | | 0 | 10 |
+| action | sleep | 1000 | | | 0 | 15 |
+| action | set | voicemail_action=check | | | 0 | 20 |
+| action | set | voicemail_id=\${caller_id_number} | | | 0 | 25 |
+| action | set | voicemail_profile=default | | | 0 | 30 |
+| action | lua | app.lua voicemail | | | 0 | 35 |
+
+### Vmain
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | \^vmain\$\|\^\*4000\$\|\^\*98\$ | never | | 0 | 5 |
+| action | answer | | | | 0 | 10 |
+| action | sleep | 1000 | | | 0 | 15 |
+| action | set | voicemail_action=check | | | 0 | 20 |
+| action | set | voicemail_profile=default | | | 0 | 25 |
+| action | lua | app.lua voicemail | | | 0 | 30 |
+| condition | destination_number | \^\(vmain\$\\\|\^\*4000\$\\\|\^\*98\)\(\\d\{2,12\}\)\$ | | | 1 | 40 |
+| action | answer | | | | 1 | 45 |
+| action | sleep | 1000 | | | 1 | 50 |
+| action | set | voicemail_action=check | | | 1 | 55 |
+| action | set | voicemail_id=$2 | | | 1 | 60 |
+| action | set | voicemail_profile=default | | | 1 | 65 |
+| action | set | voicemail_authorized=false | | | 1 | 70 |
+| action | lua | app.lua voicemail | | | 1 | 75 |
+
+### Directory
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^\*411$ | | | 0 | 5 |
+| action | lua | directory.lua | | | 0 | 10 |
+
+
+### Follow Me
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition           | destination_number   | ^\*21$               |                       |                        | 0                     | 5                     |
+| action              | answer               |                      |                       |                        | 0                     | 10                    |
+| action              | lua                  | follow_me.lua        |                       |                        | 0                     | 15                    |
+
+### Recordings
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^\*(732)$ | | | 0 | 5 |
+| action | answer | | | | 0 | 10 |
+| action | set | pin_number=37775310 | | | 0 | 15 |
+| action | set | recording_slots=true | | | 0 | 20 |
+| action | set | recording_prefix=recording | | | 0 | 25 |
+| action | lua | recordings.lua | | | 0 | 30 |
+
+### Call Privacy
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^\*67(\d+)$ | | | 0 | 5 |
+| action | privacy | full | | | 0 | 10 |
+| action | set | sip_h_Privacy=id | | | 0 | 15 |
+| action | set | privacy=yes | | | 0 | 20 |
+| action | transfer | $1 XML \${context} | | | 0 | 25 |
+
+### Page
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^\*724$ | | | 0 | 5 |
+| action | set | caller_id_name=Page | | | 0 | 10 |
+| action | set | caller_id_number= | | | 0 | 15 |
+| action | set | pin_number=48760243 | | | 0 | 20 |
+| action | set | destinations=101-103,105 | | | 0 | 25 |
+| action | set | moderator=false | | | 0 | 30 |
+| action | set | mute=true | | | 0 | 35 |
+| action | set | set api_hangup_hook=conference page-\${destination_number} kick all | | | 0 | 40 |
+| action | lua | page.lua | | | 0 | 45 |
+
+### Valet Park In
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^(park\+)?(\*5900)$ | | | 0 | 5 |
+| action | valet_park | park@\${domain_name} auto in 5901 5999 | | | 0 | 10 |
+
+### Valet Park Out
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^(park\+)?\*(59[0-9][0-9])$ | | | 0 | 5 |
+| action | answer | | | | 0 | 10 |
+| action | valet_park | park@\${domain_name} $2 | | | 0 | 15 |
+
+### Valet Parking
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^(park\+)?(\*59[0-9][0-9])$ | never | | 0 | 5 |
+| condition | \${sip_h_Referred-By} | sip:(.*)@.* | never | | 0 | 10 |
+| action | set | referred_by_user=$1 | | | 0 | 15 |
+| condition | destination_number | ^(park\+)?(\*59[0-9][0-9])$ | never | | 1 | 25 |
+| action | set | park_in_use=false | | TRUE | 1 | 30 |
+| action | set | park_lot=$2 | | TRUE | 1 | 35 |
+| condition | destination_number | ^(park\+)?(\*59[0-9][0-9])$ | | | 2 | 45 |
+| condition | \${cond \${sip_h_Referred-By} == '' ? false : true} | TRUE | never | | 2 | 50 |
+| action | set | park_in_use=\${regex \${valet_info park@\${domain_name}}\|\${park_lot}} | | TRUE | 2 | 55 |
+| condition | \${park_in_use} | TRUE | never | | 3 | 65 |
+| action | transfer | \${referred_by_user} XML \${context} | | | 3 | 70 |
+| anti-action | set | valet_parking_timeout=180 | | | 3 | 75 |
+| anti-action | set | valet_hold_music=\${hold_music} | | | 3 | 80 |
+| anti-action | set | valet_parking_orbit_exten=\${referred_by_user} | | | 3 | 85 |
+| anti-action | valet_park | park@\${domain_name} \${park_lot} | | | 3 | 90 |
+
+
+### User Exists
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data                                      | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|-----------------------------------------------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition           |                      |                                                           |                       |                        | 0                     | 5                     |
+| action              | set                  | user_exists=\${user_exists id \${destination_number} \${domain_name}} | | TRUE           | 0                     | 10                    |
+| condition           | \${user_exists}       | ^true$                                                    |                       |                        | 1                     | 20                    |
+| action              | set                  | extension_uuid=\${user_data \${destination_number}@\${domain_name} var extension_uuid} | | TRUE  | 1                     | 25                    |
+| action              | set                  | hold_music=\${user_data \${destination_number}@\${domain_name} var hold_music} | | TRUE  | 1                     | 30                    |
+| action              | set                  | forward_all_enabled=\${user_data \${destination_number}@\${domain_name} var forward_all_enabled} | | TRUE | 1 | 35                    |
+| action              | set                  | forward_all_destination=\${user_data \${destination_number}@\${domain_name} var forward_all_destination} | | TRUE | 1 | 40      |
+| action              | set                  | forward_busy_enabled=\${user_data \${destination_number}@\${domain_name} var forward_busy_enabled} | | TRUE | 1 | 45    |
+| action              | set                  | forward_busy_destination=\${user_data \${destination_number}@\${domain_name} var forward_busy_destination} | | TRUE | 1 | 50  |
+| action              | set                  | forward_no_answer_enabled=\${user_data \${destination_number}@\${domain_name} var forward_no_answer_enabled} | | TRUE | 1 | 55 |
+| action              | set                  | forward_no_answer_destination=\${user_data \${destination_number}@\${domain_name} var forward_no_answer_destination} | | TRUE | 1 | 60 |
+| action              | set                  | forward_user_not_registered_enabled=\${user_data \${destination_number}@\${domain_name} var forward_user_not_registered_enabled} | | TRUE | 1 | 65 |
+| action              | set                  | forward_user_not_registered_destination=\${user_data \${destination_number}@\${domain_name} var forward_user_not_registered_destination} | | TRUE | 1 | 70 |
+| action              | set                  | do_not_disturb=\${user_data \${destination_number}@\${domain_name} var do_not_disturb} | | TRUE | 1 | 75                    |
+| action              | set                  | call_timeout=\${user_data \${destination_number}@\${domain_name} var call_timeout} | | TRUE | 1 | 80                    |
+| action              | set                  | missed_call_app=\${user_data \${destination_number}@\${domain_name} var missed_call_app} | | TRUE | 1 | 85                    |
+| action              | set                  | missed_call_data=\${user_data \${destination_number}@\${domain_name} var missed_call_data} | | TRUE | 1 | 90                    |
+| action              | set                  | toll_allow=\${user_data \${destination_number}@\${domain_name} var toll_allow} | | TRUE | 1 | 95                    |
+| action              | set                  | call_screen_enabled=\${user_data \${destination_number}@\${domain_name} var call_screen_enabled} | | TRUE | 1 | 100                   |
+
+### Caller Details
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data          | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|-------------------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition           |                      |                               | never                 |                        | 0                     | 5                     |
+| action              | set                  | caller_destination=\${destination_number} |             | TRUE                   | 0                     | 10                    |
+| action              | set                  | caller_id_name=\${caller_id_name} |                  | TRUE                   | 0                     | 15                    |
+| action              | set                  | caller_id_number=\${caller_id_number} |              | TRUE                   | 0                     | 20                    |
+
+### Call Direction
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data      | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|---------------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition           | \${call_direction}    | ^(inbound\|outbound\|local)$ | never               |                        | 0                     | 5                     |
+| anti-action         | export               | call_direction=local      |                       |                        | 0                     | 10                    |
+
+### Variables
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data                       | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|--------------------------------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition           |                      |                                            |                       |                        | 0                     | 5                     |
+| action              | export               | origination_callee_id_name=\${destination_number} |                  |                        | 0                     | 10                    |
+| action              | set                  | RFC2822_DATE=\${strftime(%a, %d %b %Y %T %z)} |                    |                        | 0                     | 15                    |
+
+### Call Limit
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data                      | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|-------------------------------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition           | \${call_direction}    | ^(inbound\|outbound)$                     |                       |                        | 0                     | 5                     |
+| action              | limit                | hash inbound \${domain_uuid} \${max_calls} !USER_BUSY |             |                        | 0                     | 10                    |
+
+### Is Local
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition           | \${user_exists}       | FALSE                |                       |                        | 0                     | 5                     |
+| action              | lua                  | app.lua is_local     |                       |                        | 0                     | 10                    |
+
+### User Record
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data                                      | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|-----------------------------------------------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition           |                      |                                                           |                       |                        | 0                     | 5                     |
+| action              | set                  | user_record=\${user_data \${destination_number}@\${domain_name} var user_record} | | TRUE | 0                     | 10                    |
+| action              | set                  | from_user_exists=\${user_exists id \${sip_from_user} \${sip_from_host}} | | TRUE | 0                     | 15                    |
+| condition           | \${user_exists}       | ^true$                                                    | never                 |                        | 1                     | 25                    |
+| condition           | \${user_record}       | ^all$                                                     | never                 |                        | 1                     | 30                    |
+| action              | set                  | record_session=true                                       |                       | TRUE                   | 1                     | 35                    |
+| condition           | \${user_exists}       | ^true$                                                    | never                 |                        | 2                     | 45                    |
+| condition           | \${call_direction}    | ^inbound$                                                 | never                 |                        | 2                     | 50                    |
+| condition           | \${user_record}       | ^inbound$                                                 | never                 |                        | 2                     | 55                    |
+| action              | set                  | record_session=true                                       |                       | TRUE                   | 2                     | 60                    |
+| condition           | \${user_exists}       | ^true$                                                    | never                 |                        | 3                     | 70                    |
+| condition           | \${call_direction}    | ^outbound$                                                | never                 |                        | 3                     | 75                    |
+| condition           | \${user_record}       | ^outbound$                                                | never                 |                        | 3                     | 80                    |
+| action              | set                  | record_session=true                                       |                       | TRUE                   | 3                     | 85                    |
+| condition           | \${user_exists}       | ^true$                                                    | never                 |                        | 4                     | 95                    |
+| condition           | \${call_direction}    | ^local$                                                   | never                 |                        | 4                     | 100                   |
+| condition           | \${user_record}       | ^local$                                                   | never                 |                        | 4                     | 105                   |
+| action              | set                  | record_session=true                                       |                       | TRUE                   | 4                     | 110                   |
+| condition           | \${from_user_exists}  | ^true$                                                    | never                 |                        | 5                     | 120                   |
+| action              | set                  | from_user_record=\${user_data \${sip_from_user}@\${sip_from_host} var user_record} | | TRUE | 5                     | 125                   |
+| condition           | \${from_user_exists}  | ^true$                                                    | never                 |                        | 6                     | 135                   |
+| condition           | \${from_user_record}  | ^all$                                                     | never                 |                        | 6                     | 140                   |
+| action              | set                  | record_session=true                                       |                       | TRUE                   | 6                     | 145                   |
+| condition           | \${from_user_exists}  | ^true$                                                    | never                 |                        | 7                     | 155                   |
+| condition           | \${call_direction}    | ^inbound$                                                 | never                 |                        | 7                     | 160                   |
+| condition           | \${from_user_record}  | ^inbound$                                                 | never                 |                        | 7                     | 165                   |
+| action              | set                  | record_session=true                                       |                       | TRUE                   | 7                     | 170                   |
+| condition           | \${from_user_exists}  | ^true$                                                    | never                 |                        | 8                     | 180                   |
+| condition           | \${call_direction}    | ^outbound$                                                | never                 |                        | 8                     | 185                   |
+| condition           | \${from_user_record}  | ^outbound$                                                | never                 |                        | 8                     | 190                   |
+| action              | set                  | record_session=true                                       |                       | TRUE                   | 8                     | 195                   |
+| condition           | \${from_user_exists}  | ^true$                                                    | never                 |                        | 9                     | 205                   |
+| condition           | \${call_direction}    | ^local$                                                   | never                 |                        | 9                     | 210                   |
+| condition           | \${from_user_record}  | ^local$                                                   | never                 |                        | 9                     | 215                   |
+| action              | set                  | record_session=true                                       |                       | TRUE                   | 9                     | 220                   |
+| condition           | \${record_session}    | ^true$                                                    |                       |                        | 10                    | 230                   |
+| action              | set                  | record_path=\${recordings_dir}/\${domain_name}/archive/\${strftime(%Y)}/\${strftime(%b)}/\${strftime(%d)} | | TRUE | 10                    | 235                   |
+| action              | set                  | record_name=\${uuid}.\${record_ext}                         |                       | TRUE                   | 10                    | 240                   |
+| action              | set                  | recording_follow_transfer=true                             |                       | TRUE                   | 10                    | 245                   |
+| action              | set                  | record_append=true                                        |                       | TRUE                   | 10                    | 250                   |
+| action              | set                  | record_in_progress=true                                   |                       | TRUE                   | 10                    | 255                   |
+| action              | record_session       | \${record_path}/\${record_name}                             |                       | FALSE                  | 10                    | 260                   |
+
+### Redial
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data                              | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|---------------------------------------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition           | destination_number   | ^(redial\|\*870)$                                 | on-true               |                        | 0                     | 5                     |
+| action              | transfer             | \${hash(select/\${domain_name}-last_dial/\${caller_id_number})} |            |                        | 0                     | 10                    |
+| condition           |                      |                                                   | never                 |                        | 1                     | 20                    |
+| action              | hash                 | insert/\${domain_name}-last_dial/\${caller_id_number}/\${destination_number} | |       | 1                     | 25                    |
+
+### Speed Dial
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition           | destination_number   | ^\*0(.*)$            |                       |                        | 0                     | 5                     |
+| action              | lua                  | app.lua speed_dial $1 |                      |                        | 0                     | 10                    |
+
+### Default Caller ID
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data                             | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|--------------------------------------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition           | \${emergency_caller_id_number} | ^$                                      | never                 |                        | 0                     | 5                     |
+| action              | set                  | emergency_caller_id_name=\${default_emergency_caller_id_name} | | TRUE  | 0                     | 10                    |
+| action              | set                  | emergency_caller_id_number=\${default_emergency_caller_id_number} | | TRUE | 0                    | 15                    |
+| condition           | \${outbound_caller_id_number} | ^$                                       | never                 |                        | 1                     | 25                    |
+| action              | set                  | outbound_caller_id_name=\${default_outbound_caller_id_name} | | TRUE  | 1                     | 30                    |
+| action              | set                  | outbound_caller_id_number=\${default_outbound_caller_id_number} | | TRUE | 1                   | 35                    |
+
+### Group Intercept
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition           | destination_number   | ^\*8$                |                       |                        | 0                     | 5                     |
+| condition           | \${sip_h_X-intercept_uuid} | ^(.+)$          | on-true               |                        | 0                     | 10                    |
+| action              | intercept            | $1                   |                       |                        | 0                     | 15                    |
+| condition           |                      |                      |                       |                        | 1                     | 25                    |
+| action              | answer               |                      |                       |                        | 1                     | 30                    |
+| action              | lua                  | intercept_group.lua  |                       |                        | 1                     | 35                    |
+
+### Conf Xfer
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data                                      | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|-----------------------------------------------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition           | destination_number   | ^conf_add_begin$                                          | on-true               |                        | 0                     | 5                     |
+| action              | set                  | api_result=\${conference(\${conf_xfer_number} unmute \${conference_member_id} quiet)} | | | 0                     | 10                    |
+| action              | bind_digit_action    | conf-xfer,*0,api:lua,transfer2.lua \${uuid} conf_enter_number::XML::conf-xfer@\${domain_name} conf_enter_to::XML::conf-xfer@\${domain_name} | | | 0 | 15                    |
+| action              | bind_digit_action    | conf-xfer,##,api:lua,transfer2.lua \${uuid} conf_enter_number::XML::conf-xfer@\${domain_name} ::KILL:: | | | 0                     | 20                    |
+| action              | bind_digit_action    | conf-xfer,*#,api:lua,transfer2.lua \${uuid} conf_add_end::XML::conf-xfer@\${domain_name} ::KILL:: | | | 0                     | 25                    |
+| action              | bind_digit_action    | conf,*#,exec:execute_extension,conf_add_begin XML conf-xfer@\${domain_name} | | | 0                     | 30                    |
+| action              | bind_digit_action    | none,NONE,api:sleep,1                                     |                       |                        | 0                     | 35                    |
+| action              | set                  | continue_on_fail=true                                     |                       |                        | 0                     | 40                    |
+| action              | transfer             | conf_enter_number XML conf-xfer@\${domain_name}            |                       |                        | 0                     | 45                    |
+| condition           | destination_number   | ^conf_add_end$                                            | on-true               |                        | 1                     | 55                    |
+| action              | digit_action_set_realm | conf                                                    |                       |                        | 1                     | 60                    |
+| action              | set                  | api_result=\${conference(\${conf_xfer_number} mute \${conference_member_id})} | | | 1                     | 65                    |
+| action              | conference           | \${conf_xfer_number}@page                                  |                       |                        | 1                     | 70                    |
+| condition           | destination_number   | ^conf_enter_number$                                       | on-true               |                        | 2                     | 80                    |
+| action              | digit_action_set_realm | none                                                    |                       |                        | 2                     | 85                    |
+| action              | read                 | 2 11 'tone_stream://%(10000,0,350,440)' target_num 30000 # | |                      | 2                     | 90                    |
+| action              | execute_extension    | conf_bridge_\${target_num} XML conf-xfer@\${domain_name}    |                       |                        | 2                     | 95                    |
+| condition           | destination_number   | ^conf_bridge_$                                            | on-true               |                        | 3                     | 105                   |
+| action              | execute_extension    | conf_add_end XML conf-xfer@\${domain_name}                 |                       |                        | 3                     | 110                   |
+| condition           | destination_number   | ^conf_bridge_\*$                                          | on-true               |                        | 4                     | 120                   |
+| action              | execute_extension    | conf_add_end XML conf-xfer@\${domain_name}                 |                       |                        | 4                     | 125                   |
+| condition           | destination_number   | ^conf_bridge_(\d{2,7})$                                   | on-true               |                        | 5                     | 135                   |
+| action              | digit_action_set_realm | conf-xfer                                               |                       |                        | 5                     | 140                   |
+| action              | bridge               | {conf_xfer_number=\${conf_xfer_number},transfer_after_bridge=conf_enter_to:XML:conf-xfer@\${domain_name}}user/$1@\${domain_name} | | | 5                     | 145                   |
+| action              | execute_extension    | conf_enter_number XML conf-xfer@\${domain_name}            |                       |                        | 5                     | 150                   |
+| condition           | destination_number   | ^conf_bridge_                                             | on-true               |                        | 6                     | 160                   |
+| action              | playback             | voicemail/vm-that_was_an_invalid_ext.wav                  |                       |                        | 6                     | 165                   |
+| action              | execute_extension    | conf_enter_number XML conf-xfer@\${domain_name}            |                       |                        | 6                     | 170                   |
+| condition           | destination_number   | ^conf_enter_to$                                           | on-true               |                        | 7                     | 180                   |
+| action              | unbind_meta_app      |                                                           |                       |                        | 7                     | 185                   |
+| action              | bind_digit_action    | conf,*#,exec:execute_extension,conf_add_begin XML conf-xfer@\${domain_name} | | | 7                     | 190                   |
+| action              | digit_action_set_realm | conf                                                    |                       |                        | 7                     | 195                   |
+| action              | answer               |                                                           |                       |                        | 7                     | 200                   |
+| action              | playback             | tone_stream://L=1;%(500, 0, 640)                         |                       |                        | 7                     | 205                   |
+| action              | conference           | \${conf_xfer_number}@page                                  |                       |                        | 7                     | 210                   |
+| condition           | destination_number   | ^conf_xfer_from_dialplan$                                 |                       |                        | 8                     | 220                   |
+| action              | lua                  | transfer2.lua \${uuid} conf_add_begin::XML::conf-xfer@\${domain_name} conf_enter_to::XML::conf-xfer@\${domain_name} | | | 8                     | 225                   |
+
+### Page Extension
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition           | destination_number   | ^\*8(\d{2,7})$       |                       |                        | 0                     | 5                     |
+| action              | set                  | destinations=$1      |                       |                        | 0                     | 10                    |
+| action              | set                  | pin_number=87462988  |                       |                        | 0                     | 15                    |
+| action              | set                  | mute=true            |                       |                        | 0                     | 20                    |
+| action              | set                  | moderator=false      |                       |                        | 0                     | 25                    |
+| action              | lua                  | page.lua             |                       |                        | 0                     | 30                    |
+
+### Eavesdrop
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition           | destination_number   | ^\*33(\d{2,7})$      |                       |                        | 0                     | 5                     |
+| action              | answer               |                      |                       |                        | 0                     | 10                    |
+| action              | set                  | pin_number=03667751  |                       |                        | 0                     | 15                    |
+| action              | lua                  | eavesdrop.lua $1     |                       |                        | 0                     | 20                    |
+
+### Call Return
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data                              | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|---------------------------------------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition           | destination_number   | ^\*69$                                            |                       |                        | 0                     | 5                     |
+| action              | transfer             | \${hash(select/\${domain_name}-call_return/\${caller_id_number})} |          |                        | 0                     | 10                    |
+
+### Extension Queue
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data             | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition           | destination_number   | ^\*800(.*)$                      |                       |                        | 0                     | 5                     |
+| action              | set                  | fifo_music=$\${hold_music}        |                       |                        | 0                     | 10                    |
+| action              | set                  | extension_queue=queue_$1@\${domain_name} |                |                        | 0                     | 15                    |
+| action              | set                  | fifo_simo=1                      |                       |                        | 0                     | 20                    |
+| action              | set                  | fifo_timeout=30                  |                       |                        | 0                     | 25                    |
+| action              | set                  | fifo_lag=10                      |                       |                        | 0                     | 30                    |
+| action              | set                  | fifo_destroy_after_use=true      |                       |                        | 0                     | 35                    |
+| action              | set                  | fifo_extension_member=$1@\${domain_name} |                |                        | 0                     | 40                    |
+| action              | lua                  | extension_queue.lua              |                       |                        | 0                     | 45                    |
+
+### Wake Up
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition           | destination_number   | ^\*(925)$            |                       |                        | 0                     | 5                     |
+| action              | answer               |                      |                       |                        | 0                     | 10                    |
+| action              | set                  | pin_number=14509639  |                       |                        | 0                     | 15                    |
+| action              | set                  | time_zone_offset=-7  |                       |                        | 0                     | 20                    |
+| action              | lua                  | wakeup.lua           |                       |                        | 0                     | 25                    |
+
+### dx
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^dx$ | | | 0 | 5 |
+| action | answer | | | | 0 | 10 |
+| action | read | 11 11 'tone_stream://%(10000,0,350,440)' digits 5000 # | | | 0 | 15 |
+| action | transfer | -bleg \${digits} | | | 0 | 20 |
+
+### ATT Xfer
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^att_xfer$ | | | 0 | 5 |
+| action | read | 2 6 'tone_stream://%(10000,0,350,440)' digits 30000 # | | | 0 | 10 |
+| action | set | origination_cancel_key=# | | | 0 | 15 |
+| action | att_xfer | user/\${digits}@\${domain_name} | | | 0 | 20 |
+
+### Evesdrop
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^\*33(\d{2,7})$ | | | 0 | 5 |
+| action | answer | | | | 0 | 10 |
+| action | set | pin_number=03667751 | | | 0 | 15 |
+| action | lua | eavesdrop.lua $1 | | | 0 | 20 |
+
+### Please Hold
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | \${user_exists} | ^true$ | | | 0 | 5 |
+| action | set | transfer_ringback=$\${hold_music} | | | 0 | 10 |
+| action | answer | | | | 0 | 15 |
+| action | sleep | 1500 | | | 0 | 20 |
+| action | playback | ivr/ivr-hold_connect_call.wav | | | 0 | 25 |
+
+### Cluecon Weekly
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^\*9(888\|8888\|1616\|3232)$ | | | 0 | 5 |
+| action | export | hold_music=silence | | | 0 | 10 |
+| action | bridge | sofia/\${use_profile}/[email protected] | | | 0 | 15 |
+
+### Bind Digit Action
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | \${sip_authorized} | TRUE | never | | 0 | 5 |
+| action | set | bind_target=both | | TRUE | 0 | 10 |
+| anti-action | set | bind_target=peer | | TRUE | 0 | 15 |
+| condition | | | | | 1 | 25 |
+| action | bind_digit_action | local,*1,exec:execute_extension,dx XML \${context},\${bind_target} | | | 1 | 30 |
+| action | bind_digit_action | local,*2,exec:record_session,$\${recordings_dir}/\${domain_name}/archive/\${strftime(%Y)}/\${strftime(%b)}/\${strftime(%d)}/\${uuid}.\${record_ext},\${bind_target} | | | 1 | 35 |
+| action | bind_digit_action | local,*3,exec:execute_extension,cf XML \${context},\${bind_target} | | | 1 | 40 |
+| action | bind_digit_action | local,*4,exec:execute_extension,att_xfer XML \${context},\${bind_target} | | | 1 | 45 |
+| action | digit_action_set_realm | local | | | 1 | 50 |
+
+### cf
+
+| Dialplan Detail Tag | Dialplan Detail Type | Dialplan Detail Data | Dialplan Detail Break | Dialplan Detail Inline | Dialplan Detail Group | Dialplan Detail Order |
+|---------------------|----------------------|----------------------|-----------------------|------------------------|-----------------------|-----------------------|
+| condition | destination_number | ^cf$ | | | 0 | 5 |
+| action | answer | | | | 0 | 10 |
+| action | transfer | -both 30\${dialed_extension:2} XML \${context} | | | 0 | 15 |

+ 114 - 281
source/features/features.md

@@ -1,285 +1,118 @@
 # Features
 
-## Announcements
-
-Setup a recording for the auto attendant that provides announcement to
-callers. (See [IVR Menus](../applications/ivr.html) )
-
-## Authentication
-
-Extendable with plugin support. Web interface authentication by default
-authenticates against the FusionPBX Database. LDAP is one and has also
-been tested with Microsoft Active Directory an OpenLDAP.
-
-## [Call Barge / Eavesdrop / Intercept](../additional_information/feature_codes.html)
-
-Listen into an active call from another extension.
-
-## [Call Block](../applications/call_block.html)
-
-Block inbound calls by the caller id.
-
-## [Call Broadcast](../applications/call_broadcast.html)
-
-Create a recording and select one or more groups to have the system call
-and play the recording.
-
-## [Call Center](../applications/call_center.html)
-
-Creates a robust call center environment with agent tiers.
-
-## [Call Detail Records](../applications/call_detail_record.html)
-
-Various reporting capabilities to see who called, when, call length,
-export to a csv file, and call detail statistics.
-
-## [Call Flows (Day/Night Mode)]()
-
-Typically used with day night mode. To direct calls between two
-destinations. Can work with BLF on phone to show which direction call
-will be directed to.
-
-## [Call Forward](../applications/call_routing.html)
-
-Forward to another extension or to any phone number.
-
-## Call Monitoring
-
-View which extensions are currently in a call. (see [Active
-Extensions](../status/active_extensions.html))
-
-## Call Pickup
-
-For a particular extension or any extension that is currently ringing.
-
-## [Queues](../applications/queues.html)
-
-Load calls into queues so they can be answered in the order they came
-into the queue.
-
-## [Call Recordings](../applications/call_recordings.html)
-
-Record all or some calls or parts of the call.
-
-## [Call Routing](../applications/call_routing.html)
-
-Send the call different directions or perform actions based on reading
-the caller id info or other call information. (see [Dialplan
-Manager](../dialplan/dialplan_manager.html))
-
-## Call Announced Transfer
-
-Transfer the active call to another internal or external call. Also
-known as a warm transfer.
-
-## [Call Blind Transfer](../additional_information/feature_codes.html)
-
-Transfer a call like the call was going into a call queue or from an
-ivr.
-
-## [Call Transfer](../additional_information/feature_codes.html)
-
-Transfer a call.
-
-## [Call Waiting](../additional_information/feature_codes.html)
-
-A beep while on a call and to toggle between two different calls.
-
-## Caller ID
-
-Support for customization and supporting providers.
-
-## [Conference](../applications/conference.html)
-
-Set up voice and video conference calls, is optionally secure with a PIN
-number, and can transfer current calls to a conference. Interactive
-conference control provides ability to see the list of callers in the
-conference and manage the volume, see who is talking, kick, mute,
-unmute, deaf, undeaf, profiles and controls. (See
-[Conference](../applications/conference.html))
-
-## [Conference Center](../applications/conference_center.html)
-
-Unlimited conference rooms with moderator and paticipants, pin numbers,
-call recording, mute all, caller announce and more\...
-
-## Configuration
-
-While the admin configures the system in the web interface. The data is
-saved to the database and can optionally be deliverd to FreeSWITCH via
-XML files, or on demand from the database.
-
-## [Contacts](../applications/contacts.html)
-
-Manage your contacts. Import contacts from Outlook CSV files. Export
-contacts to your cell phone with QR Codes. It is also possible to add
-additional features like time cards and invoices that can be related to
-the contacts.
-
-## [Command](../advanced/command.html)
-
-Area to execute commands from the gui. Merged with SQL Query tool with a
-clip library.
-
-## [Dialplan Manager](../dialplan/dialplan_manager.html)
-
-The dialplan is used to setup call destinations based on conditions and
-context. You can use the dialplan to send calls to gateways, auto
-attendants, external numbers, to scripts, or any destination.
-
-## [Dial by Name](../features/dial_by_name.html) (\*411)
-
-Search by first name or last name to find extension numbers on the
-system.
-
-## [Direct Inward System Access](../dialplan/dialplan_details.html#disa) (DISA)
-
-Gives ability to call into the system, put in a pin code, and then call
-back outbound.
-
-## [Device Provisioning](../applications/provision.html)
-
-From Advanced \> Default Settings you can enable provisioning for
-devices. Contacts used as Directory for the phones, vendor list and
-functions can be enabled or disabled. Support for memory, expansion
-(side cars), and programmable keys. Configure SIP endpoints for Yealink,
-Polycom, Cisco, Aastra and several other brands.
-
-## [Do Not Disturb (DND)](../applications/call_routing.html)
-
-Direct calls to voicemail by default however there is an option when
-using do not disturb to send the call to an alternative destination.
-
-## [Extensions](../accounts/extensions.html)
-
-Create extensions for phones to register to and an option to receive
-emails on missed calls.
-
-## [Extension Summary](/en/latest/status/extension_summary.html)
-
-Summary of extension activity per domain such as misssed calls, answered
-calls, no answer, inbound duration, outbound duration, number of outboud
-calls, number of inbound calls and Average length of Conversation
-(ALOC). The summarized information can be downloaded as a CSV file.
-
-## [Editor](../advanced/editors.html)
-
-File editor for PHP, XML, and Provisioning files.
-
-## [Fax Server](../applications/fax_server.html)
-
-A virtual fax machine that can send and receive faxes with advanced
-features.
-
-## [Follow Me](../applications/follow_me.html)
-
-Allows calling multiple extensions or external numbers.
-
-## [Gateways](../accounts/gateways.html)
-
-Gateways provide access into other voice networks. These can be voice
-providers or other systems that require SIP registration. [Check out the
-Youtube video](https://youtu.be/YKOTACDYQ3A).
-
-## Hot Desking
-
-A way to login to another phone device and temporarily or permanently
-become another extension. This is sometimes known as \'hoteling\' and
-\'extension mobility\'
-
-## [Inbound and Outbound Call Routing](../dialplans.html)
-
-Routes used to receive or send calls in or out of FusionPBX.
-
-## [IVR Menus](../applications/ivr.html) (Auto Attendant)
-
-Create a structured interactive voice prompt for callers to use. Uses
-FreeSWITCH IVR and delivered from Database on Demand. Cached to memcache
-with IVR Menu Options all editable at once. Also works with Text to
-Speech.
-
-## [Music on Hold](../applications/music_on_hold.html)
-
-Allows multiple categories of music on hold that can be set globally or
-per domain. Can inject additional audio on intervals such as \'Your call
-is very important to us please stand by\'.
-
-## [Multi-Tenant](../advanced/domains.html)
-
-Domain based multi-tenant using subdomains such as red.pbxhosting.tld
-green.pbxhosting.tld blue.pbxhosting.tld
-
-## [Operator Panel](../applications/operator_panel.html)
-
-A virtual panel that agents can drag and drop transfer calls. Adjust
-call state from available, on break, do not disturb and logged out.
-
-## [Paging](../dialplan/dialplan_details.html#page)
-
-Page another extension with or without password
-
-## [Parking](/en/latest/features/parking.html)
-
-Send a call to an unused \"park\" extension. The caller listens to music
-on hold until another extension connects to the call.
-
-## [Phrases](../applications/phrases.html)
-
-Using xml handler and xml from file system you can string together
-multiple voice files.
-
-[Provider Setup](../accounts/providers.html)
-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--
-
-## [Re-branding and Customize](http://fusionpbx.com/support.php)
-
-FusionPBX has unprecedented customizability which can be used to meet
-your needs or the needs of your customers. Customizable themes, menu,
-dialplan, and Hundreds of Default Settings to control the theme.
-
-## [Recordings](../applications/recordings.html)
-
-Create and manage personalized recordings.
-
-## [Ring Groups](../applications/ring_group.html)
-
-Make one extension ring several extensions and an option to receive
-emails on missed calls.
-
-## [Scalable and Redundant](https://fusionpbx.com/app/www/training_detail.php)
-
-Can be configured for multi-master database replication, file
-replication. FusionPBX, Database, and FreeSWITCH can be distributed
-across multiple servers for large enterprise scale systems.
-
-## [Time Conditions](../applications/time_conditions.html)
-
-A extension that can be timed to route calls based on domain select,
-global option, move to other domains, and holiday presets.
-
-## [User and Group Management](../advanced/group_manager.html)
-
-Edit, change or add users of all permission levels.
-
-##[Voicemail](../applications/voicemail.html)
-
-Has ability to copy voicemails for other voicemail boxes when receiving
-a voicemail. Additional features include voicemail to email and
-voicemail IVR. Forward add intro, check box for multi-delete.
-
-## [Voicemail to Email](../getting_started/voicemail_to_email.html)
-
-Have voicemails sent to email.
-
-## [Voicemail Transcription](../applications/voicemail.html#voicemail-transcription)
-
-Converts voicemails to text.
-
-## [WebRTC](../applications_optional/webrtc.html)
-
-Make and receive video calls with a web browser.
+Explore the powerful capabilities of FusionPBX, organized into categories below. Each feature links to detailed documentation where available.
+
+---
+
+## Call Management
+:::{table}
+:widths: auto
+:align: center
+
+| **Feature**                    | **Description**                                                  | **Documentation**                                    |
+|-------------------------------|------------------------------------------------------------------|------------------------------------------------------|
+| Announcements                 | Set up auto attendant<br> recordings for caller announcements        | [IVR Menus](../applications/ivr.md)               |
+| Barge/Eavesdrop/Intercept| Listen into active calls from another extension                  | [Feature Codes](../additional_information/feature_codes.md) |
+| Call Block                    | Block inbound calls by caller ID                                 | [Call Block](../applications/call_block.md)         |
+| Call Broadcast                | Create a recording and select one or more groups<br>to have the system call and play the recording                  | [Call Broadcast](../applications/call_broadcast.md) |
+| Call Forward                  | Forward calls to extensions or external numbers                  | [Call Routing](../applications/call_routing.md)     |
+| Call Monitoring               | View which extensions are currently in a call<br>(see [Active Extensions](../status/active_extensions.md))                                   |             |
+| Call Pickup                   | Answer an extension that is currently ringing                |                                      |
+| Call Recordings               | Record all calls, some calls or parts of the call                                    | [Call Recordings](../applications/call_recordings.md) |
+| Call Routing                  | Send the call to multiple directions or perform<br>actions based on caller id and other information<br> (see [Dialplan Manager](../dialplan/dialplan_manager.md))                 | [Call Routing](../applications/call_routing.md)     |
+| Call Announced Transfer       | Transfer the active call to another internal<br>or external call. Also known as a warm transfer                       |                                                      |
+| Call Blind Transfer           | Transfer calls like a queue or IVR handoff                       | [Feature Codes](../additional_information/feature_codes.md) |
+| Call Transfer                 | General call transfer functionality                              | [Feature Codes](../additional_information/feature_codes.md) |
+| Call Waiting                  | Toggle between calls with a beep notification                    | [Feature Codes](../additional_information/feature_codes.md) |
+| Do Not Disturb (DND)          | Direct calls to voicemail by default<br>or send to an alternate destination              | [Call Routing](../applications/call_routing.md)     |
+| Follow Me                     | Ring multiple extensions or external numbers                     | [Follow Me](../applications/follow_me.md)         |
+| Parking                       | Park calls on hold for pickup by another extension               | [Parking](../features/parking.md)         |
+| Queues                        | Load calls into queues to answer in join order    | [Queues](../applications/queues.md)                 |
+| Ring Groups                   | Ring multiple extensions from one extension<br>with an option to receive emails on missed calls                 | [Ring Groups](../applications/ring_group.md)      |
+:::
+
+---
+
+## Conferencing
+:::{table}
+:widths: auto
+:align: center
+
+| **Feature**                    | **Description**                                                  | **Documentation**                                    |
+|-------------------------------|------------------------------------------------------------------|------------------------------------------------------|
+| Conference                    | Voice/video conference calls, optionally PIN-secured<br>Transfer calls in with interactive conference controls<br>Show callers, manage volume, see talking status,<br>options to kick/mute/unmute/deaf/undeaf members   | [Conference](../applications/conference.md)       |
+| Conference Center             | Unlimited rooms with moderation, PINs, and recording             | [Conference Center](../applications/conference_center.md) |
+:::
+
+---
+
+## Reports & Tools
+:::{table}
+:widths: auto
+:align: center
+
+| **Feature**                    | **Description**                                                  | **Documentation**                                    |
+|-------------------------------|------------------------------------------------------------------|------------------------------------------------------|
+| Call Detail Records           | Detailed call reports, exportable to CSV                         | [Call Detail Records](../applications/call_detail_record.md) |
+| Command                       | Execute commands and SQL queries via GUI                         | [Command](../advanced/command.md)                 |
+| Editor                        | Edit PHP, XML, and provisioning files                            | [Editor](../advanced/editors.md)                  |
+| Extension Summary             | Show activity per domain, such as misssed calls<br>answered calls, no answer, inbound duration,<br>outbound duration, amount of outbound/inbound calls<br>and Average length of Conversation (ALOC)<br>Export Summarized information as an CSV file             | [Extension Summary](../status/extension_summary.md) |
+:::
+
+---
+
+## System Config
+:::{table}
+:widths: auto
+:align: center
+
+| **Feature**                    | **Description**                                                  | **Documentation**                                    |
+|-------------------------------|------------------------------------------------------------------|------------------------------------------------------|
+| Authentication                | Web interface with plugin support (LDAP, AD)                     |                                                      |
+| Configuration                 | While the admin configures the system in the web<br>interface. The data is saved to the database and<br>can optionally be deliverd to FreeSWITCH<br> via XML files, or on demand from the database                 |   [Contacts](../applications/contacts.md)                                                   |
+| Contacts                | Manage your contacts. Import from Outlook CSV<br> Export contacts to your cell phone with QR Codes<br> Additional features such as time cards and<br>invoices that can be related to the contacts                     |                                                      |
+| Device Provisioning           | Provision devices with contacts as phone directories<br>Enable and disable vendors, Set memory,<br>expansion (sidecars), and programmable keys<br>Setup endpoints for Yealink, Polycom, Cisco, etc            | [Device Provision](../applications/provision.md) |
+| Dialplan Manager              | The dialplan is used to setup call destinations based<br>on conditions and context. You can use the<br>dialplan to send calls to gateways, auto attendants,<br>external numbers, to scripts, or any destination                    | [Dialplan Manager](../dialplan/dialplan_manager.md) |
+| Gateways                      | Gateways provide access into other voice networks<br>These can be voice providers or other systems<br>that require SIP registration. [See Video](https://youtu.be/YKOTACDYQ3A)                      | [Gateways](../accounts/gateways.md)               |
+| Multi-Tenant                  | Domain based multi-tenant using subdomains<br>e.g. red.pbxhosting.tld or blue.pbxhosting.tld                  | [Multi-Tenant](../advanced/domains.md)            |
+| Scalable and Redundant        | Configurable for multi-master database replication,<br>file replication, FusionPBX, and FreeSWITCH<br>Multi-server distribution for enterprise scalability                       | [Training](https://fusionpbx.com/training) |
+| Manage Users/Groups     | Manage permissions levels and users                                     | [Group Manager](../advanced/group_manager.md)     |
+:::
+
+---
+
+## Advanced Features
+:::{table}
+:widths: auto
+:align: center
+
+| **Feature**                    | **Description**                                                  | **Documentation**                                    |
+|-------------------------------|------------------------------------------------------------------|------------------------------------------------------|
+| Call Flows (Day/Night Mode)   | To direct calls between two destinations.<br>Direction can be displayed on phones BLF                   |                                                      |
+| Caller ID                     | Customize and support provider caller ID                         |                                                      |
+| Call Center               | Create a robust call center environment                      |   [Call Centers](../applications/call_center.md)                                                     |
+| Dial by Name (*411)           | Search extensions by first or last name                                        | [Dial by Name](../features/dial_by_name.md)       |
+| Direct Inward System Access   | Gives ability to call into the system, put<br>in a pin code, and then call back outbound                     | [Dialplan Details](../dialplan/dialplan_details.md#disa) |
+| Extensions                    | Create extensions for phone registration<br>and options to send an email on<br> missed calls to one or multiple contacts                      | [Extensions](../accounts/extensions.md)           |
+| Fax Server                    | Send/receive faxes with advanced features                        | [Fax Server](../applications/fax_server.md)       |
+| Hot Desking                   | Login to another phone device to become<br>an extension temporarily or permanently<br>Also know as hoteling or extension mobility                       |                                                      |
+| Inbound/Outbound Call Routing | Routes to receive or send calls in or out                                | [Dialplans](../dialplans.md)                      |
+| IVR Menus (Auto Attendant)    | Interactive voice prompts with TTS support                       | [IVR Menus](../applications/ivr.md)               |
+| Music on Hold                 | Allows multiple categories of music on hold<br> that can be set globally or per domain. Can<br>inject additional audio on intervals such as<br>‘Your call is very important to us<br>please stand by’                          | [Music on Hold](../applications/music_on_hold.md) |
+| Operator Panel                | A virtual panel that agents can drag and<br>drop transfer calls. Set agents to available,<br>on break, do not disturb and logged out                          | [Operator Panel](../applications/operator_panel.md) |
+| Paging                        | Page extensions with optional password                           | [Dialplan Details](../dialplan/dialplan_details.md#page) |
+| Phrases                       | Use xml handler and xml from file system<br>you can string together multiple voice files                                   | [Phrases](../applications/phrases.md)             |
+| Provider Setup                | Configure voice providers                                        |          |
+| Re-branding and Customize     | With unprecedented customizability you<br>can meet your needs or the needs of your<br>customers. Customize themes, menus,<br>and hundreds of theme adjustments                         | [Support](http://fusionpbx.com/support.php)         |
+| Recordings                    | Create and manage personalized recordings                                   | [Recordings](../applications/recordings.md)       |
+| Time Conditions               | Time-based call routing with domain,<br>global options and holiday presets                         | [Time Conditions](../applications/time_conditions.md) |
+| Voicemail                     | Advanced voicemail with email and IVR                       | [Voicemail](../applications/voicemail.md)         |
+| Voicemail to Email            | Have voicemails sent to email                                 | [Voicemail to Email](../getting_started/voicemail_to_email.md) |
+| Voicemail Transcription       | Convert voicemails to text                                       | [Voicemail](../applications/voicemail.md#voicemail-transcription) |
+| WebRTC                        | Make/Receive video calls in a web browser                                  | [WebRTC](../applications_optional/webrtc.md)      |
+:::
+
+---
 
 ## Additional Features
-
-This is not a comprehensive set of features. A complete list would be
-many times larger. More will be added as time permits.
+This list is not exhaustive—FusionPBX offers many more capabilities. Stay tuned as we expand this documentation!