Hello I have the following scenario: [mynicecontext] exten => 2000,1,Dial(SIP/deviceA&SIP/deviceB&SIP/deviceC) As expected, by dialing 2000, all three devices will ring. And that's fine. However, there are situations where I only want "deviceA" and "deviceB" to ring. I would like to have an extension to dial in order to modify the dialplan. Here is what I did... In extensions.conf: ------ snip ----- [mynicecontext] #include "ringdevice.conf exten => 2000,1,GoTo(ringdevice,ring,1) exten => 4000,1,System(/bin/cat /etc/asterisk/twodevices.txt> /etc/asterisk/ringdevice.conf)exten => 4000,2,Wait(3) exten => 4000,3,System(/usr/sbin/asterisk -rx "dialplan reload") exten => 4000,4,Playback(service&de-activated) exten => 4001,1,System(/bin/cat /etc/asterisk/alldevices.txt> /etc/asterisk/ringdevice.conf)exten => 4001,2,Wait(3) exten => 4001,3,System(/usr/sbin/asterisk -rx "dialplan reload") exten => 4001,4,Playback(service&activated) ------ end snip ----- twodevices.txt contains exten => ring,1,Dial(SIP/deviceA&SIPdeviceB) alldevices.txt contains exten => ring,1,Dial(SIP/deviceA&SIPdeviceB&SIP/deviceC) By dialing 4000 or 4001, the dialplan is modified and reloaded accordingly. Is there a better solution? Frank
Marcelo Terres
2017-May-08 14:44 UTC
[asterisk-users] Dial an extension to modify dialplan
https://wiki.asterisk.org/wiki/display/AST/Asterisk+14+ManagerAction_DialplanExtensionAdd Is it enough? Regards, Marcelo H. Terres <mhterres at gmail.com> IM: mhterres at jabber.mundoopensource.com.br https://www.mundoopensource.com.br https://twitter.com/mhterres https://linkedin.com/in/marceloterres On 8 May 2017 at 15:35, Frank Vanoni <mailinglist at linuxista.com> wrote:> Hello > > I have the following scenario: > > [mynicecontext] > exten => 2000,1,Dial(SIP/deviceA&SIP/deviceB&SIP/deviceC) > > As expected, by dialing 2000, all three devices will ring. And that's > fine. > However, there are situations where I only want "deviceA" and "deviceB" > to ring. I would like to have an extension to dial in order to modify > the dialplan. > > Here is what I did... > > In extensions.conf: > > ------ snip ----- > [mynicecontext] > #include "ringdevice.conf > > exten => 2000,1,GoTo(ringdevice,ring,1) > > exten => 4000,1,System(/bin/cat /etc/asterisk/twodevices.txt >> /etc/asterisk/ringdevice.conf) > exten => 4000,2,Wait(3) > exten => 4000,3,System(/usr/sbin/asterisk -rx "dialplan reload") > exten => 4000,4,Playback(service&de-activated) > > exten => 4001,1,System(/bin/cat /etc/asterisk/alldevices.txt >> /etc/asterisk/ringdevice.conf) > exten => 4001,2,Wait(3) > exten => 4001,3,System(/usr/sbin/asterisk -rx "dialplan reload") > exten => 4001,4,Playback(service&activated) > ------ end snip ----- > > twodevices.txt contains > exten => ring,1,Dial(SIP/deviceA&SIPdeviceB) > > alldevices.txt contains > exten => ring,1,Dial(SIP/deviceA&SIPdeviceB&SIP/deviceC) > > By dialing 4000 or 4001, the dialplan is modified and reloaded > accordingly. > > Is there a better solution? > > Frank > > > -- > _____________________________________________________________________ > -- Bandwidth and Colocation Provided by http://www.api-digital.com -- > > Check out the new Asterisk community forum at: https://community.asterisk.org/ > > New to Asterisk? Start here: > https://wiki.asterisk.org/wiki/display/AST/Getting+Started > > asterisk-users mailing list > To UNSUBSCRIBE or update options visit: > http://lists.digium.com/mailman/listinfo/asterisk-users
J Montoya or A J Stiles
2017-May-08 15:05 UTC
[asterisk-users] Dial an extension to modify dialplan
On Monday 08 May 2017, Frank Vanoni wrote:> By dialing 4000 or 4001, the dialplan is modified and reloaded > accordingly. > > Is there a better solution?That's an ..... interesting ..... way of doing things! We would be thinking in terms of using a GLOBAL variable, or an ASTDB entry, to indicate whether or not the extra extension should be dialled. This method ought to be extendable to serve multiple extensions, without the need to assemble the file from tiny snippets . -- JM or AJS Note: Originating address only accepts e-mail from list! If replying off- list, change address to asterisk1list at earthshod dot co dot uk .
You could use the DIALGROUP function for this and not need to shell out. https://wiki.asterisk.org/wiki/display/AST/Asterisk+14+Function_DIALGROUP On Mon, May 8, 2017 at 7:35 AM, Frank Vanoni <mailinglist at linuxista.com> wrote:> Hello > > I have the following scenario: > > [mynicecontext] > exten => 2000,1,Dial(SIP/deviceA&SIP/deviceB&SIP/deviceC) > > As expected, by dialing 2000, all three devices will ring. And that's > fine. > However, there are situations where I only want "deviceA" and "deviceB" > to ring. I would like to have an extension to dial in order to modify > the dialplan. > > Here is what I did... > > In extensions.conf: > > ------ snip ----- > [mynicecontext] > #include "ringdevice.conf > > exten => 2000,1,GoTo(ringdevice,ring,1) > > exten => 4000,1,System(/bin/cat /etc/asterisk/twodevices.txt > > /etc/asterisk/ringdevice.conf) > exten => 4000,2,Wait(3) > exten => 4000,3,System(/usr/sbin/asterisk -rx "dialplan reload") > exten => 4000,4,Playback(service&de-activated) > > exten => 4001,1,System(/bin/cat /etc/asterisk/alldevices.txt > > /etc/asterisk/ringdevice.conf) > exten => 4001,2,Wait(3) > exten => 4001,3,System(/usr/sbin/asterisk -rx "dialplan reload") > exten => 4001,4,Playback(service&activated) > ------ end snip ----- > > twodevices.txt contains > exten => ring,1,Dial(SIP/deviceA&SIPdeviceB) > > alldevices.txt contains > exten => ring,1,Dial(SIP/deviceA&SIPdeviceB&SIP/deviceC) > > By dialing 4000 or 4001, the dialplan is modified and reloaded > accordingly. > > Is there a better solution? > > Frank > > > -- > _____________________________________________________________________ > -- Bandwidth and Colocation Provided by http://www.api-digital.com -- > > Check out the new Asterisk community forum at: https://community.asterisk. > org/ > > New to Asterisk? Start here: > https://wiki.asterisk.org/wiki/display/AST/Getting+Started > > asterisk-users mailing list > To UNSUBSCRIBE or update options visit: > http://lists.digium.com/mailman/listinfo/asterisk-users >-- A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects. ---Heinlein -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20170508/48fafd6f/attachment.html>
On Monday 08 May 2017 at 15:44:47, Marcelo Terres wrote:> https://wiki.asterisk.org/wiki/display/AST/Asterisk+14+ManagerAction_Dialpl > anExtensionAdd > > Is it enough?Is there a similar call to delete an extension, or to modify an existing one? On the basis that the OP already has extension 2000 defined, he would need to delete this and replace it with a new definition, or alter the current definition, to get the required results. Simply being able to add a new extension to an existing dialplan isn't quite enough. Antony.> On 8 May 2017 at 15:35, Frank Vanoni <mailinglist at linuxista.com> wrote: > > Hello > > > > I have the following scenario: > > > > [mynicecontext] > > exten => 2000,1,Dial(SIP/deviceA&SIP/deviceB&SIP/deviceC) > > > > As expected, by dialing 2000, all three devices will ring. And that's > > fine. > > However, there are situations where I only want "deviceA" and "deviceB" > > to ring. I would like to have an extension to dial in order to modify > > the dialplan. > > > > Here is what I did... > > > > In extensions.conf: > > > > ------ snip ----- > > [mynicecontext] > > #include "ringdevice.conf > > > > exten => 2000,1,GoTo(ringdevice,ring,1) > > > > exten => 4000,1,System(/bin/cat /etc/asterisk/twodevices.txt > > > >> /etc/asterisk/ringdevice.conf) > > > > exten => 4000,2,Wait(3) > > exten => 4000,3,System(/usr/sbin/asterisk -rx "dialplan reload") > > exten => 4000,4,Playback(service&de-activated) > > > > exten => 4001,1,System(/bin/cat /etc/asterisk/alldevices.txt > > > >> /etc/asterisk/ringdevice.conf) > > > > exten => 4001,2,Wait(3) > > exten => 4001,3,System(/usr/sbin/asterisk -rx "dialplan reload") > > exten => 4001,4,Playback(service&activated) > > ------ end snip ----- > > > > twodevices.txt contains > > exten => ring,1,Dial(SIP/deviceA&SIPdeviceB) > > > > alldevices.txt contains > > exten => ring,1,Dial(SIP/deviceA&SIPdeviceB&SIP/deviceC) > > > > By dialing 4000 or 4001, the dialplan is modified and reloaded > > accordingly. > > > > Is there a better solution? > > > > Frank-- 3 logicians walk into a bar. The bartender asks "Do you all want a drink?" The first logician says "I don't know." The second logician says "I don't know." The third logician says "Yes!" Please reply to the list; please *don't* CC me.
> Hello> I have the following scenario:> [mynicecontext] > exten => 2000,1,Dial(SIP/deviceA&SIP/deviceB&SIP/deviceC)> As expected, by dialing 2000, all three devices will ring. And that's fine. > However, there are situations where I only want "deviceA" and "deviceB"to ring. I would like to have an extension to dial in order to modify the dialplan.> Is there a better solution?Take a look at https://wiki.asterisk.org/wiki/display/AST/Device+State Specifically, Custom Device states. You write both versions of the dialplan, and use an IF on the custom device state to determine which one runs. You can then dial 4000 to turn the Custom Device from Busy to Available to set which section of the dialplan to run. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20170508/d17b6012/attachment.html>
I would use a Queue with RingAll strategy. Then, I would Pause/Unpause Agents. A "Paused" agent would not receive calls from the Queue, but can still receive direct calls. You can set an extension to Pause the member and another to Unpause it, using the applications PauseQueueMember and UnPauseQueueMember. I hope it helps! -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20170509/5de7b2a5/attachment.html>
Dear Digium List First of all, I thank all of you for all the replies and the interesting suggestions. I thank you very much. I can only learn from people like you. :-) I will remember all the different solutions for a future use in other scenarios. On Mon, 2017-05-08 at 16:35 +0200, Frank Vanoni wrote:> Is there a better solution?At the end, I cleaned up my dial plan by removing the previous mess and I'm using now ASTDB, as suggested, in the following way: exten => 4000,1,Set(DB(alldevices/status)=OFF) exten => 4000,2,Playback(service&de-activated) exten => 4001,1,Set(DB(alldevices/status)=ON) exten => 4001,2,Playback(service&activated) exten => 2000,1,GotoIf($[${DB(alldevices/status)}=ON]?2001,1:2002,1) exten => 2001,1,Dial(SIP/Dial(SIP/deviceA&SIP/deviceB&SIP/deviceC) exten => 2002,1,Dial(SIP/Dial(SIP/deviceA&SIP/deviceB)
On Wed, 2017-05-10 at 12:56 +0200, Frank Vanoni wrote:> exten => 2001,1,Dial(SIP/Dial(SIP/deviceA&SIP/deviceB&SIP/deviceC) > > exten => 2002,1,Dial(SIP/Dial(SIP/deviceA&SIP/deviceB)Whoops... sorry for the typo (in the hurry of copy & paste)! exten => 2001,1,Dial(SIP/deviceA&SIP/deviceB&SIP/deviceC) exten => 2002,1,Dial(SIP/deviceA&SIP/deviceB)