s*k 发帖数: 507 | 1 使用Google Voice是不是这样的:在GV中播号,然后自己的电话响,对方的也响,然后
拿起来通话
那么如果设置好Asterisk+Pygooglevoice以后,是不是也是这样?需要用电话拨号,然
后自己挂
掉,然后铃响了以后再接起来?
如果是这样也太麻烦了,估计LD不会批准.岂不是Asterisk白折腾了。不如老老实实给Gizmo5或者
SipGate交钱,最多GV号码同时转接到Gizmo5和SipGate号码上,然后ATA直接同时登陆Gizmo5和
SipGate,作为冗余。 | a9 发帖数: 21638 | 2 不是。
用asterisk+pygooglevoice以后,是你拨号,然后asterisk执行pygooglexxxxx,然后
google回拨,asterisk自动把这个回拨绑定到你还没挂的这通电话上,然后google
voice拨对方号码。
给Gizmo5或者
陆Gizmo5和
【在 s*k 的大作中提到】 : 使用Google Voice是不是这样的:在GV中播号,然后自己的电话响,对方的也响,然后 : 拿起来通话 : 那么如果设置好Asterisk+Pygooglevoice以后,是不是也是这样?需要用电话拨号,然 : 后自己挂 : 掉,然后铃响了以后再接起来? : 如果是这样也太麻烦了,估计LD不会批准.岂不是Asterisk白折腾了。不如老老实实给Gizmo5或者 : SipGate交钱,最多GV号码同时转接到Gizmo5和SipGate号码上,然后ATA直接同时登陆Gizmo5和 : SipGate,作为冗余。
| s*k 发帖数: 507 | 3 哇,A大出手了!明白了!
是不是extension中这句
exten => _NXXNXXXXXX,n,Set(DB(gv_dialout/channel)=${CHANNEL})
是用来绑定的?
而
exten => _NXXNXXXXXX,n,System(gvoice -e ${GV_ACCT_NAME} -p ${GV_ACCT_PASS}
call ${EXTEN} 1${SipGate_DID})
显然是用外部python程序来播号。
【在 a9 的大作中提到】 : 不是。 : 用asterisk+pygooglevoice以后,是你拨号,然后asterisk执行pygooglexxxxx,然后 : google回拨,asterisk自动把这个回拨绑定到你还没挂的这通电话上,然后google : voice拨对方号码。 : : 给Gizmo5或者 : 陆Gizmo5和
| a9 发帖数: 21638 | 4 前面一句是保存你当前的channel到数据库中。
后面在gv拨进来后有一句,是检索数据库中有没有上面的记录,如果有,就绑定(
bridge)
然后
【在 s*k 的大作中提到】 : 哇,A大出手了!明白了! : 是不是extension中这句 : exten => _NXXNXXXXXX,n,Set(DB(gv_dialout/channel)=${CHANNEL}) : 是用来绑定的? : 而 : exten => _NXXNXXXXXX,n,System(gvoice -e ${GV_ACCT_NAME} -p ${GV_ACCT_PASS} : call ${EXTEN} 1${SipGate_DID}) : 显然是用外部python程序来播号。
| s*k 发帖数: 507 | 5 了解了
是不是
exten => ${SipGate_DID},n,Bridge(${DB_DELETE(gv_dialout/channel)},p)
我觉得了解了原理,可以自己写个script代替pygooglevoice,似乎就是自动访问google voice
的网页,登陆,并且拨电话就好了。
【在 a9 的大作中提到】 : 前面一句是保存你当前的channel到数据库中。 : 后面在gv拨进来后有一句,是检索数据库中有没有上面的记录,如果有,就绑定( : bridge) : : 然后
| a9 发帖数: 21638 | 6 可以呀,我就写了一个放app engine上了。用java写的。
要是在router上用,就不用装python了。python占系统资源还是不少的。
google voice
【在 s*k 的大作中提到】 : 了解了 : 是不是 : exten => ${SipGate_DID},n,Bridge(${DB_DELETE(gv_dialout/channel)},p) : 我觉得了解了原理,可以自己写个script代替pygooglevoice,似乎就是自动访问google voice : 的网页,登陆,并且拨电话就好了。
| s*k 发帖数: 507 | 7 用php+curl写的拨号程序弄好了,用命令行运行gvoice {number}的时候,自家电话能
响,提起来能接通
但是好像用电话拨号不能触发这个script
[gv-outbound]
exten => _NXXNXXXXXX,1,NoOp()
exten => _NXXNXXXXXX,n,Set(DB(gv_dialout/channel)=${CHANNEL})
exten => _NXXNXXXXXX,n,System(gvoice ${EXTEN})
exten => _NXXNXXXXXX,n,Wait(20)
exten => _NXXNXXXXXX,n,Hangup()
好像System(gvoice ${EXTEN})根本没有运行,不知道我这里搞错了什么了
【在 a9 的大作中提到】 : 可以呀,我就写了一个放app engine上了。用java写的。 : 要是在router上用,就不用装python了。python占系统资源还是不少的。 : : google voice
| a9 发帖数: 21638 | 8 加上gvoice的路径试试看。
【在 s*k 的大作中提到】 : 用php+curl写的拨号程序弄好了,用命令行运行gvoice {number}的时候,自家电话能 : 响,提起来能接通 : 但是好像用电话拨号不能触发这个script : [gv-outbound] : exten => _NXXNXXXXXX,1,NoOp() : exten => _NXXNXXXXXX,n,Set(DB(gv_dialout/channel)=${CHANNEL}) : exten => _NXXNXXXXXX,n,System(gvoice ${EXTEN}) : exten => _NXXNXXXXXX,n,Wait(20) : exten => _NXXNXXXXXX,n,Hangup() : 好像System(gvoice ${EXTEN})根本没有运行,不知道我这里搞错了什么了
| s*k 发帖数: 507 | 9 加了,似乎没效果
是不是_NXXNXXXXXX没匹配上任何东西?asterisk的extension配置文件实在看不懂。
现在line1直连Gizmo5,用#选择
line2连asterisk,打算打美国用GV,打中国用其它
试了拨号1xxxxxxxxxx,似乎不行
目前完整的extension.conf如下
[globals]
GV_NUMBER=我的GV号码
SipGate_DID=我的SipGate号码
SipGate_ID=我的SipGate ID
[from-trunk]
include => ext-did
;这段还没调试,还没注册nonoh
[from-internal]
;exten => _011X.,1,Hangup
;exten => _01186X.,1,Set(CALLERID(num)=${GV_NUMBER})
;exten => _01186X.,n,Dial(SIP/${EXTEN}@nonoh,50,trg)
;exten => _01186X.,n,Congestion
;exten => _8[06-8]X.,1,Set(CALLERID(num)=${GV_NUMBER})
;exten => _8[06-8]X.,n,Dial(SIP/${EXTEN}@SipGate,30,trg)
;exten => _8[06-8]X.,n,Congestion
;exten => _NXXNXXXXXX,1,Dial(Local/${EXTEN}@gv-outbound/n)
exten => _X.,1,Dial(SIP/${EXTEN}@SipGate,30,trg)
[gv-outbound]
exten => _NXXNXXXXXX,1,NoOp()
exten => _NXXNXXXXXX,n,Set(DB(gv_dialout/channel)=${CHANNEL})
exten => _NXXNXXXXXX,n,System(/mnt/apps/asterisk/gvoice ${EXTEN})
exten => _NXXNXXXXXX,n,Wait(20)
exten => _NXXNXXXXXX,n,Hangup()
[ext-local]
exten => 100a,1,Dial(SIP/100a)
exten => 100a,2,Set(VOLUME(TX)=2)
exten => 100a,n,Hangup
[ext-did]
exten => ${SipGate_DID},1,GotoIf($[${CALLERID(num)}=~"(\d)?${GV_NUMBER}"
> 0]?:normalcall)
exten => ${SipGate_DID},n,Bridge(${DB_DELETE(gv_dialout/channel)},p)
exten => ${SipGate_DID},n,Hangup()
exten => ${SipGate_DID},n(normalcall),Goto(ext-local,100a,1)
;不知道为什么,接电话的时候送进来好像是1xxxxe0之类的号码,只能copy了上面的
exten => ${SipGate_ID},1,GotoIf($[${CALLERID(num)}=~"(\d)?${SipGate_ID}"
> 0]?:normalcall)
exten => ${SipGate_ID},n,Bridge(${DB_DELETE(gv_dialout/channel)},p)
exten => ${SipGate_ID},n,Hangup()
exten => ${SipGate_ID},n(normalcall),Goto(ext-local,100a,1)
【在 a9 的大作中提到】 : 加上gvoice的路径试试看。
| a9 发帖数: 21638 | 10 似你的_NXXNXXXXXX不match1xxxx,N代表2-9
另外,你用asterisk -rvvvvvvvvvvvvvvvvvvvvvvvv 多加几个V连上,看看debug输出有
没有进到这个extensions里面。
面的
【在 s*k 的大作中提到】 : 加了,似乎没效果 : 是不是_NXXNXXXXXX没匹配上任何东西?asterisk的extension配置文件实在看不懂。 : 现在line1直连Gizmo5,用#选择 : line2连asterisk,打算打美国用GV,打中国用其它 : 试了拨号1xxxxxxxxxx,似乎不行 : 目前完整的extension.conf如下 : [globals] : GV_NUMBER=我的GV号码 : SipGate_DID=我的SipGate号码 : SipGate_ID=我的SipGate ID
| | | r****t 发帖数: 10904 | 11 你程序 4 小时就写好了?这种用 php login googlevoice 的程序不简单吧...
【在 s*k 的大作中提到】 : 用php+curl写的拨号程序弄好了,用命令行运行gvoice {number}的时候,自家电话能 : 响,提起来能接通 : 但是好像用电话拨号不能触发这个script : [gv-outbound] : exten => _NXXNXXXXXX,1,NoOp() : exten => _NXXNXXXXXX,n,Set(DB(gv_dialout/channel)=${CHANNEL}) : exten => _NXXNXXXXXX,n,System(gvoice ${EXTEN}) : exten => _NXXNXXXXXX,n,Wait(20) : exten => _NXXNXXXXXX,n,Hangup() : 好像System(gvoice ${EXTEN})根本没有运行,不知道我这里搞错了什么了
| s*k 发帖数: 507 | 12 chan_sip.c:17295 handle_request_invite: Call from '100a' to extension
'7474743246' rejected because extension not found
怎么回事啊?
dialplan show的时候明明有:
[ Context 'gv-outbound' created by 'pbx_config' ]
'_NXXNXXXXXX' => 1. NoOp() [pbx_config]
2. Set(DB(gv_dialout/channel)=${CHANNEL}) [pbx_config]
3. System(/mnt/apps/asterisk/gvoice ${EXTEN}) [pbx_config]
4. Wait(20) [pbx_config]
5. Hangup() [pbx_config]
【在 a9 的大作中提到】 : 似你的_NXXNXXXXXX不match1xxxx,N代表2-9 : 另外,你用asterisk -rvvvvvvvvvvvvvvvvvvvvvvvv 多加几个V连上,看看debug输出有 : 没有进到这个extensions里面。 : : : : 面的
| i**w 发帖数: 883 | 13 sip.conf里面100a的context没有设吧 | a9 发帖数: 21638 | 14 你sip.conf里,sipgate配的exten是多少?应该配成你sip.conf里,sipgate配的exten
是多少?应该配成ext-did
另外,我没在extensions里面这样用过变量。
出有
【 】 Ctrl-Q 求救 状态 [插入][1,47][ ][ ] 时间【Sun Feb 6 18:18】
出有
【在 s*k 的大作中提到】 : chan_sip.c:17295 handle_request_invite: Call from '100a' to extension : '7474743246' rejected because extension not found : 怎么回事啊? : dialplan show的时候明明有: : [ Context 'gv-outbound' created by 'pbx_config' ] : '_NXXNXXXXXX' => 1. NoOp() [pbx_config] : 2. Set(DB(gv_dialout/channel)=${CHANNEL}) [pbx_config] : 3. System(/mnt/apps/asterisk/gvoice ${EXTEN}) [pbx_config] : 4. Wait(20) [pbx_config] : 5. Hangup() [pbx_config]
| s*k 发帖数: 507 | 15 实在搞不定了,目前的状态是:
Executing [7474743246@from-internal:1] Dial("SIP/100a-2871c000",
"Local/7474743246@gv-outbound/n") in new stack
== Everyone is busy/congested at this time (1:0/0/1)
-- Auto fallthrough, channel 'SIP/100a-2871c000' status is
'CHANUNAVAIL'
sip.conf里面
[100a]
type=friend
host=dynamic
secret=我的密码
context=from-internal
allow=ulaw
port=5062
nat=no
dtmfmode=rfc2833
canreinvite=no
deny=0.0.0.0/0.0.0.0
permit=10.10.0.0/255.255.255.0
extension.conf里面
[from-internal]
exten => _NXXNXXXXXX,1,Dial(Local/${EXTEN}@gv-outbound/n)
[gv-outbound]
exten => _NXXNXXXXXX,1,NoOp()
exten => _NXXNXXXXXX,n,Set(DB(gv_dialout/channel)=${CHANNEL})
exten => _NXXNXXXXXX,n,System(/mnt/app/asterisk/gvoice ${EXTEN})
exten => _NXXNXXXXXX,n,Wait(20)
exten => _NXXNXXXXXX,n,Hangup()
exten
【在 a9 的大作中提到】 : 你sip.conf里,sipgate配的exten是多少?应该配成你sip.conf里,sipgate配的exten : 是多少?应该配成ext-did : 另外,我没在extensions里面这样用过变量。 : : 出有 : 【 】 Ctrl-Q 求救 状态 [插入][1,47][ ][ ] 时间【Sun Feb 6 18:18】 : 出有
| s*k 发帖数: 507 | 16 好像有,但是不知道对不对,
哪里可以找到extension的配置说明文档看看
不是很难,先登陆,然后取得_rnr_se,然后拨号,三步就可以了
我有别人用shell写的script作参考
【在 i**w 的大作中提到】 : sip.conf里面100a的context没有设吧
| a9 发帖数: 21638 | 17 google呀。
【在 s*k 的大作中提到】 : 好像有,但是不知道对不对, : 哪里可以找到extension的配置说明文档看看 : : 不是很难,先登陆,然后取得_rnr_se,然后拨号,三步就可以了 : 我有别人用shell写的script作参考
| a9 发帖数: 21638 | 18 host=dynamic
secret=我的密码
context=from-internal
中的context=from-internal改成gv-outbound
【在 s*k 的大作中提到】 : 实在搞不定了,目前的状态是: : Executing [7474743246@from-internal:1] Dial("SIP/100a-2871c000", : "Local/7474743246@gv-outbound/n") in new stack : == Everyone is busy/congested at this time (1:0/0/1) : -- Auto fallthrough, channel 'SIP/100a-2871c000' status is : 'CHANUNAVAIL' : sip.conf里面 : [100a] : type=friend : host=dynamic
| s*k 发帖数: 507 | 19 不行了,实在折腾不动了
现在的进展是,如果拨号以后过一段时间挂掉,原来拨号的那个电话就能响,接起来就
能与拨的那个电话通话.但是不能自动就接上
顺便说下,我这里func_db.so居然default没有load
今天谢谢大家(A9,ianw, repast)的帮忙,特别是A9! | r****t 发帖数: 10904 | 20
这个后面应该紧接着一条
【在 s*k 的大作中提到】 : 实在搞不定了,目前的状态是: : Executing [7474743246@from-internal:1] Dial("SIP/100a-2871c000", : "Local/7474743246@gv-outbound/n") in new stack : == Everyone is busy/congested at this time (1:0/0/1) : -- Auto fallthrough, channel 'SIP/100a-2871c000' status is : 'CHANUNAVAIL' : sip.conf里面 : [100a] : type=friend : host=dynamic
| | | r****t 发帖数: 10904 | 21 load 了 func_db.so 以后这个问题还有?
这个状态说明 asterisk 注册到 provider, ata -> asterisk 啥的都正常。
inbound context 里面有没有判断是否是从 gv 来的回拨?
[inbound-gv]
; _X. matches any number starting with non-zero(?)
exten => _X.,1,Set(DID_EXTEN=${SIP_HEADER(To):5})
exten => _X.,n,Set(DID_EXTEN=${CUT(DID_EXTEN,@,1)})
exten => _X.,n,Set(DID_CID=${CALLERID(num)})
exten => _X.,n,NoOp(Incoming call from ${DID_CID:-10})
exten => _X.,n,GotoIf($[${DID_CID:-10} = 我的GV号码]?:normalcall)
; gizmo5 reports +1xxx, sipgate xxx
exten => _X.,n,NoOp(This is calling from GV)
exten => _X.,n,NoCDR()
exten => _X.,n,Bridge(${DB_DELETE(gv_dialout/channel)})
exten => _X.,n,Hangup()
exten => _X.,n(normalcall),Goto(from-trunk,${DID_EXTEN},1)
exten => _X.,n,Hangup()
; inbound
[from-trunk]
exten => _X.,1,Dial(SIP/199&SIP/ata&SIP/androidphone)
【在 s*k 的大作中提到】 : 不行了,实在折腾不动了 : 现在的进展是,如果拨号以后过一段时间挂掉,原来拨号的那个电话就能响,接起来就 : 能与拨的那个电话通话.但是不能自动就接上 : 顺便说下,我这里func_db.so居然default没有load : 今天谢谢大家(A9,ianw, repast)的帮忙,特别是A9!
| s*k 发帖数: 507 | 22 搞定了
原来送进来的是我的SipGate Account no,就是那个11xxxxe0的号码,然后没有合适的
匹配
不容易啊, | r****t 发帖数: 10904 | 23 这个是你 sip.conf 注册行自己指定的吧?
【在 s*k 的大作中提到】 : 搞定了 : 原来送进来的是我的SipGate Account no,就是那个11xxxxe0的号码,然后没有合适的 : 匹配 : 不容易啊,
| s*k 发帖数: 507 | 24 是不是这个?
fromuser=
【在 r****t 的大作中提到】 : 这个是你 sip.conf 注册行自己指定的吧?
| a9 发帖数: 21638 | 25 register=...... / 斜线后面的。
【在 s*k 的大作中提到】 : 是不是这个? : fromuser=
| s*k 发帖数: 507 | 26 完全搞定,多谢
【在 a9 的大作中提到】 : register=...... / 斜线后面的。
|
|