返回列表 發帖

Inbound route to share

Is it possible to share inbound sip trunk and based on caller ID or pins to configure which asterisk server to forward and respond? Any one has dial plan or scripts to share?

This is a bit complicated but it works fine.  It is a combination of auto-attendant, personal hidden menu (not announced through the handset to the caller) designed by myself and PIN protected IVR.  See if it helps and you understand how to use.
  1. [auto-attendant]  
  2. exten => s,1,GotoIf($[${CALLERID(num)} = 91239123]?bubblestar)
  3. same => n,GotoIf($[${CALLERID(num)} = 92469246]?ckleea)
  4. same => n,GotoIf($[${CALLERID(num)} = 91359135]?yhfung)
  5. same => n,Goto(mainmenu,s,1)
  6. same => n(bubblestar),Goto(hi-bubblestar,s,1)
  7. same => n(ckleea),Goto(hi-ckleea,s,1)
  8. same => n(yhfung),Goto(hi-yhfung,s,1)

  9. [mainmenu]
  10. exten => s,1,Background(mainmenu)
  11. same => n,WaitExten()  
  12. same => n,Hangup()  

  13. exten => 1,1,Goto(viaPSTN,991239123,1)                        ; dial to bubblestar's Mobile via PSTN directly  
  14. exten => 2,1,Goto(viaPSTN,992469246,1)                           ; dial to ckleea's Mobile via PSTN directly
  15. exten => 3,1,Voicemail(3001@default)                                ; Go to voicemail box
  16. exten => 8,1,Goto(IVR,s,1)                                        ; hidden menu for personal dial to IVR
  17. exten => 9,1,Hangup()                                        ; let the caller dials 9 to exit
  18. exten => 0,1,Goto(mainmenu,s,1)                                ; let the caller dials 0 to repeat the menu

  19. exten => i,1,Playback(option-is-invalid)   
  20. same => n,Goto(s,loop)  

  21. exten => t,1,Playback(are-you-still-there)  
  22. same => n,Goto(s,loop)

  23. [hi-bubblestar]
  24. exten => s,1,Background(hi-bubblestar)
  25. same => n,WaitExten()  
  26. same => n,Hangup()  

  27. exten => 1,1,Goto(viaPSTN,991239123,1)                        ; dial to bubblestar's Mobile via PSTN directly  
  28. exten => 2,1,Goto(viaPSTN,992469246,1)                           ; dial to ckleea's Mobile via PSTN directly
  29. exten => 3,1,Voicemail(3001@default)                                ; Go to voicemail box
  30. exten => 8,1,Goto(IVR,s,1)                                        ; hidden menu for personal dial to IVR
  31. exten => 9,1,Hangup()                                        ; let the caller dials 9 to exit
  32. exten => 0,1,Goto(mainmenu,s,1)                                ; let the caller dials 0 to repeat the menu

  33. exten => i,1,Playback(option-is-invalid)   
  34. same => n,Goto(s,loop)  

  35. exten => t,1,Playback(are-you-still-there)  
  36. same => n,Goto(s,loop)

  37. [hi-ckleea]
  38. exten => s,1,Background(hi-ckleea)
  39. same => n,WaitExten()  
  40. same => n,Hangup()

  41. exten => 1,1,Goto(viaPSTN,991239123,1)                        ; dial to bubblestar's Mobile via PSTN directly  
  42. exten => 2,1,Goto(viaPSTN,992469246,1)                           ; dial to ckleea's Mobile via PSTN directly
  43. exten => 3,1,Voicemail(3001@default)                                ; Go to voicemail box
  44. exten => 8,1,Goto(IVR,s,1)                                        ; hidden menu for personal dial to IVR
  45. exten => 9,1,Hangup()                                        ; let the caller dials 9 to exit
  46. exten => 0,1,Goto(mainmenu,s,1)                                ; let the caller dials 0 to repeat the menu

  47. exten => i,1,Playback(option-is-invalid)   
  48. same => n,Goto(s,loop)  

  49. exten => t,1,Playback(are-you-still-there)  
  50. same => n,Goto(s,loop)

  51. [hi-yhfung]
  52. exten => s,1,Background(hi-yhfung]
  53. same => n,WaitExten()  
  54. same => n,Hangup()

  55. exten => 1,1,Goto(viaPSTN,991239123,1)                        ; dial to bubblestar's Mobile via PSTN directly  
  56. exten => 2,1,Goto(viaPSTN,992469246,1)                           ; dial to ckleea's Mobile via PSTN directly
  57. exten => 3,1,Voicemail(3001@default)                                ; Go to voicemail box
  58. exten => 8,1,Goto(IVR,s,1)                                        ; hidden menu for personal dial to IVR
  59. exten => 9,1,Hangup()                                        ; let the caller dials 9 to exit
  60. exten => 0,1,Goto(mainmenu,s,1)                                ; let the caller dials 0 to repeat the menu

  61. exten => i,1,Playback(option-is-invalid)   
  62. same => n,Goto(s,loop)  

  63. exten => t,1,Playback(are-you-still-there)  
  64. same => n,Goto(s,loop)

  65. [IVR]
  66. exten => _s,1,Wait(1)
  67. same => n,Authenticate(9999,,4)                                ; PIN authentication
  68. same => n,Set(Loop=0)
  69. same => n,While($[${Loop} < 3])
  70. same => n,Background(vm-enter-num-to-call)
  71. same => n,WaitExten(10)                                         ; Wait 10 seconds for user to enter input
  72. same => n,Set(Loop=$[${Loop}+1])
  73. same => n(LoopEnd),EndWhile()
  74. same => n,Playback(vm-goodbye)
  75. same => n,Hangup()                                        ; No input from user, so hangup
  76. exten => i,1,Playback(pbx-invalid)
  77. same => n,Goto(s,7)
  78. exten => t,1,Playback(vm-goodbye)
  79. same => n,Hangup()
  80. exten => h,1,Hangup()
