On Wed, Mar 15, 2023 at 11:21 AM mayamatakeshi <[email protected]>
wrote:

>
>
> On Wed, Mar 15, 2023 at 2:56 AM <[email protected]> wrote:
>
>> I am looking to configure Kamailio and RTPEngine to play a wav file for
>> any new calls during a scheduled asterisk server maintenance. I have set up
>> the following within route{} to send the call to a early_media route based
>> on a variable that I can set on the server using kamcmd.
>>
>> route {
>> ...
>>        if ($sht(config=>maint)=="1") {
>>             if (is_method("INVITE") && !has_totag()) {
>>                 xlog ("L_INFO","Ongoing maintenance. Call-ID:$ci |
>> Method: $rm");
>>                 route(early_media);
>>             }
>>         }
>> ...
>> }
>>
>> route[early_media] {
>>     xlog("Maintenance: handling early_media\n");
>>     rtpengine_manage("direction=external direction=external");
>>     $var(body) = $(rb{re.subst,/(IP4.).*/\1##server IP redacted##/g});
>>     set_reply_body($var(body), "application/sdp");
>>     t_send_reply("183", "Session Progress");
>>     sleep(2);
>>     unblock_dtmf("all");
>>     play_media("file=/etc/kamailio/media/maintenance.wav");
>>     sleep(21);
>>     rtpengine_delete();
>>     t_reply("480","Temporarily Unavailable");
>> }
>>
>> This mostly works as I hear the recorded message in place of the ringing
>> tone when a call is processed by kamailio and then a busy signal is heard
>> as part of the 480 reply at the end. The sleep's are in place to match the
>> duration of the recorded message as otherwise the 480 is sent immediately
>> following the start of the play_media. Feel free to let me know if there is
>> a better solution to wait the duration of the media file and then proceed
>> with processing instead of using sleep().
>>
>
> I don't have a solution, but just keep in mind that sleep will block the
> process for the duration of the timeout.
> So the process will not do anything else during the sleep.
>

I think instead of sleep you could try async_sleep:
https://www.kamailio.org/docs/modules/devel/modules/async.html#async.f.async_sleep


> Also, I think the sleep is not interruptible. So even if the caller
> CANCELs, the INVITE, the process will keep waiting for the timeout.
>
>
__________________________________________________________
Kamailio - Users Mailing List - Non Commercial Discussions
To unsubscribe send an email to [email protected]
Important: keep the mailing list in the recipients, do not reply only to the 
sender!
Edit mailing list options or unsubscribe:

Reply via email to