Advertisement
trupsalms

Extension_custom.conf

Feb 24th, 2019
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 28.25 KB | None | 0 0
  1. ; This file contains example extensions_custom.conf entries.
  2. ; extensions_custom.conf should be used to include customizations
  3. ; to AMP's Asterisk dialplan.
  4.  
  5. ; Extensions in AMP have access to the 'from-internal' context.
  6. ; The context 'from-internal-custom' is included in 'from-internal' by default
  7.  
  8. [from-internal-custom]
  9.  
  10. ;# // BEGIN Star
  11. exten => *,1,Answer
  12. exten => *,n,Wait(1)
  13. exten => *,n,Set(TIMEOUT(digit)=7)
  14. exten => *,n,Set(TIMEOUT(response)=10)
  15. ;exten => *,n(retryit),Flite("Star, at your service. How can I help you today.")
  16. exten => *,n(retryit),agi(ibmtts.php,"Star, at your service. How can I help you today.",en)
  17. exten => *,n,agi(speech-recog.agi,en-US)
  18. exten => *,n,Noop(= Script returned: ${status} , ${id} , ${confidence} , ${utterance} =)
  19. ;exten => *,n,GotoIf($["${confidence}" > "0.4"]?proceednow:retryit)
  20. ;exten => *,n(proceednow),agi(googletts.agi,"${utterance}. Here we go.",en)
  21. exten => *,n(proceednow),agi(ibmtts.php,"${utterance}. Here we go.",en)
  22. exten => *,n,AGI(nv-star.php,${utterance})
  23. exten => *,n,NoOp(Answer: ${ANSWER})
  24. exten => *,n,GotoIf($["${ANSWER}" = "*WOLFRAMALPHA"]?4747,12)
  25. exten => *,n,GotoIf($["${ANSWER}" = "*CALL"]?callproc)
  26. exten => *,n,GotoIf($["${ANSWER}" = "*DIAL"]?dialproc:playit)
  27. exten => *,n(callproc),Set(NAME2CALL=${utterance:5})
  28. exten => *,n,Set(utterance=${NAME2CALL})
  29. exten => *,n,Goto(411,11)
  30. exten => *,n(dialproc),Set(DIAL=${utterance})
  31. ;exten => *,n,Dial(local/${DIAL}@from-internal)
  32. exten => *,n,Goto(outbound-allroutes,${DIAL},1)
  33. exten => *,n,Hangup
  34. ;exten => *,n(playit),Flite("${ANSWER}")
  35. exten => *,n(playit),agi(ibmtts.php,"${ANSWER}",en)
  36. exten => *,n,Hangup
  37. ;# // END Star
  38.  
  39.  
  40. ;# // BEGIN Reminders
  41. exten => 123,1,Answer
  42. exten => 123,2,Wait(1)
  43. exten => 123,3,Authenticate(123456)
  44. exten => 123,4,Goto(reminder,s,1)
  45. ;# // END Reminders
  46.  
  47.  
  48. ;# // BEGIN Wolfram Alpha
  49. ; Wolfram Alpha Dialplan Interface for Incredible PBX 13-13 servers
  50. ; Before use, enter your Wolfram Alpha App ID in /var/lib/asterisk/agi-bin/wolfram.sh
  51. ; See the Nerd Vittles tutorial for details: http://nerdvittles.com/?p=798
  52. exten => 4747,1,Answer()
  53. exten => 4747,n,Wait(1)
  54. ;exten => 4747,n,flite("After the beep, Say your command, then Press the pound key.")
  55. exten => 4747,n,agi(ibmtts.php,"After the beep, Say your command, then Press the pound key.")
  56. exten => 4747,n,Set(RANDFILE=${RAND(8000,8599)})
  57. exten => 4747,n,Record(/tmp/${RANDFILE}.wav,3,10)
  58. ;exten => 4747,n,Flite("I think you said:")
  59. exten => 4747,n,agi(ibmtts.php,"I think you said:")
  60. exten => 4747,n,Playback(/tmp/${RANDFILE})
  61. ;exten => 4747,n,Flite("If this is correct. press 1.")
  62. exten => 4747,n,agi(ibmtts.php,"If this is correct. press 1.")
  63. exten => 4747,n,Read(MYCHOICE,beep,1)
  64. exten => 4747,n,GotoIf($["foo${MYCHOICE}" = "foo1"]?wolfproceed:wolfdone)
  65. ;exten => 4747,n(wolfproceed),Flite("One moment please while we contact wolfrum alpha.")
  66. exten => 4747,n(wolfproceed),agi(ibmtts.php,"One moment please while we contact wolfrum alpha.")
  67. exten => 4747,n,AGI(wolfram.sh,${RANDFILE})
  68. exten => 4747,n,Set(foo=${FILE(/tmp/results.txt)})
  69. exten => 4747,n,flite("${foo}")
  70. ;exten => 4747,n,agi(ibmtts.php,"${foo}")
  71. ;exten => 4747,n(wolfdone),flite("Have a nice day! Good bye.")
  72. exten => 4747,n(wolfdone),agi(ibmtts.php,"Have a nice day! Good bye.")
  73. exten => 4747,n,hangup
  74. ;# // END Wolfram Alpha
  75.  
  76.  
  77. ;# // BEGIN SMS Dictator
  78. exten => 767,1,Answer
  79. exten => 767,n,Wait(1)
  80. exten => 767,n,Flite("Please enter the 10 digit S.M.S number.")
  81. exten => 767,n,Read(SMSNUM,beep,10)
  82. exten => 767,n,Flite("S.M.S message will be sent two.")
  83. exten => 767,n,SayDigits("${SMSNUM}")
  84. exten => 767,n,Flite("To proceed. press 1.")
  85. exten => 767,n,Read(MYPICK,beep,1)
  86. exten => 767,n,GotoIf($["foo${MYPICK}" = "foo1"]?smsrecord:smsdone)
  87. exten => 767,n(smsrecord),Flite("After the beep. I will reecord your S.M.S message. When you're finished. press the pound key.")
  88. exten => 767,n,Set(RANDFILE=${RAND(8000,8599)})
  89. exten => 767,n,Record(/tmp/${RANDFILE}.wav,3,10)
  90. exten => 767,n,Flite("I think you said:")
  91. exten => 767,n,Playback(/tmp/${RANDFILE})
  92. exten => 767,n,Flite("If this is correct. press 1.")
  93. exten => 767,n,Read(MYCHOICE,beep,1)
  94. exten => 767,n,GotoIf($["foo${MYCHOICE}" = "foo1"]?smsproceed:smsdone)
  95. exten => 767,n(smsproceed),Flite("One moment please while we send your message.")
  96. exten => 767,n,AGI(smsgen.sh,${RANDFILE},${SMSNUM})
  97. exten => 767,n,Flite("S.M.S message has been sent.")
  98. exten => 767,n(smsdone),Playback(goodbye)
  99. exten => 767,n,Hangup
  100. ;# // END SMS Dictator
  101.  
  102.  
  103. ;# // BEGIN Call by Name
  104. exten => 411,1,Answer
  105. exten => 411,n,Playback(custom/411)
  106. exten => 411,n,Set(RANDFILE=${RAND(8000,8599)})
  107. exten => 411,n,Record(/tmp/${RANDFILE}.wav,3,10)
  108. exten => 411,n,Playback(/tmp/${RANDFILE})
  109. exten => 411,n,AGI(getnumber.sh,${RANDFILE})
  110. exten => 411,n,NoOp(Party to call : ${PTY2CALL})
  111. exten => 411,n,NoOp(Number to call: ${NUM2CALL})
  112. exten => 411,n,Goto(outbound-allroutes,${NUM2CALL},1)
  113. exten => 411,n,Hangup()
  114. exten => h,1,Hangup()
  115. ;# // END Call by Name
  116.  
  117.  
  118. ;# // BEGIN nv-news-yahoo
  119. exten => 951,1,Answer
  120. exten => 951,n,Wait(1)
  121. exten => 951,n,Set(TIMEOUT(digit)=7)
  122. exten => 951,n,Set(TIMEOUT(response)=10)
  123. ;exten => 951,n(proceed),agi(picotts.agi,"Please hold a moment while we retrieve the latest Yahoo news headlines.",en-US)
  124. exten => 951,n,Playback(/var/lib/asterisk/agi-bin/pleaseholdyahoo)
  125. exten => 951,n,AGI(nv-news-yahoo.php,10)
  126. exten => 951,n,NoOp(News: ${NEWS})
  127. ;exten => 951,n,Flite("${NEWS}")
  128. ;exten => 951,n,AGI(googletts.agi,"${NEWS}",en)
  129. ;exten => 951,n,AGI(picotts.agi,"${NEWS}",en-US)
  130. exten => 951,n,agi(ibmtts.php,"${NEWS}")
  131. exten => 951,n,Hangup
  132. ;# // END nv-news-yahoo
  133.  
  134.  
  135. ;# // BEGIN Weather by ZIP
  136. exten => 947,1,Answer
  137. exten => 947,n,Wait(1)
  138. exten => 947,n,Set(TIMEOUT(digit)=7)
  139. exten => 947,n,Set(TIMEOUT(response)=10)
  140. ;exten => 947,n,agi(picotts.agi,"At the beep enter the five digit zip code for the weather report you wish to retrieve.",en-US)
  141. exten => 947,n,Playback(/var/lib/asterisk/agi-bin/zipcode)
  142. exten => 947,n,Read(ZIPCODE,beep,5)
  143. ;exten => 947,n,agi(picotts.agi,"Please hold a moment while we contact the National Weather Service.",en-US)
  144. exten => 947,n,Playback(/var/lib/asterisk/agi-bin/pleaseholdnws)
  145. exten => 947,n,System(sqlite3 /var/lib/asterisk/agi-bin/zipcodes.sqlite "select city,latitude,longitude from zipcodes where zip=${ZIPCODE}" > /tmp/${ZIPCODE})
  146. exten => 947,n,AGI(nv-weather-zip.php,${ZIPCODE})
  147. exten => 947,n,NoOp(Weather: ${WEATHER})
  148. ;exten => 947,n,Flite("${WEATHER}")
  149. ;exten => 947,n,AGI(googletts.agi,"${WEATHER}",en)
  150. ;exten => 947,n,AGI(picotts.agi,"${WEATHER}",en-US)
  151. exten => 947,n,agi(ibmtts.php,"${WEATHER}")
  152. exten => 947,n,Hangup
  153. ;# // END Weather by ZIP
  154.  
  155.  
  156. ;# // BEGIN Travelin' Man 4 Dialer
  157. exten => 864,1,Answer
  158. exten => 864,n,Wait(2)
  159. exten => 864,n,Flite("Please enter your account number.")
  160. exten => 864,n,Read(MYACCTNO,beep,8)
  161. exten => 864,n,NoOp(ACCTNO: ${MYACCTNO})
  162. exten => 864,n,Flite("Please enter your PIN.")
  163. exten => 864,n,Read(MYPIN,beep,5)
  164. exten => 864,n,NoOp(PIN: ${MYPIN})
  165. exten => 864,n,Set(USERDATA=${ODBC_TRAVMAN4(${MYACCTNO})})
  166. exten => 864,n,GotoIf($["${USERDATA},foo" = ",foo"]?notfound)
  167. exten => 864,n,Set(ACCTNO=${CUT(USERDATA,\,,1)})
  168. exten => 864,n,Set(PIN=${CUT(USERDATA,\,,2)})
  169. exten => 864,n,GotoIf($["${MYPIN}" = "${PIN}"]?anothertry:notfound)
  170. exten => 864,n(theanswer),Flite("Account number:")
  171. exten => 864,n,SayDigits(${ACCTNO})
  172. exten => 864,n,Flite("PIN:")
  173. exten => 864,n,SayDigits(${PIN})
  174. exten => 864,n,NoOp(Entry: ${ACCTNO} - ${PIN})
  175. exten => 864,n(anothertry),Flite("After the beep. Please enter I.P. add dress using the star key for periods. Press pound key when finished.")
  176. exten => 864,n,Read(MYIP,beep,16)
  177. exten => 864,n,Flite("I.P. ADD DRESS:")
  178. exten => 864,n,SayDigits(${MYIP})
  179. exten => 864,n(confirm),Flite("After the beep. Press 1 to process this entry. Or press 2 to start over.")
  180. exten => 864,n,Read(REPEAT,beep,1)
  181. exten => 864,n,GotoIf($["${REPEAT}" = "2"]?anothertry)
  182. exten => 864,n,GotoIf($["${REPEAT}" = "1"]?saveit)
  183. exten => 864,n,Goto(confirm)
  184. exten => 864,n,Flite("Entry aborted. Have a nice day. Good bye.")
  185. exten => 864,n,Hangup
  186. exten => 864,n(notfound),Flite("No matching entry on file. Good bye.")
  187. exten => 864,n,Hangup
  188. exten => 864,n(saveit),System(echo -e "${MYIP}" > /etc/asterisk/tm4/${ACCTNO})
  189. exten => 864,n,Flite("Your I.P. address has been saved. An e mail will be sent when new address has been activated. Good bye.")
  190. exten => 864,n,Hangup
  191. ;# // END Travelin' Man 4 Dialer
  192.  
  193.  
  194. #include odbc.conf
  195. #include extensions_user_custom.conf
  196. #include extensions_google.conf
  197. include => phone
  198. include => google_api
  199. #include extensions_alexa.conf
  200. include => alexa_tts
  201.  
  202.  
  203. ;# // BEGIN Today in History
  204. exten => 86329,1,Answer
  205. exten => 86329,n,Wait(1)
  206. exten => 86329,n,Set(TIMEOUT(digit)=7)
  207. exten => 86329,n,Set(TIMEOUT(response)=10)
  208. exten => 86329,n,AGI(nv-today.php)
  209. exten => 86329,n,Playback(/tmp/today)
  210. exten => 86329,n,Hangup
  211. ;# // END Today in History
  212.  
  213.  
  214. ;# // BEGIN Call by Code
  215. exten => 412,1,Answer
  216. exten => 412,2,Wait(1)
  217. exten => 412,3,Set(TIMEOUT(digit)=7)
  218. exten => 412,4,Set(TIMEOUT(response)=10)
  219. exten => 412,5,GotoIf($[${STAT(e,/usr/bin/swift)}]?8)
  220. exten => 412,6,Flite("At the beep enter the first three letters of the name of the person you wish to contact.")
  221. exten => 412,7,Goto(412,9)
  222. exten => 412,8,Swift("At the beep enter the first three letters of the name of the person you wish to contact.")
  223. exten => 412,9,Read(DIALCODE,beep,3)
  224. exten => 412,10,NoOp(Name lookup: ${DIALCODE})
  225. exten => 412,11,AGI(nv-callwho2.php,${DIALCODE})
  226. exten => 412,12,NoOp(Number to call: ${NUM2CALL})
  227. exten => 412,13,GotoIf($["foo${NUM2CALL}" = "foo0"]?15)
  228. exten => 412,14,Goto(outbound-allroutes,${NUM2CALL},1)
  229. exten => 412,15,Wait(1)
  230. exten => 412,16,Hangup
  231. ;# // END Call by Code
  232.  
  233.  
  234. ;# // BEGIN xTide
  235. exten => 8433,1,Answer
  236. exten => 8433,n,Wait(1)
  237. exten => 8433,n,System(/var/lib/asterisk/agi-bin/xtide)
  238. exten => 8433,n,Playback(/tmp/xtide)
  239. exten => 8433,n,Wait(1)
  240. exten => 8433,n,Hangup
  241. ;# // END xTide
  242.  
  243.  
  244. ;# // BEGIN AsteriDex SpeedDial
  245. exten => _000.,1,Answer
  246. exten => _000.,n,SayDigits(${EXTEN:3}) ; extensions dialed with 000 prefix get looked up in AsteriDex
  247. exten => _000.,n,AGI(asteridex.php,${EXTEN})
  248. exten => _000.,n,GotoIf($["${DIAL:0:3}" = "000"]?97)
  249. exten => _000.,n,NoOp(Number to Dial: ${DIAL})
  250. exten => _000.,n,NoOp(Person to Dial: ${DUDE})
  251. exten => _000.,n,Flite("Connecting to: ${DUDE}. One moment please.")
  252. exten => _000.,n,Dial(local/${DIAL}@from-internal)
  253. exten => _000.,n,Goto(outbound-allroutes,${DIAL},1)
  254. exten => _000.,n,Hangup()
  255. exten => _000.,97,Playback(num-not-in-db)
  256. exten => _000.,98,Playback(goodbye)
  257. exten => _000.,99,Hangup()
  258. ;# // END AsteriDex SpeedDial
  259.  
  260.  
  261. exten => 1234,1,Answer
  262. exten => 1234,n,Playback(custom/call-intro)
  263. exten => 1234,n(startagain),Playback(custom/name-dob)
  264. exten => 1234,n,Set(RANDFILE1=${RAND(8000,8599)})
  265. exten => 1234,n,Record(/tmp/${RANDFILE1}.wav,5,20)
  266. exten => 1234,n,Playback(/tmp/${RANDFILE1})
  267. exten => 1234,n,NoOp(File name: /tmp/${RANDFILE1})
  268. exten => 1234,n,Playback(custom/address)
  269. exten => 1234,n,Set(RANDFILE2=${RAND(8000,8599)})
  270. exten => 1234,n,Record(/tmp/${RANDFILE2}.wav,5,30)
  271. exten => 1234,n,Playback(/tmp/${RANDFILE2})
  272. exten => 1234,n,NoOp(File name: /tmp/${RANDFILE2})
  273. exten => 1234,n,Playback(custom/scripts)
  274. exten => 1234,n,Set(RANDFILE3=${RAND(8000,8599)})
  275. exten => 1234,n,Record(/tmp/${RANDFILE3}.wav,5,40)
  276. exten => 1234,n,Playback(/tmp/${RANDFILE3})
  277. exten => 1234,n,NoOp(File name: /tmp/${RANDFILE3})
  278. exten => 1234,n,System(/usr/bin/sox /tmp/${RANDFILE1}.wav /tmp/${RANDFILE2}.wav /tmp/${RANDFILE3}.wav /tmp/recordingsox.wav)
  279. exten => 1234,n,System(rm -f /tmp/8*.wav)
  280. exten => 1234,n,Set(TIMEOUT(response)=10)
  281. exten => 1234,n(askagain),Playback(/tmp/recordingsox)
  282. exten => 1234,n,Playback(to-rerecord-yr-message)
  283. exten => 1234,n,Playback(press)
  284. exten => 1234,n,Playback(digits/star)
  285. exten => 1234,n,Playback(otherwise-press)
  286. exten => 1234,n,Playback(digits/1)
  287. exten => 1234,n,Read(MYCHOICE,beep,1)
  288. exten => 1234,n,GotoIf($["${MYCHOICE}" = "1"]?notagain)
  289. exten => 1234,n,GotoIf($["${MYCHOICE}" = "*"]?startagain)
  290. exten => 1234,n,Goto(askagain)
  291. exten => 1234,n(notagain),System(echo "Channel: local/*701@from-internal" > /tmp/alert.call)
  292. exten => 1234,n,System(echo "MaxRetries: 0" >> /tmp/alert.call)
  293. exten => 1234,n,System(echo "RetryTime: 0" >> /tmp/alert.call)
  294. exten => 1234,n,System(echo "WaitTime: 30" >> /tmp/alert.call)
  295. exten => 1234,n,System(echo "Context: from-internal-custom" >> /tmp/alert.call)
  296. exten => 1234,n,System(echo "Extension: 12345" >> /tmp/alert.call)
  297. exten => 1234,n,System(echo "Priority: 1" >> /tmp/alert.call)
  298. exten => 1234,n,System(mv /tmp/alert.call /var/spool/asterisk/outgoing)
  299. exten => 1234,n,Playback(your-msg-has-been-saved)
  300. exten => 1234,n,Playback(goodbye)
  301. exten => 1234,n,Hangup()
  302.  
  303.  
  304. exten => 12345,1,Answer
  305. exten => 12345,n,Wait(10)
  306. exten => 12345,n,Set(THEANSWER="/tmp/sample2")
  307. exten => 12345,n,Playback(${THEANSWER})
  308. exten => 12345,n,Hangup
  309.  
  310.  
  311. include => custom-recordme ; extensions can also dial 5678
  312.  
  313. ;# // BEGIN SIP URI Mod1
  314. ; Portions of the following code are Copyright (c) 2019, Ward Mundy & Associates LLC
  315. ; Licensed for use pursuant to GPL2: https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html
  316. exten => _.,1,Set(MyDomain=${CUT(SIPCALLID,@,2)})
  317. exten => _.,n,NoOp(SIPDOMAIN: ${SIPDOMAIN})
  318. exten => _.,n,GotoIf($["foo${MyDomain}" != "foo"]?FoundDomain)
  319. exten => _.,n,Set(SIPDOMAIN=${DB(MyDomain/FQDN)})
  320. exten => _.,n,Set(MyDomain=${DB(MyDomain/FQDN)})
  321. exten => _.,n(FoundDomain),GotoIf($["${MyDomain}" = "${SIPDOMAIN}"]?OutAllRoutes)
  322. exten => _.,n,Macro(uridial,${EXTEN}@${SIPDOMAIN})
  323. exten => _.,n(OutAllRoutes),Set(DSTRING=${LEN(${EXTEN})})
  324. exten => _.,n,ExecIf($["${DSTRING}" > "5"]?Goto(outbound-allroutes,${EXTEN},1)
  325. exten => _.,n,Dial(local/${EXTEN}@from-internal-additional)
  326. ;# // END SIP URI Mod1
  327.  
  328.  
  329. ; custom-count2four,s,1 can be used as a custom target for
  330. ; a Digital Receptionist menu or a Ring Group
  331. [custom-count2four]
  332. exten => s,1,SayDigits(1234)
  333. exten => s,2,Hangup
  334.  
  335.  
  336. ; custom-recordme,5678,1 can be used as a custom target for
  337. ; a Digital Receptionist menu or a Ring Group
  338. [custom-recordme]
  339. exten => 5678,1,Wait(2)
  340. exten => 5678,2,Record(/tmp/asterisk-recording:gsm)
  341. exten => 5678,3,Wait(2)
  342. exten => 5678,4,Playback(/tmp/asterisk-recording)
  343. exten => 5678,5,Wait(2)
  344. exten => 5678,6,Hangup
  345.  
  346.  
  347. ; This macro is for dev purposes and just dumps channel/app variables. Useful when designing new contexts.
  348. [macro-dumpvars]
  349. exten => s,1,Noop(ACCOUNTCODE=${ACCOUNTCODE})
  350. exten => s,2,Noop(ANSWEREDTIME=${ANSWEREDTIME})
  351. exten => s,3,Noop(BLINDTRANSFER=${BLINDTRANSFER})
  352. exten => s,4,Noop(CALLERID=${CALLERID(all)})
  353. exten => s,5,Noop(CALLERID(name)=${CALLERID(name)})
  354. exten => s,6,Noop(CALLERID(number)=${CALLERID(number)})
  355. exten => s,7,Noop(CALLINGPRES=${CALLINGPRES})
  356. exten => s,8,Noop(CHANNEL=${CHANNEL})
  357. exten => s,9,Noop(CONTEXT=${CONTEXT})
  358. exten => s,10,Noop(DATETIME=${STRFTIME(${EPOCH},,%d%m%Y-%H:%M:%S)})
  359. exten => s,11,Noop(DIALEDPEERNAME=${DIALEDPEERNAME})
  360. exten => s,12,Noop(DIALEDPEERNUMBER=${DIALEDPEERNUMBER})
  361. exten => s,13,Noop(DIALEDTIME=${DIALEDTIME})
  362. exten => s,14,Noop(DIALSTATUS=${DIALSTATUS})
  363. exten => s,15,Noop(DNID=${CALLERID(dnid)})
  364. exten => s,16,Noop(EPOCH=${EPOCH})
  365. exten => s,17,Noop(EXTEN=${EXTEN})
  366. exten => s,18,Noop(HANGUPCAUSE=${HANGUPCAUSE})
  367. exten => s,19,Noop(INVALID_EXTEN=${INVALID_EXTEN})
  368. exten => s,20,Noop(LANGUAGE=${LANGUAGE()})
  369. exten => s,21,Noop(MEETMESECS=${MEETMESECS})
  370. exten => s,22,Noop(PRIORITY=${PRIORITY})
  371. exten => s,23,Noop(RDNIS=${CALLERID(rdnis)}})
  372. exten => s,24,Noop(SIPDOMAIN=${SIPDOMAIN})
  373. exten => s,25,Noop(SIP_CODEC=${SIP_CODEC})
  374. exten => s,26,Noop(SIPCALLID=${SIPCALLID})
  375. exten => s,27,Noop(SIPUSERAGENT=${SIPUSERAGENT})
  376. exten => s,28,Noop(TXTCIDNAME=${TXTCIDNAME})
  377. exten => s,29,Noop(UNIQUEID=${UNIQUEID})
  378. exten => s,30,Noop(TOUCH_MONITOR=${TOUCH_MONITOR})
  379. exten => s,31,Noop(MACRO_CONTEXT=${MACRO_CONTEXT})
  380. exten => s,32,Noop(MACRO_EXTEN=${MACRO_EXTEN})
  381. exten => s,33,Noop(MACRO_PRIORITY=${MACRO_PRIORITY})
  382.  
  383.  
  384. ;[google-out]
  385. ; you will need to replace buddy@gmail.com with something real
  386. ;exten => 701,1,Dial(gtalk/gtalk_account/buddy@gmail.com)
  387.  
  388.  
  389. ;[google-in]
  390. ;exten => s,1,NoOp( Call from Gtalk )
  391. ;exten => s,n,Set(CALLERID(name)="From Google Talk")
  392. ;exten => s,n,Dial(SIP/100) ; this can be a ringgroup or direct extension
  393.  
  394.  
  395. ;jabber notification of inbound call
  396. ;exten => 703,1,JABBERSend(gtalk_account,buddy@gmail.com,Inbound call from ${CALLERID(all)})
  397.  
  398.  
  399. [custom-callboth]
  400. exten => _1NXXNXXXXXX,1,Wait(1)
  401. exten => _1NXXNXXXXXX,n,Background(pls-wait-connect-call)
  402. exten => _1NXXNXXXXXX,n,Goto(outbound-allroutes,${EXTEN},1)
  403. exten => _NXXNXXXXXX,1,Wait(1)
  404. exten => _NXXNXXXXXX,n,Background(pls-wait-connect-call)
  405. exten => _NXXNXXXXXX,n,Goto(outbound-allroutes,${EXTEN},1)
  406.  
  407.  
  408. [reminder]
  409. exten => s,1,Set(TIMEOUT(digit)=7)
  410. exten => s,2,Set(TIMEOUT(response)=10)
  411. exten => s,3,Playback(custom/reminder1)
  412. exten => s,4,Wait(2)
  413. exten => s,5,Set(TMPMSG=${CUT(UNIQUEID,.,-1)}${CUT(UNIQUEID,.,2-)})
  414. exten => s,6,Record(custom/${TMPMSG}:gsm)
  415. exten => s,7,Wait(1)
  416. exten => s,8,Playback(custom/${TMPMSG})
  417. exten => s,9,Wait(1)
  418. exten => s,10,Background(vm-review)
  419. exten => s,11,WaitExten()
  420. exten => 1,1,Goto(reminder7,s,1)
  421. exten => 2,1,Goto(s,8)
  422. exten => 3,1,Goto(s,3)
  423. exten => t,1,Goto(s,10)
  424. exten => i,1,Playback(goodbye)
  425. exten => i,2,Hangup
  426. exten => h,1,Hangup
  427.  
  428.  
  429. [reminder2]
  430. exten => s,1,Set(TIMEOUT(digit)=7)
  431. exten => s,2,Set(TIMEOUT(response)=10)
  432. exten => s,3,Read(APPTDT,custom/reminder2,8)
  433. exten => s,4,AGI(checkdate.php,${APPTDT})
  434. exten => s,5,GotoIf($["foo${HOTDATE}" = "fooBAD"]?99,1)
  435. exten => s,6,Playback(you-entered)
  436. exten => s,7,GotoIf($["foo${HOTDATE}" = "fooTODAY"]?s,10)
  437. exten => s,8,SayUnixTime(${HOTDATE},,ABdY)
  438. exten => s,9,Goto(s,11)
  439. exten => s,10,Playback(custom/today)
  440. exten => s,11,Goto(reminder3,s,1)
  441. exten => 99,1,Playback(conf-errormenu)
  442. exten => 99,2,Goto(s,3)
  443. exten => t,1,Goto(s,3)
  444. exten => i,1,Goto(s,3)
  445. exten => h,1,Hangup
  446.  
  447.  
  448. [reminder3]
  449. exten => s,1,Set(TIMEOUT(digit)=7)
  450. exten => s,2,Set(TIMEOUT(response)=10)
  451. exten => s,3,Background(if-correct-press)
  452. exten => s,4,Background(digits/1)
  453. exten => s,5,Background(otherwise-press)
  454. exten => s,6,Background(digits/2)
  455. exten => s,7,Background(press-star-cancel)
  456. exten => s,8,WaitExten()
  457. exten => 1,1,Goto(reminder4,s,1)
  458. exten => 2,1,Goto(reminder2,s,1)
  459. exten => *,1,Playback(goodbye)
  460. exten => *,2,System(/bin/rm -f /var/lib/asterisk/sounds/custom/${TMPMSG}.gsm)
  461. exten => *,3,Hangup
  462. exten => t,1,Goto(reminder2,s,6)
  463. exten => i,1,Goto(reminder2,s,6)
  464. exten => h,1,Hangup
  465.  
  466.  
  467. [reminder4]
  468. exten => s,1,Set(TIMEOUT(digit)=7)
  469. exten => s,2,Set(TIMEOUT(response)=10)
  470. exten => s,3,Read(APPTTIME,custom/reminder3,4)
  471. exten => s,4,GotoIf($["foo${APPTTIME}" < "foo1200"]?reminder5,s,1)
  472. exten => s,5,AGI(checktime.php,${APPTDT},${APPTTIME},0,${APPTPHONE})
  473. exten => s,6,GotoIf($["foo${HOTTIME}" = "fooBAD"]?99,1)
  474. exten => s,7,Playback(you-entered)
  475. exten => s,8,SayUnixTime(${HOTTIME},,ABdY)
  476. exten => s,9,Playback(digits/at)
  477. exten => s,10,SayUnixTime(${HOTTIME},,IMP)
  478. exten => s,11,Goto(s,18)
  479. exten => s,12,AGI(checktime.php,${APPTDT},${APPTTIME},1200,${APPTPHONE})
  480. exten => s,13,GotoIf($["foo${HOTTIME}" = "fooBAD"]?99,1)
  481. exten => s,14,Playback(you-entered)
  482. exten => s,15,SayUnixTime(${HOTTIME},,ABdY)
  483. exten => s,16,Playback(digits/at)
  484. exten => s,17,SayUnixTime(${HOTTIME},,IMp)
  485. exten => s,18,Goto(reminder6,s,1)
  486. exten => 99,1,Playback(conf-errormenu)
  487. exten => 99,2,Goto(s,3)
  488. exten => t,1,Goto(s,3)
  489. exten => i,1,Goto(s,3)
  490. exten => h,1,Hangup
  491.  
  492.  
  493. [reminder5]
  494. exten => s,1,Set(TIMEOUT(digit)=7)
  495. exten => s,2,Set(TIMEOUT(response)=10)
  496. exten => s,3,Background(1-for-am-2-for-pm)
  497. exten => s,4,WaitExten()
  498. exten => 1,1,Goto(reminder4,s,5)
  499. exten => 2,1,Goto(reminder4,s,12)
  500. exten => *,1,Playback(goodbye)
  501. exten => *,2,System(/bin/rm -f /var/lib/asterisk/sounds/custom/${TMPMSG}.gsm)
  502. exten => *,3,Hangup
  503. exten => t,1,Goto(reminder4,s,1)
  504. exten => i,1,Goto(s,1)
  505. exten => h,1,Hangup
  506.  
  507.  
  508. [reminder6]
  509. exten => s,1,Set(TIMEOUT(digit)=7)
  510. exten => s,2,Set(TIMEOUT(response)=10)
  511. exten => s,3,Background(if-correct-press)
  512. exten => s,4,Background(digits/1)
  513. exten => s,5,Background(otherwise-press)
  514. exten => s,6,Background(digits/2)
  515. exten => s,7,Background(press-star-cancel)
  516. exten => s,8,WaitExten()
  517. exten => 1,1,Goto(reminder9,s,1)
  518. exten => 2,1,Goto(reminder4,s,1)
  519. exten => *,1,Playback(goodbye)
  520. exten => *,2,System(/bin/rm -f /var/lib/asterisk/sounds/custom/${TMPMSG}.gsm)
  521. exten => *,3,Hangup
  522. exten => t,1,Goto(reminder6,s,3)
  523. exten => i,1,Goto(reminder6,s,3)
  524. exten => h,1,Hangup
  525.  
  526.  
  527. [reminder7]
  528. exten => s,1,Set(TIMEOUT(digit)=7)
  529. exten => s,2,Set(TIMEOUT(response)=10)
  530. exten => s,3,Read(APPTPHONE,custom/reminder4,0)
  531. exten => s,4,Goto(reminder8,s,1)
  532. exten => t,1,Goto(reminder8,s,1)
  533. exten => i,1,Goto(s,3)
  534. exten => #,1,Goto(reminder8,s,1)
  535. exten => h,1,Hangup
  536.  
  537.  
  538. [reminder8]
  539. exten => s,1,Set(TIMEOUT(digit)=7)
  540. exten => s,2,Set(TIMEOUT(response)=10)
  541. exten => s,3,GotoIf($["foo${APPTPHONE}" = "foo"]?4:5)
  542. exten => s,4,Set(APPTPHONE=${CALLERID(number)})
  543. exten => s,5,Playback(you-entered)
  544. exten => s,6,SayDigits(${APPTPHONE})
  545. exten => s,7,Background(if-correct-press)
  546. exten => s,8,Background(digits/1)
  547. exten => s,9,Background(otherwise-press)
  548. exten => s,10,Background(digits/2)
  549. exten => s,11,Background(press-star-cancel)
  550. exten => s,12,WaitExten()
  551. exten => 1,1,Goto(reminder2,s,1)
  552. exten => 2,1,Goto(reminder7,s,1)
  553. exten => *,1,Playback(goodbye)
  554. exten => *,2,System(/bin/rm -f /var/lib/asterisk/sounds/custom/${TMPMSG}.gsm)
  555. exten => *,3,Hangup
  556. exten => t,1,Goto(reminder8,s,5)
  557. exten => i,1,Goto(reminder8,s,5)
  558. exten => h,1,Hangup
  559.  
  560.  
  561. [reminder9]
  562. exten => s,1,Set(TIMEOUT(digit)=7)
  563. exten => s,2,Set(TIMEOUT(response)=10)
  564. exten => s,3,Read(APPTRECUR,custom/reminder6,1)
  565. exten => s,4,Goto(reminder9a,s,1)
  566. exten => t,1,Goto(s,3)
  567. exten => i,1,Goto(s,3)
  568. exten => #,1,Goto(reminder9a,s,1)
  569. exten => h,1,Hangup
  570.  
  571.  
  572. [reminder9a]
  573. exten => s,1,NoOp(APPTDT: ${APPTDT})
  574. exten => s,2,NoOp(APPTTIME: ${APPTTIME})
  575. exten => s,3,NoOp(APPTPHONE: ${APPTPHONE})
  576. exten => s,4,NoOp(RECURRING: ${APPTRECUR})
  577. exten => s,5,NoOp(APPTMSG: /var/lib/asterisk/sounds/custom/${APPTTIME}.${APPTDT}.${APPTPHONE}.gsm)
  578. exten => s,6,Playback(your-msg-has-been-saved)
  579. exten => s,7,Playback(goodbye)
  580. exten => s,8,Wait(2)
  581. exten => s,9,Hangup
  582. exten => h,1,System(/bin/mv -f /var/lib/asterisk/sounds/custom/${TMPMSG}.gsm /var/lib/asterisk/sounds/custom/${APPTTIME}.${APPTDT}.${APPTPHONE}.gsm)
  583. exten => h,2,DeadAGI(reminder.php,${APPTDT},${APPTTIME},${APPTPHONE},${APPTRECUR})
  584. exten => h,3,Hangup
  585.  
  586.  
  587. [remindem]
  588. exten => s,1,Answer
  589. exten => s,2,Wait(2)
  590. exten => s,3,Set(TIMEOUT(digit)=7)
  591. exten => s,4,Set(TIMEOUT(response)=10)
  592. exten => s,5,Playback(custom/reminder5)
  593. exten => s,6,Wait(2)
  594. exten => s,7,Playback(custom/${MSG})
  595. exten => s,8,Set(TIMEOUT(digit)=4)
  596. exten => s,9,Set(TIMEOUT(response)=5)
  597. exten => s,10,Set(counter=1)
  598. exten => s,11,Background(to-hear-msg-again)
  599. exten => s,12,Background(press-1)
  600. exten => s,13,Background(otherwise-press)
  601. exten => s,14,Read(lepick,digits/2,1)
  602. exten => s,15,GotoIf($["${lepick}" = "2"]?alldone,1:onemo,1)
  603. exten => onemo,1,NoOp(Callee Replayed Message. Dialed: ${APPTPHONE}.)
  604. exten => onemo,2,Playback(custom/${MSG}) ; playing again by request
  605. exten => onemo,3,Set(counter=${counter}+1)
  606. exten => onemo,4,GotoIf($["${counter}" = "1+1+1"]?alldone,1:s,11)
  607. exten => alldone,1,Background(goodbye)
  608. exten => alldone,2,NoOp(Callee Acknowledged Call. Dialed: ${APPTPHONE}.)
  609. exten => alldone,3,Hangup
  610. exten => t,1,NoOp(Callee's Answering Machine probably answered. Dialed: ${APPTPHONE}.)
  611. exten => t,2,Background(restarting)
  612. exten => t,3,Wait(1)
  613. exten => t,4,Playback(custom/${MSG}) ; playing again for ans machine
  614. exten => t,5,Background(goodbye)
  615. exten => t,6,Hangup
  616. exten => i,1,Goto(t,2)
  617. exten => o,1,Goto(t,2)
  618. exten => h,1,Set(email=${DB(EMAIL/${APPTPHONE})}) ; see if number to call has an associated email address
  619. exten => h,2,GotoIf($["foo${email}" = "foo"]?4)
  620. exten => h,3,system(mime-construct --to ${email} --subject "Telephone Reminder" --file /var/lib/asterisk/sounds/custom/${APPTTIME}.${APPTDT}.${APPTPHONE}.gsm --type audio/gsm)
  621. exten => h,4,NoOp(Callee hung up. Dialed: ${APPTPHONE}.)
  622. exten => h,5,System(/bin/rm -f /var/lib/asterisk/sounds/custom/${APPTTIME}.${APPTDT}.${APPTPHONE}.gsm)
  623. exten => h,6,Hangup
  624.  
  625.  
  626. [custom-fax-iaxmodem]
  627. exten => s,1,Answer
  628. exten => s,n,Wait(1)
  629. exten => s,n,SendDTMF(1)
  630. exten => s,n,Dial(IAX2/iax-fax0/${EXTEN})
  631. exten => s,n,Dial(IAX2/iax-fax1/${EXTEN})
  632. exten => s,n,Dial(IAX2/iax-fax2/${EXTEN})
  633. exten => s,n,Dial(IAX2/iax-fax3/${EXTEN})
  634. exten => s,n,Busy
  635. exten => s,n,Hangup
  636.  
  637.  
  638. [from-fax]
  639. exten => _x.,1,Dial(local/${EXTEN}@from-internal)
  640. exten => _x.,n,Goto(outbound-allroutes,${EXTEN},1)
  641. exten => _x.,n,Hangup
  642.  
  643.  
  644. [new-time]
  645. exten => s,1,ringing
  646. exten => s,2,Set(FutureTime=$[${EPOCH} + 8])
  647. exten => s,3,Set(FutureTimeMod=$[${FutureTime} % 10])
  648. exten => s,4,Set(FutureTime=$[${FutureTime} - ${FutureTimeMod}])
  649. ;180 in next line is max # seconds connection can be held open. Use multiples of 10.
  650. exten => s,5,Set(MaxConnectTime=$[${FutureTime} + 180])
  651. exten => s,6,Set(FutureTimeMod=$[${FutureTime} - ${EPOCH}])
  652. exten => s,7,GotoIf($["${FutureTimeMod}" < "0"]?10:8)
  653. exten => s,8,wait(1)
  654. exten => s,9,goto(6)
  655. exten => s,10,Answer
  656. exten => s,11,Set(FutureTime=$[${FutureTime} + 10])
  657. exten => s,12,Set(FutureTimeMod=$[${FutureTime} % 60])
  658. exten => s,13,wait(1)
  659. exten => s,14,playback(at-tone-time-exactly)
  660. exten => s,15,SayUnixTime(${FutureTime},,IM)
  661. exten => s,16,GotoIf($["${FutureTimeMod}" = "0"]?17:19)
  662. exten => s,17,SayUnixTime(${FutureTime},,p)
  663. exten => s,18,goto(22)
  664. exten => s,19,playback(and)
  665. exten => s,20,SayUnixTime(${FutureTime},,S)
  666. exten => s,21,playback(seconds)
  667. exten => s,22,Set(FutureTimeMod=$[${FutureTime} - ${EPOCH}])
  668. exten => s,23,GotoIf($["${FutureTimeMod}" < "1"]?26:24)
  669. exten => s,24,wait(1)
  670. exten => s,25,goto(22)
  671. exten => s,26,playback(beep)
  672. exten => s,27,Set(FutureTimeMod=$[${MaxConnectTime} - ${EPOCH}])
  673. exten => s,28,GotoIf($["${FutureTimeMod}" < "1"]?29:11)
  674. exten => s,29,Hangup
  675.  
  676.  
  677. [ext-did-custom]
  678. exten => fax,1,Noop(Fax detected!)
  679. exten => fax,2,Goto(custom-fax-iaxmodem,s,1)
  680.  
  681.  
  682. ; end of extensions_custom.conf
  683.  
  684.  
  685. [custom-fax-iaxmodem]
  686. exten => s,1,Answer
  687. exten => s,n,Wait(1)
  688. exten => s,n,SendDTMF(1)
  689. exten => s,n,Dial(IAX2/iax-fax0/${EXTEN})
  690. exten => s,n,Dial(IAX2/iax-fax1/${EXTEN})
  691. exten => s,n,Dial(IAX2/iax-fax2/${EXTEN})
  692. exten => s,n,Dial(IAX2/iax-fax3/${EXTEN})
  693. exten => s,n,Busy
  694. exten => s,n,Hangup
  695.  
  696.  
  697. [from-fax]
  698. exten => _x.,1,Dial(local/${EXTEN}@from-internal)
  699. exten => _x.,n,Hangup
  700.  
  701.  
  702. [custom-fax-iaxmodem]
  703. exten => s,1,Answer
  704. exten => s,n,Wait(1)
  705. exten => s,n,SendDTMF(1)
  706. exten => s,n,Dial(IAX2/iax-fax0/)
  707. exten => s,n,Dial(IAX2/iax-fax1/)
  708. exten => s,n,Dial(IAX2/iax-fax2/)
  709. exten => s,n,Dial(IAX2/iax-fax3/)
  710. exten => s,n,Busy
  711. exten => s,n,Hangup
  712.  
  713. [from-fax]
  714. exten => _x.,1,Dial(local/@from-internal)
  715. exten => _x.,n,Goto(outbound-allroutes,,1)
  716. exten => _x.,n,Hangup
  717.  
  718. [ext-did-custom]
  719. exten => fax,1,Noop(Fax detected!)
  720. exten => fax,2,Goto(custom-fax-iaxmodem,s,1)
  721.  
  722.  
  723.  
  724. [from-trunk-custom]
  725. exten => _X.,1,GotoIf($["${CALLERID(num):0:1}" != "+"]?noplusatstart)
  726. exten => _X.,n,GotoIf($["${CALLERID(num):0:2}" != "+1"]?noplusatstart)
  727. exten => _X.,n,NoOp(Changing Caller ID number from ${CALLERID(num)} to ${CALLERID(num):2})
  728. exten => _X.,n,Set(CALLERID(num)=${CALLERID(num):2})
  729. exten => _X.,n,Set(CALLERID(ANI)=${CALLERID(num)})
  730. exten => _X.,n(noplusatstart),Goto(from-trunk,${EXTEN},1)
  731.  
  732. [sub-log-caller]
  733. exten => s,1,Set(DB(cidname/${CALLERID(number)})=${CALLERID(name)})
  734. exten => s,n,Set(CALLERID(all)="${CALLERID(name)} <${CALLERID(number)}>")
  735. exten => s,n,NoOp(*** CALLER added to Asterisk Phonebook ***)
  736. exten => s,n,Return()
  737.  
  738.  
  739. ;# // BEGIN SIP URI Mod2
  740. ; Portions of the following code are Copyright (c) 2019, Ward Mundy & Associates LLC
  741. ; Licensed for use pursuant to GPL2: https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html
  742. [macro-uridial]
  743. exten => s,1,Set(dialuri=${CUT(ARG1,\;,1)})
  744. exten => s,n,Set(CALLERID(number)=${DB(${CALLERID(number)}/user_sipname)})
  745. exten => s,n,ExecIf($["${CALLERID(number)}" = ""]?Set(CALLERID(number)=Anonymous))
  746. exten => s,n,NoOp(Called SIP URI: ${dialuri})
  747. exten => s,n,NoOp(Calling From : ${CALLERID(all)} ?^?^?)
  748. exten => s,n,Dial(SIP/${dialuri},60,tr)
  749. exten => s,n,Congestion()
  750. exten => s,n,Return
  751. ;# // END SIP URI Mod2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement