AEL examples

context outbound {
    _X. => &outbound(${EXTEN},"SIP","sip_trunk");

}


macro outbound ( ext , dev , trk ) {
      Noop(ael_test);
      Set(CDR(did)=${ext});
      Gosub(sub-record-check,s,1(out,${ext},always));
      Dial(${dev}/${trk}/${ext},15,);
      switch(${DIALSTATUS}){
      case BUSY:
      Busy;
      break;
      case CHANUNAVAIL:
      Noop(CHANUNAVAIL);
      Dial(${dev}/${trk}2/${ext},15,);
      break;
      case NOANSWER:
      Noop(NOANSWER);
      break;
      case CANCEL:
      Noop(CANCEL);
      break;
      case CONGESTION:
      Noop(CONGESTION);
      break;
      case ANSWER:
      Noop(ANSWER);
      break;
      default:
      Noop(default);
      break;
      }
      catch h {
      Noop(Hangup in macro);
      Noop(${DIALSTATUS});
      Hangup;
      };
      return;
 }
context outbound {
_X.    => Gosub(sub-trunk,${EXTEN},1(SIP,trunk,${EXTEN},dontcare,branch));
}
context sub-trunk {
_X. => {
	  Set(CDR(userfield)=${ARG5});
	  Gosub(sub-record-check,s,1(out,${EXTEN},${ARG4}));
      Dial(${ARG1}/${ARG2}/${ARG3},60,);
	  if ("${DIALSTATUS}" = "BUSY")
	  {
	  Noop(BUSY);
	  }
	  if ("${DIALSTATUS}" = "NOANSWER")
	  {
	  Noop(NOANSWER);
	  }
	  if ("${DIALSTATUS}" = "CHANUNAVAIL")
	  {
	  Noop(CHANUNAVAIL);
	  Dial(${ARG1}/${ARG2}2/${ARG3},60,);
	  }
	  if ("${DIALSTATUS}" = "CONGESTION")
	  {
	  Noop(CONGESTION);
	  Dial(${ARG1}/${ARG2}2/${ARG3},60,);
	  }
       }
 }

IfTime

context time {

_X. => {
ifTime (10:00-21:00|*|*|*) {
      NoOp(***Dial***);
      Dial(SIP/${EXTEN},,);
      }

ifTime (21:00-10:00|*|*|*) {
      NoOp(***hangup***);
      hangup;
      }
   } 
}

<spoiler>

    -- Executing [1001@from-test:1] GotoIfTime("SIP/1000-0000014f", "10:00-21:00,*,*,*?3") in new stack
    -- Executing [1001@from-test:2] Goto("SIP/1000-0000014f", "5") in new stack
    -- Goto (from-test,1001,5)
    -- Executing [1001@from-test:5] NoOp("SIP/1000-0000014f", "Finish iftime_test123_32") in new stack
    -- Executing [1001@from-test:6] GotoIfTime("SIP/1000-0000014f", "21:00-10:00,*,*,*?8") in new stack
    -- Goto (from-test,1001,8)
    -- Executing [1001@from-test:8] NoOp("SIP/1000-0000014f", "***hangup***") in new stack
    -- Executing [1001@from-test:9] Hangup("SIP/1000-0000014f", "") in new stack
  == Spawn extension (from-test, 1001, 9) exited non-zero on 'SIP/1000-0000014f'

</spoiler> ~~socialite~~

  • asterisk/dialplan/ael_examples.txt
  • Последние изменения: 2016/12/17