Misc. Dialplan Tools strftime

From FreeSWITCH Wiki
Jump to: navigation, search

Contents

Description

Displays the current time in various formats. For time zone enabled time zone function, see strftime_tz

For a list of what args are available, see this table (better link? list here?)

Usage

strftime [format_string]

Returns the local system time. If format_string is not specified, it defaults to "%Y-%m-%d %T", eg. 2010-04-28 17:47:29

Examples

<action application="strftime" data="%Y-%m-%d"/>
<action function="speak-text" data="You have $1 minutes, $2 seconds remaining ${strftime(%Y-%m-%d)}"/>

Routing a call differently based on time of day:

  <extension name="Time_Routing">
    <condition field="${strftime(%H%M)}" expression="^((09|1[0-7])[0-5][0-9]|1800)$">
      <action application="bridge" data="sofia/$${domain}/1000"/>
      <anti-action application="voicemail" data="$${profile} $${domain} 1000"/>
    </condition>
  </extension>

Example of doing things based on time of day:

  <extension name="tod_example" break="never">
      <!-- First, match M-F; if not M-F then we're definitely closed -->
      <condition field="${strftime(%w)}" expression="^([1-5])$">
        <anti-action application="set" data="business=Sat"/>
        <anti-action application="transfer" data="IVR_Sat"/>
      </condition>

   <!-- Next, check time of day. First regex is to match 7:30am to 11:59am -->
      <condition field="${strftime(%H%M)}" expression="^((07[3-5][0-9])|((08|09|1[0-1])[0-5][0-9]))$">
          <action application="set" data="business=morning"/>
           <action application="transfer" data="IVR_Open"/>
	   <anti-action application="set" data="business=lunch"/>
           <anti-action application="transfer" data="IVR_Lunch"/>
      </condition>
 
    </extension>

  <extension name="Play Lunch IVR" break="never">
       <condition field="destination_number" expression="^IVR_Lunch$"/>
       <!-- This regex matches lunchtime 12:00 to 12:59 -->
      <condition field="${strftime(%H%M)}" expression="^(12[0-5][0-9])$">
        <action application="set" data="business=lunch"/>
        <action application="transfer" data="IVR_Closed"/>
	<anti-action application="set" data="business=afternoon"/>
        <anti-action application="transfer" data="IVR_Afternoon"/>
      </condition>
	  
   </extension>

  <extension name="Play Afternoon IVR" break="never">
      <condition field="destination_number" expression="^IVR_Afternoon$"/>
      <!-- This regex matches 1pm to 5:30pm -->
      <condition field="${strftime(%H%M)}" expression="^((1[3-6])[0-5][0-9]|17[0-2][0-9])$">
        <action application="set" data="business=afternoon"/>
        <action application="transfer" data="IVR_Open"/>
	<action application="set" data="business=closed"/>
        <action application="transfer" data="IVR_Closed"/>
      </condition>
 
    </extension>

   <extension name="Play Sat IVR" break="never">
     <condition field="destination_number" expression="^IVR_Sat$"/>
      <!-- First, match Sat; if not Sat then we're definitely closed -->
      <condition field="${strftime(%w)}" expression="^([6])$">
        <anti-action application="set" data="business=closed"/>
        <anti-action application="transfer" data="IVR_Closed"/>
      </condition>
	  
  <!-- Next, check time of day. First regex is to match 8:00am to 11:59am -->
      <condition field="${strftime(%H%M)}" expression="^(((08|09|1[0-1])[0-5][0-9]))$">
        <action application="set" data="business=morning"/>
        <action application="transfer" data="IVR_Open"/>
	<action application="set" data="business=closed"/>
        <action application="transfer" data="IVR_Closed"/>
      </condition>
	  
    </extension>

    <extension name="Play open IVR">
      <condition field="destination_number" expression="^IVR_Open$">
        <action application="lua" data="ivr-business-open.lua"/> <!-- your "open" Lua script here -->
      </condition>
    </extension>
 
    <extension name="Play closed IVR">
      <condition field="destination_number" expression="^IVR_Closed$">
        <action application="lua" data="ivr-business-closed.lua"/> <!-- your "closed" Lua script here -->
      </condition>
    </extension>

See Also