Callback: Difference between revisions
(4 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
A VSP that does this well is [http://pennytel.com PennyTel]. This will allow you to make calls from your home or mobile at VoIP rates saving the investment on VoIP hardware. | A VSP that does this well is [http://pennytel.com PennyTel]. This will allow you to make calls from your home or mobile at VoIP rates saving the investment on VoIP hardware. | ||
If you are interested in looking at a WEB based version of this function with more functionality have a look at [[WEB_Calling]]. | |||
== How to Use Callback == | == How to Use Callback == | ||
Line 77: | Line 79: | ||
exten => s,n,System(echo Priority: 1 >> /tmp/${NumToCall}) | exten => s,n,System(echo Priority: 1 >> /tmp/${NumToCall}) | ||
exten => s,n,System(echo sleep 15 > /tmp/${NumToCall}.2) | exten => s,n,System(echo sleep 15 > /tmp/${NumToCall}.2) | ||
exten => s,n,System(echo | exten => s,n,System(echo mv /tmp/${NumToCall} /var/spool/asterisk/outgoing >> /tmp/${NumToCall}.2) | ||
exten => s,n,System(chmod 775 /tmp/${NumToCall}.2) | exten => s,n,System(chmod 775 /tmp/${NumToCall}.2) | ||
exten => s,n,System(/tmp/${NumToCall}.2 &) | exten => s,n,System(/tmp/${NumToCall}.2 &) | ||
exten => s,n,Hangup | exten => s,n,Hangup | ||
</pre> | </pre> | ||
=== Part 3 callback with menu === | === Part 3 callback with menu === | ||
As I have multipe people with callback abilities to my system I want to present each user with thier own speed dial menu system. Because of this my callback context will call a different context based on CID. | As I have multipe people with callback abilities to my system I want to present each user with thier own speed dial menu system. Because of this my callback context will call a different context based on CID. | ||
Line 148: | Line 151: | ||
exten => t,n,HangUp | exten => t,n,HangUp | ||
</pre> | </pre> | ||
= Extras = | |||
Make sure you have a look at [[Callback Advanced Call Routing]] for more advanced call handling. | |||
[[Category : Asterisk]] | [[Category : Asterisk]] |
Latest revision as of 00:06, 29 November 2008
Introduction
What is Callback
Callback is a feature of a system that recoginises an incomming call based on Caller ID and disconnects the call so the person making the call is not charge for the call. The system that you called then calls you back based on the Caller ID of the incoming call.
A VSP that does this well is PennyTel. This will allow you to make calls from your home or mobile at VoIP rates saving the investment on VoIP hardware.
If you are interested in looking at a WEB based version of this function with more functionality have a look at WEB_Calling.
How to Use Callback
Using Asterisk you can have a mobile phone that costs you absoloutly nohting in phone calls. Choosing a Telco. provider that does not charge any monthly fees means you can have a phone that cost you absoloutly zero dollars. This is becasue Asterisk (or some other system) is calling your mobile and then bridging another call together.
How do I use Callback
I have configured my Asterisk server to call me and then prompt me with an IVR menu system. This system then prompts me with press 0 for home phones, 1 for Wifes Mobile, 2 for mate1 mobile, 3 for mate 2 mobile, 9 for dialtone. etc.
My Configuration Files
Parts Described
There are 3 parts to the configuration.
Part 1: | This part is the accepting of an incoming call and then recognising the call based on Caller ID and then hanging up so the calling person is not charged for the call. | ||
Part 2: | The second part is the creation of a file that will contain all the required information for Asterisk to call back the calling person. | ||
Part 3: | The final part is the process of the system calling the person back and then presenting them with a menu as to find out who they want to call. |
Part 1 Callback
The system will read the incoming call based on Caller ID and then terminating as so the calling person is not charged for the call.
; Accepted Call Back Numbers exten => DID/CID,1,Macro(createfile,CID,SIP/GoTalk,callback,CID-Display) exten => DID/CID,n,HangUp
In the example above:
- replace DID with the number that is assigned to your system.
- replace CID with the phone number that is allowed to have a callback feature
- SIP/GoTalk is the trunk that Asterisk will use to place the call. Use the appropriate setting for your configuration.
- callback is the context that will be used when the system make a call
- replace CID-Display to be that of what you want Asterisk to display CID
information when making a call. It is in the form of "Name" <number>
Put your name between "" and number between <> making sure you do no remove the "" and <>.
Part 2 macro-createfile
Create a context called macro-createfile as below.
[macro-createfile] ; {ARG1} Number to Dial 0312341234 ; {ARG2} Device/Trunk SIP/VSP_Name ; {ARG3} Context from-internal ; {ARG4} CallerID "Name" <number> exten => s,1,Set(NumToCall=${ARG1}) exten => s,n,System(echo Channel: ${ARG2}/${NumToCall} > /tmp/${NumToCall}) exten => s,n,System(echo CallerID: ${ARG4} >> /tmp/${NumToCall}) exten => s,n,System(echo MaxRetries: 0 >> /tmp/${NumToCall}) exten => s,n,System(echo RetryTime: 120 >> /tmp/${NumToCall}) exten => s,n,System(echo WaitTime: 20 >> /tmp/${NumToCall}) exten => s,n,System(echo Context: ${ARG3} >> /tmp/${NumToCall}) exten => s,n,System(echo Extension: ${NumToCall} >> /tmp/${NumToCall}) exten => s,n,System(echo Priority: 1 >> /tmp/${NumToCall}) exten => s,n,System(echo sleep 15 > /tmp/${NumToCall}.2) exten => s,n,System(echo mv /tmp/${NumToCall} /var/spool/asterisk/outgoing >> /tmp/${NumToCall}.2) exten => s,n,System(chmod 775 /tmp/${NumToCall}.2) exten => s,n,System(/tmp/${NumToCall}.2 &) exten => s,n,Hangup
As I have multipe people with callback abilities to my system I want to present each user with thier own speed dial menu system. Because of this my callback context will call a different context based on CID.
[callback] exten => 041xxxxxxx,1,Goto(callback-menu-dk,s,1) exten => 041xxxxxxx,n,HangUp exten => 041xxxxxxx,1,Goto(callback-menu-lk,s,1) exten => 041xxxxxxx,n,HangUp
[callback-menu-dk] exten => s,1,Answer() exten => s,n,Set(TRY=0) exten => s,n(start),Set(TRY=$[${TRY} + 1]) exten => s,n,GoToIf($[${TRY} > 3]?t,1) exten => s,n,BackGround(ivr/callback/dk-callback) exten => s,n,Playback(beep) exten => s,n,WaitExten(5) exten => s,n,BackGround(au/vm-sorry) exten => s,n,Goto(start) ;Call phones at home exten => 0,1,Set(CALLERID(all)="David Klaverstyn" <041xxxxxxx>) exten => 0,n,Dial(${EVERYONE},${ringer}) exten => 0,n,VoiceMail(200@default,us) exten => 0,n,HangUp ;Call Lees Mobile exten => 1,1,Dial(SIP/GoTalk/041xxxxxxx,70) exten => 1,n,Dial(SIP/PennyTel/6141xxxxxxx,70) exten => 1,n,HangUp ;Call Mum Home exten => 2,1,Dial(IAX2/klavo/xxx,70) exten => 2,n,Dial(SIP/GoTalk/0755xxxxxx,70) exten => 2,n,Dial(SIP/PennyTel/61755xxxxxx,70) exten => 2,n,Dial(SIP/MyNetFone/0755xxxxxx,70) exten => 2,n,HangUp ;Call Helen Klaverstyn Mobile exten => 3,1,Dial(SIP/GoTalk/042xxxxxxx,70) exten => 3,n,Dial(SIP/PennyTel/6142xxxxxxx,70) exten => 3,n,HangUp ;Call Dad Smith Mobile exten => 4,1,Dial(SIP/GoTalk/040xxxxxxx,70) exten => 4,n,Dial(SIP/PennyTel/6140xxxxxxx,70) exten => 4,n,HangUp ;Goto a dialtone exten => 9,1,DISA(no-password|internal) exten => 9,n,HangUp exten => i,1,Playback(au/please-try-again) exten => i,n(start),Set(TRY=$[${TRY} - 1]) exten => i,n,Goto(s,start) exten => t,1,Playback(au/goodbye) exten => t,n,HangUp
Extras
Make sure you have a look at Callback Advanced Call Routing for more advanced call handling.