複製代碼

TOP

回復 2# bubblestar


    Thanks. look interesting. I did have similar dialplan before but can't use "s" properly.

TOP

本帖最後由 bubblestar 於 2011-9-11 20:47 編輯

If "s" is not workable (I think telephony card can accommodate "s" more comfortably), you may explicitly indicate your destination phone number such as home or office number and the like in lieu.

Frankly, telephony card is much stronger in recognizing DTMF and "s" and can handle them in a flexible and proper manner.

TOP

For forwarding to the desired Asterisk Server, I don't know whether we should make use of the load balancing capability of DUNDi or not.  If someone knows, please share.

TOP

回復 4# bubblestar


    Agreed. In using purely sip trunk, this are always some minor problems come in and go.

TOP

回復 5# bubblestar


    I will properly use a SIP or IAX command to dial to an extension of other asterisk server.

You have showed a good example to study

TOP

Still some problems in getting long DTMF keys to accept

TOP

Try fine tuning your ATA as well such as relaxdtmf=yes to avoid using strict DTMF option.  Echo cancellation adjust can also help to strengthen the recognition of DTMF signal.

TOP

回復 9# bubblestar

Will try again

TOP

I think I can base on the callerID to forward to any sip/iax machine to do other things. However, this is not a good idea.

I may need to create another IVR menu to do manual transfer based on DTMF keys and PINS.

TOP

本帖最後由 bubblestar 於 2011-9-17 16:29 編輯

Auto-attendant 及 IVR menu 可以寫得千篇萬化,最緊要是切合個人使用習慣和喜好及方便易用。但還需要配合實際網路電訊供應商的DTMF訊號是否能融合,才能達致理想的效果。

再者,例如有時候從北京打入可以食到DTMF Keys + PINS,但也不代表從四川、青島或歐美某地方打入來的電話也一樣食到DTMF Keys + PINS 的。 暫時來說,CallerID 算是比較可靠的辨識媒介了。而且DTMF 訊號技術可能因地區地域不同,有時會導致不同程度的不協調啊。

其實,只要設定幾個主要(重要家人/朋友/親屬) 號碼,轉駁至特定IVR/auto-attendant,提供由自己設定的專項服務,其他人的號碼也可以不需理會,直接接去某條專線或當正常來電看待處理就可以了,不需大費周章。

TOP

已試based on callerID forward to different asterisk machines.

TOP

返回列表