How to use Functions on Asterisk Dialplan Context
To Use Function On Asterisk Dialplan Context
INTRODUCTION
Asterisk functions are very similar to functions in many programming languages.Functions are: Sophisticated subroutines that help you manipulate data in a variety of ways. Dialplan Functions tend to be geared towards manipulating channel data and attributes as well as providing general tools for manipulating data in variables and expressions, whether they are channel related or not.
Procedure
Step 1: Check the OS version by using the below command
root@linuxhelp1:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.2 LTS
Release: 22.04
Codename: jammy
Step 2: Check the status of the Asterisk by using the below command
root@linuxhelp1:~# systemctl status asterisk
● asterisk.service - LSB: Asterisk PBX
Loaded: loaded (/etc/init.d/asterisk; generated)
Active: active (running) since Wed 2023-07-26 07:30:54 IST; 28min ago
Docs: man:systemd-sysv-generator(8)
Process: 1428 ExecStart=/etc/init.d/asterisk start (code=exited, status=0/SUCCESS)
Tasks: 72 (limit: 4537)
Memory: 131.9M
CPU: 21.198s
CGroup: /system.slice/asterisk.service
└─1451 /usr/sbin/asterisk
Jul 26 07:30:54 linuxhelp1 systemd[1]: Starting LSB: Asterisk PBX...
Jul 26 07:30:54 linuxhelp1 asterisk[1428]: * Starting Asterisk PBX: asterisk
Jul 26 07:30:54 linuxhelp1 asterisk[1428]: ...done.
Jul 26 07:30:54 linuxhelp1 systemd[1]: Started LSB: Asterisk PBX.
Jul 26 07:31:04 linuxhelp1 asterisk[1451]: radcli: rc_read_config: rc_read_config: can't open />
Jul 26 07:31:04 linuxhelp1 asterisk[1451]: radcli: rc_read_config: rc_read_config: can't open />
Step 3: Move to the Asterisk directory by using the below command
root@linuxhelp1:~# cd /etc/asterisk/
Step 4: Edit the extensions.conf file to modify the dialplan by using the below command
root@linuxhelp1:/etc/asterisk# vim extensions.conf
Step 5: Add the below lines in the extensions.conf file by using the below command
[internal]
exten => _XXX,1,NoOp(Call Started for ${EXTEN})
exten => _XXX,n,Set(TIMEOUT(response)=10)
exten => _XXX,n,Playback(enter-phone-number10)
exten => _XXX,n,WaitExten()
exten => 168,1,Dial(PJSIP/168,10)
exten => 168,2,Hanhup()
Step 6: Login to the Asterisk CLI mode by using the below command
root@linuxhelp1:/etc/asterisk# asterisk -rvvvvvvvvvvvvvvvvvvvvvvvv
Asterisk 20.3.1, Copyright (C) 1999 - 2022, Sangoma Technologies Corporation and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 20.3.1 currently running on linuxhelp1 (pid = 1451)
Step 7: Reload the Dialplan by using the below command
linuxhelp1*CLI> dialplan reload
Dialplan reloaded.
-- Including switch 'DUNDi/e164' in context 'ael-dundi-e164-switch'
-- Including switch 'Lua/' in context 'default'
-- Including switch 'Lua/' in context 'local'
-- Including switch 'Lua/' in context 'public'
-- Including switch 'Lua/' in context 'demo'
-- Time to scan old dialplan and merge leftovers back into the new: 0.001115 sec
-- Time to restore hints and swap in new dialplan: 0.000007 sec
-- Time to delete the old dialplan: 0.000103 sec
-- Total time merge_contexts_delete: 0.001225 sec
-- pbx_config successfully loaded 27 contexts (enable debug for details).
-- Added contact 'sip:167@192.168.6.101:51040;transport=TCP;ob' to AOR '167' with expiration of 300 seconds
== Endpoint 167 is now Reachable
-- Contact 167/sip:167@192.168.6.101:51040;transport=TCP;ob is now Reachable. RTT: 6.149 msec
Output :
-- Executing [111@internal:1] NoOp("PJSIP/168-00000000", "Call Started for 111") in new stack
-- Executing [111@internal:2] Set("PJSIP/168-00000000", "TIMEOUT(response)=10") in new stack
-- Response timeout set to 10.000
-- Executing [111@internal:3] Playback("PJSIP/168-00000000", "enter-phone-number10") in new stack
> 0x7f1580028060 -- Strict RTP learning after remote address set to: 192.168.6.101:4000
> 0x7f1580028060 -- Strict RTP learning after remote address set to: 192.168.6.101:4000
-- <PJSIP/168-00000000> Playing 'enter-phone-number10.ulaw' (language 'en')
> 0x7f1580028060 -- Strict RTP switching to RTP target address 192.168.6.101:4000 as source
-- Executing [111@internal:4] WaitExten("PJSIP/168-00000000", "") in new stack
> 0x7f1580028060 -- Strict RTP learning complete - Locking on source address 192.168.6.101:4000
-- Executing [168@internal:1] Dial("PJSIP/168-00000000", "PJSIP/168,10") in new stack
-- Called PJSIP/168
-- PJSIP/168-00000001 is ringing
== Spawn extension (internal, 168, 1) exited non-zero on 'PJSIP/168-00000000'
Conclusion:
By this how to use Functions on Asterisk Dialplan Context has come to an end.
Comments ( 0 )
No comments available