Advertisement
Guest User

Untitled

a guest
Dec 16th, 2022
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.23 KB | Source Code | 0 0
  1. [sub-record-check]
  2. include => sub-record-check-custom
  3. exten => s,1,GotoIf($[${LEN(${FROMEXTEN})}]?initialized)
  4. exten => s,n,Set(__REC_STATUS=INITIALIZED)
  5. exten => s,n,Set(NOW=${EPOCH})
  6. exten => s,n,Set(__DAY=${STRFTIME(${NOW},,%d)})
  7. exten => s,n,Set(__MONTH=${STRFTIME(${NOW},,%m)})
  8. exten => s,n,Set(__YEAR=${STRFTIME(${NOW},,%Y)})
  9. exten => s,n,Set(__TIMESTR=${YEAR}${MONTH}${DAY}-${STRFTIME(${NOW},,%H%M%S)})
  10. exten => s,n,Set(__FROMEXTEN=${IF($[${LEN(${AMPUSER})}]?${AMPUSER}:${IF($[${LEN(${REALCALLERIDNUM})}]?${REALCALLERIDNUM}:unknown)})})
  11. exten => s,n,Set(__MON_FMT=${IF($["${MIXMON_FORMAT}"="wav49"]?WAV:${MIXMON_FORMAT})})
  12. exten => s,n(initialized),Noop(Recordings initialized)
  13. exten => s,n,ExecIf($[!${LEN(${ARG3})}]?Set(ARG3=dontcare))
  14. exten => s,n,Set(REC_POLICY_MODE_SAVE=${REC_POLICY_MODE})
  15. exten => s,n,ExecIf($["${BLINDTRANSFER}${ATTENDEDTRANSFER}" != ""]?Set(REC_STATUS=NO))
  16. exten => s,n(next),GotoIf($[${LEN(${ARG1})}]?checkaction)
  17. exten => s,n(recorderror),Playback(something-terribly-wrong,error)
  18. exten => s,n,Hangup
  19. exten => s,n(checkaction),GotoIf($[${DIALPLAN_EXISTS(sub-record-check,${ARG1})}]?sub-record-check,${ARG1},1)
  20. exten => s,n,Noop(Generic ${ARG1} Recording Check - ${FROMEXTEN} ${ARG2})
  21. exten => s,n,Gosub(recordcheck,1(${ARG3},${ARG1},${ARG2}))
  22. exten => s,n,Return()
  23.  
  24. exten => recordcheck,1,Noop(Starting recording check against ${ARG1})
  25. exten => recordcheck,n,Goto(${ARG1})
  26. exten => recordcheck,n(dontcare),Return()
  27. exten => recordcheck,n(always),Noop(Detected legacy "always" entry. Mapping to "force")
  28. exten => recordcheck,n(force),Set(__REC_POLICY_MODE=FORCE)
  29. exten => recordcheck,n,GotoIf($["${REC_STATUS}"!="RECORDING"]?startrec)
  30. exten => recordcheck,n,Return()
  31. exten => recordcheck,n(delayed),Noop(Detected legacy "delayed" entry. Mapping to "yes")
  32. exten => recordcheck,n(yes),ExecIf($["${REC_POLICY_MODE_SAVE}" = "never" | "${REC_POLICY_MODE_SAVE}" = "NEVER" | "${REC_POLICY_MODE}" = "NEVER" | "${REC_POLICY_MODE}" = "NO" | "${REC_STATUS}" = "RECORDING"]?Return())
  33. exten => recordcheck,n,Set(__REC_POLICY_MODE=YES)
  34. exten => recordcheck,n,Goto(startrec)
  35. exten => recordcheck,n(no),Set(__REC_POLICY_MODE=NO)
  36. exten => recordcheck,n,Return()
  37. exten => recordcheck,n(never),Set(__REC_POLICY_MODE=NEVER)
  38. exten => recordcheck,n,Goto(stoprec)
  39. exten => recordcheck,n(startrec),Noop(Starting recording: ${ARG2}, ${ARG3})
  40. exten => recordcheck,n,Set(__CALLFILENAME=${ARG2}-${ARG3}-${FROMEXTEN}-${TIMESTR}-${UNIQUEID})
  41. exten => recordcheck,n,MixMonitor(${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT},a${MONITOR_REC_OPTION}i(${LOCAL_MIXMON_ID})${MIXMON_BEEP},${MIXMON_POST})
  42. exten => recordcheck,n,Set(__MIXMON_ID=${LOCAL_MIXMON_ID})
  43. exten => recordcheck,n,Set(__RECORD_ID=${CHANNEL(name)})
  44. exten => recordcheck,n,Set(__REC_STATUS=RECORDING)
  45. exten => recordcheck,n,Set(CDR(recordingfile)=${CALLFILENAME}.${MON_FMT})
  46. exten => recordcheck,n,Return()
  47. exten => recordcheck,n(stoprec),Noop(Stopping recording: ${ARG2}, ${ARG3})
  48. exten => recordcheck,n,Set(__REC_STATUS=STOPPED)
  49. exten => recordcheck,n,System(${AMPBIN}/stoprecording.php "${CHANNEL(name)}")
  50. exten => recordcheck,n,Return()
  51.  
  52. exten => out,1,Noop(Outbound Recording Check from ${FROMEXTEN} to ${ARG2})
  53. exten => out,n,Set(RECMODE=${DB(AMPUSER/${FROMEXTEN}/recording/out/external)})
  54. exten => out,n,ExecIf($[!${LEN(${RECMODE})} | "${RECMODE}" = "dontcare"]?Goto(routewins))
  55. exten => out,n,ExecIf($["${ARG3}" = "never" | "${ARG3}" = "force"]?Goto(routewins))
  56. exten => out,n(extenwins),Gosub(recordcheck,1(${RECMODE},out,${ARG2}))
  57. exten => out,n,Return()
  58. exten => out,n(routewins),Gosub(recordcheck,1(${ARG3},out,${ARG2}))
  59. exten => out,n,Return()
  60.  
  61. exten => in,1,Noop(Inbound Recording Check to ${ARG2})
  62. exten => in,n,Set(FROMEXTEN=unknown)
  63. exten => in,n,ExecIf($[${LEN(${CALLERID(num)})}]?Set(FROMEXTEN=${CALLERID(num)}))
  64. exten => in,n,Gosub(recordcheck,1(${ARG3},in,${ARG2}))
  65. exten => in,n,Return()
  66.  
  67. exten => exten,1,Noop(Exten Recording Check between ${FROMEXTEN} and ${ARG2})
  68. exten => exten,n,Set(CALLTYPE=${IF($[${LEN(${FROM_DID})}]?external:internal)})
  69. exten => exten,n,ExecIf(${LEN(${CALLTYPE_OVERRIDE})}?Set(CALLTYPE=${CALLTYPE_OVERRIDE}))
  70. exten => exten,n,Set(CALLEE=${DB(AMPUSER/${ARG2}/recording/in/${CALLTYPE})})
  71. exten => exten,n,ExecIf($[!${LEN(${CALLEE})}]?Set(CALLEE=dontcare))
  72. exten => exten,n,GotoIf($["${CALLTYPE}"="external"]?callee)
  73. exten => exten,n,GotoIf($["${CALLEE}"="dontcare"]?caller)
  74. exten => exten,n,ExecIf($[${LEN(${DB(AMPUSER/${FROMEXTEN}/recording/priority)})}]?Set(CALLER_PRI=${DB(AMPUSER/${FROMEXTEN}/recording/priority)}):Set(CALLER_PRI=0))
  75. exten => exten,n,ExecIf($[${LEN(${DB(AMPUSER/${ARG2}/recording/priority)})}]?Set(CALLEE_PRI=${DB(AMPUSER/${ARG2}/recording/priority)}):Set(CALLEE_PRI=0))
  76. exten => exten,n,GotoIf($["${CALLER_PRI}"="${CALLEE_PRI}"]?${REC_POLICY}:${IF($[${CALLER_PRI}>${CALLEE_PRI}]?caller:callee)})
  77. exten => exten,n(callee),Gosub(recordcheck,1(${CALLEE},${CALLTYPE},${ARG2}))
  78. exten => exten,n,Return()
  79. exten => exten,n(caller),Set(RECMODE=${DB(AMPUSER/${FROMEXTEN}/recording/out/internal)})
  80. exten => exten,n,Set(CALLERRECMODE=${DB(AMPUSER/${FROMEXTEN}/recording/out/internal)})
  81. exten => exten,n,Set(CALEERECMODE=${DB(AMPUSER/${ARG2}/recording/in/internal)})
  82. exten => exten,n,GotoIf($[!${LEN(${CALEERECMODE})}]?processnormal)
  83. exten => exten,n,ExecIf($["${CALLER_PRI}" = "${CALLEE_PRI}" & "${CALEERECMODE}"="never"]?Set(RECMODE=${CALEERECMODE}))
  84. exten => exten,n,ExecIf($["${CALLER_PRI}" = "${CALLEE_PRI}" & "${CALEERECMODE}"="force" & "${CALLERRECMODE}"="no"]?Set(RECMODE=${CALEERECMODE}))
  85. exten => exten,n,ExecIf($["${CALLER_PRI}" = "${CALLEE_PRI}" & "${CALEERECMODE}"="force" & "${CALLERRECMODE}"="never"]?Set(RECMODE=${CALEERECMODE}))
  86. exten => exten,n,ExecIf($["${CALLER_PRI}" = "${CALLEE_PRI}" & "${CALEERECMODE}"="never" & "${CALLERRECMODE}"="force"]?Set(RECMODE=${CALEERECMODE}))
  87. exten => exten,n(processnormal),ExecIf($[!${LEN(${RECMODE})}]?Set(RECMODE=dontcare))
  88. exten => exten,n,ExecIf($["${RECMODE}"="dontcare"]?Set(RECMODE=${CALLEE}))
  89. exten => exten,n,Gosub(recordcheck,1(${RECMODE},${CALLTYPE},${ARG2}))
  90. exten => exten,n,Return()
  91.  
  92. exten => conf,1,Noop(Conference Recording Check ${FROMEXTEN} to ${ARG2})
  93. exten => conf,n,Gosub(recconf,1(${ARG2},${ARG2},${ARG3}))
  94. exten => conf,n,Return()
  95.  
  96. exten => page,1,Noop(Paging Recording Check ${FROMEXTEN} to ${ARG2})
  97. exten => page,n,GosubIf($["${REC_POLICY_MODE}"="always"]?recconf,1(${ARG2},${FROMEXTEN},${ARG3}))
  98. exten => page,n,Return()
  99.  
  100. exten => recconf,1,Noop(Setting up recording: ${ARG1}, ${ARG2}, ${ARG3})
  101. exten => recconf,n,Set(__CALLFILENAME=${IF($[${CONFBRIDGE_INFO(parties,${ARG2})}]?${DB(RECCONF/${ARG2})}:${ARG1}-${ARG2}-${ARG3}-${TIMESTR}-${UNIQUEID})})
  102. exten => recconf,n,ExecIf($[!${CONFBRIDGE_INFO(parties,${ARG2})}]?Set(DB(RECCONF/${ARG2})=${CALLFILENAME}))
  103. exten => recconf,n,Set(CONFBRIDGE(bridge,record_file)=${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT})
  104. exten => recconf,n,ExecIf($["${ARG3}"!="always"]?Return())
  105. exten => recconf,n,Set(CONFBRIDGE(bridge,record_conference)=yes)
  106. exten => recconf,n,Set(CONFBRIDGE(bridge,record_file_timestamp)=no)
  107. exten => recconf,n,Set(__REC_STATUS=RECORDING)
  108. exten => recconf,n,Set(CDR(recordingfile)=${IF($[${CONFBRIDGE_INFO(parties,${ARG2})}]?${CALLFILENAME}.${MON_FMT}:${CALLFILENAME}.${MON_FMT})})
  109. exten => recconf,n,Noop(${MIXMONITOR_FILENAME})
  110. exten => recconf,n,Set(CHANNEL(hangup_handler_push)=sub-record-hh-check,s,1)
  111. exten => recconf,n,Return()
  112.  
  113. exten => recq,1,Noop(Setting up recording: ${ARG1}, ${ARG2}, ${ARG3})
  114. exten => recq,n,Set(MONITOR_FILENAME=${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME})
  115. exten => recq,n,MixMonitor(${MONITOR_FILENAME}.${MON_FMT},${EVAL(${MONITOR_OPTIONS})}${MIXMON_BEEP},${EVAL(${MIXMON_POST})})
  116. exten => recq,n,Set(__REC_STATUS=RECORDING)
  117. exten => recq,n,Set(CDR(recordingfile)=${CALLFILENAME}.${MON_FMT})
  118. exten => recq,n,Return()
  119.  
  120. exten => parking,1,Noop(User ${ARG2} picked up a parked call)
  121. exten => parking,n,Set(USER=${ARG2})
  122. exten => parking,n,ExecIf($[!${LEN(${ARG2})}]?Set(USER=unknown))
  123. exten => parking,n,Set(RECMODE=${DB(AMPUSER/${ARG2}/recording/out/internal)})
  124. exten => parking,n,ExecIf($[!${LEN(${RECMODE})}]?Set(RECMODE=dontcare))
  125. exten => parking,n,Gosub(recordcheck,1(${RECMODE},parked,${USER}))
  126. exten => parking,n,Return()
  127.  
  128. ;--== end of [sub-record-check] ==--;
Tags: Asterisk
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement