这是我目前使用的脚本,callback()里的供应商的先后次序很关键:
如果直接接通家里的ATA电话,一定要把它放在前面,然后才打回中国去。如果要接到外面的电话上去,比如你的手机,有些供应商不行,比如betamax不行,CallCentric可以。用“&”连接几个callback(),可以实现连呼,比如先接家里,没人再转到手机上。
下面是这样的:
1)Sipgate在中国来的号码前加了011,然后是86,所以做相应处理。
2)如果是从13826221111打来的(胡锦涛用来打美国的热线),就接到我的手机(0018177292222)。
3)来自中国的别的号码,则直接接到家里(@local)。
4)用“#”屏蔽掉的那些行是我用美国手机(6092353333)测试时用的,试好了就把它们这样屏蔽掉,把上面的一行恢复。这样试验时不需要真的从中国打过来。
5)如果是其它的供应商的话,字头要做相应的更改。
6)这个不是很容易,没有编过程的,最好请朋友帮忙。
sys.Trace = false
cid = req.Header.From.FromURI.User
sys.Log("call from #{req.Header.From.FromURI.ToString()} to #{req.URI.User}.")
# callback processing
case cid
when /^01186/ then
#when /^609/ then
cid = cid.to_str[3,20]
case cid
when /^8613826221111/ then
#when /^235/ then
sys.Callback("0018177292222@CC","00#{cid}@RG",15)
#sys.Callback("0018177292222@CC","001609#{cid}@RG",15)
sys.Respond(480, "#{sys.Username} Not available")
else
sys.Callback("#{sys.Username}@local","00#{cid}@RG",15)
#sys.Callback("#{sys.Username}@local","001609#{cid}@RG",15)
sys.Respond(480, "#{sys.Username} Not available")
end
else
if sys.IsAvailable() then
sys.Dial("#{sys.Username}@local",30)
#sys.Dial("Enter Number@VD",30)
sys.Respond(480, "#{sys.Username} Not available")
else
#sys.Dial("Enter Number@VD",30)
sys.Respond(480, "#{sys.Username} Not available")
end
end