[Freeswitch-users] Ringback, MOH or file playback while executing dial plan instructions

Bote Man bote_radio at botecomm.com
Fri Jan 15 14:20:13 MSK 2016

The dialplan exists to route calls, it is not a script processor. It is designed to handle common use cases. FreeSWITCH apps that play media to the caller are typically blocking, so they wait for the audio file to play before proceeding and sometimes wait for a response from the caller.


What you want to do falls outside the design of the XML dialplan, so a script would likely be the best approach since this gives you much more control. Stanislav’s suggestion of a script that commands FS via ESL sounds like a good approach to me since you are free to write in the language of your choice.


Your design sounds familiar so it might be worth searching these mailing list archives for a similar solution.


Also, there might be some wisdom captured on this Confluence page



Hope this helps.






FreeSWITCH Docs Janitor

 <http://freeswitch.org/confluence> http://freeswitch.org/confluence





From: Emrah
Sent: Friday, 15 January, 2016 06:00
Subject: Re: [Freeswitch-users] Ringback, MOH or file playback while executing dial plan instructions


Just to have some ringback? Wow that sounds like it would be a little over the top. In that case I could just bridge one call onto another extension with the loopback channel. That would effectively play a ringback.

But this isn’t just a question of ringback. 

the bottom line is that there is no application to play something while allowing dial plan processing and I find that to be a pity.

Not everything should resort in coding in external apps. And not something that is as trivial as this.

there are apps like “curl” or “httpapi” that can be executed from the dialplan and they exist for a reason. It would be nice to allow something to be played back while we carry on executing a few dial plan operations.



On Jan 15, 2016, at 9:11 AM, Stanislav Sinyagin <ssinyagin at gmail.com> wrote:


I would suggest using two FreeSWITCH boxes:  the SBC gets the call, bridges it to the core server, and plays its own ringback while the core server processes the call. You can also merge them together in one box, just by bridging to "sofia/external/new_extension at SERVERIP:5080"


On Fri, Jan 15, 2016 at 8:10 AM, Emrah <lists at kavun.ch> wrote:


It’s not very sexy, but how about parking the call?

I can play whatever I want while the call is parked and take my time in doing whatever I need to do. The question then becomes how to keep a trail of the UUID, transfer it to the right extension and retain codec configs as well as set variables?


What are your thoughts?


On Jan 15, 2016, at 7:53 AM, Emrah <lists at kavun.ch> wrote:


Thank you to all for your valuable inputs.

See? At first it looks super trivial! And I think it should be. 

Begin troll mode

With Asterisk, using MusicOnHold or Ringing does exactly that.

End troll mode


I will not give up. I don’t want to result to external programming for something like this, although using a little lua script sounds appealing.


If I get it working like I want I’ll post something here.





On Jan 15, 2016, at 2:54 AM, Stanislav Sinyagin <ssinyagin at gmail.com> wrote:


Ringback is played back only when FreeSWITCH starts an outbound channel - during the bridge command, for example. What Enrah wants, is to play the early media while the dialplan execution goes on, but before the call is bridged. 

I tried the following sequence, but it didn't work either: the next command after sleep() was never executed, because the originator timed out after 20 seconds, and the audio file was played during these 20 seconds:

  <extension name="test1">
    <condition field="destination_number" expression="^test1$">
      <action application="pre_answer"/>
      <action application="ring_ready"/>
      <action application="set" data="api_result=${bgapi(uuid_broadcast ${uuid} /opt/sound/ITU-T_P_50_BRITISH_ENGLISH.wav)}"/>
      <action application="sleep" data="10000"/>
      <action application="set" data="api_result=${uuid_break(${uuid} all)}"/>
      <action application="answer"/>
      <action application="playback" data="ivr/ivr-welcome.wav"/>
      <action application="sleep" data="1000"/>
      <action application="hangup"/>

so, it looks like it needs an external application talking over ESL. 


On Thu, Jan 14, 2016 at 4:26 PM, Michael Jerris <mike at jerris.com> wrote:

use whatever sound file you want as your ringback?

> On Jan 14, 2016, at 6:42 AM, Emrah <lists at kavun.ch> wrote:
> Hi all,
> Is there no way to force a 183 in a session and play a ringback or MOH while executing other dial plan instructions?
> Basically, I’ve gone around trying instant_rinback=true, ring_ready, gentones, etc… No luck.
> If I bridge my channel to  loopback/wait, sure enough it works.
> What I need to do is play a ringback or some MOH while I carry on executing my dial plan instructions. The 183 is a nice to have but I don’t mind if the channel is answered.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20160115/4ef844fc/attachment.html 

Join us at ClueCon 2016 Aug 8-12, 2016
More information about the FreeSWITCH-users mailing list