router.dynamic

这两天时间都花在router.dynamic上了~

本来以为是连接mysql的原因,于是把代码改成脱离Asterisk运行,无误...

但是在Asterisk(extension)中调用却不能正常运行!

 

11:55:24

在echo中执行$AGI->exec('set','FRI2_AGISTATUS=1');在CLI中会打印出调试信息

但是在调用router的时候,却看不到...真是奇怪

 

13:42:48

CONTINUE...

 

13:42:59

     -- Executing [101@from-exten-sip:5] AGI("SIP/100-b7c07090", "agi://127.0.0.1/router?routerline=1&callednum=101") in new stack
AGI Tx >> agi_network: yes
AGI Tx >> agi_network_script: router?routerline=1&callednum=101
AGI Tx >> agi_request: agi://127.0.0.1/router?routerline=1&callednum=101
AGI Tx >> agi_channel: SIP/100-b7c07090
AGI Tx >> agi_language: cn
AGI Tx >> agi_type: SIP
AGI Tx >> agi_uniqueid: freeiris2-1272609009.31
AGI Tx >> agi_callerid: 100
AGI Tx >> agi_calleridname: 100
AGI Tx >> agi_callingpres: 0
AGI Tx >> agi_callingani2: 0
AGI Tx >> agi_callington: 0
AGI Tx >> agi_callingtns: 0
AGI Tx >> agi_dnid: 101
AGI Tx >> agi_rdnis: unknown
AGI Tx >> agi_context: from-exten-sip
AGI Tx >> agi_extension: 101
AGI Tx >> agi_priority: 5
AGI Tx >> agi_enhanced: 0.0
AGI Tx >> agi_accountcode: 100
AGI Tx >>
AGI Rx << GET VARIABLE FRI2_SESSIONID
AGI Tx >> 200 result=0
AGI Rx << GET VARIABLE CDR(uniqueid)
AGI Tx >> 200 result=1 (freeiris2-1272609009.31)
AGI Rx << GET VARIABLE FRI2_ROUTERLINE
AGI Tx >> 200 result=1 (1)
    -- AGI Script agi://127.0.0.1/router?routerline=1&callednum=101 completed, returning 0

以上是router调用时,cli打印出的调试信息...感觉是在参数初始化的步骤就退出了吧....有部分关键参数未获取到值?

 

14:36:00

再次使用echo来对比调试信息!

    my $MYSESS = $self->_callsession('router');
    my $FRI2_SESSIONID = $MYSESS->{'FRI2_SESSIONID'};

是这两段语句有问题,注释掉function就可以继续执行了...以下是注释掉后的调试信息

    -- Executing [101@from-exten-sip:1] AGI("SIP/100-b7c05a68", "agi://127.0.0.1/echo?callednum=101") in new stack
AGI Tx >> agi_network: yes
AGI Tx >> agi_network_script: echo?callednum=101
AGI Tx >> agi_request: agi://127.0.0.1/echo?callednum=101
AGI Tx >> agi_channel: SIP/100-b7c05a68
AGI Tx >> agi_language: cn
AGI Tx >> agi_type: SIP
AGI Tx >> agi_uniqueid: freeiris2-1272609518.35
AGI Tx >> agi_callerid: 100
AGI Tx >> agi_calleridname: 100
AGI Tx >> agi_callingpres: 0
AGI Tx >> agi_callingani2: 0
AGI Tx >> agi_callington: 0
AGI Tx >> agi_callingtns: 0
AGI Tx >> agi_dnid: 101
AGI Tx >> agi_rdnis: unknown
AGI Tx >> agi_context: from-exten-sip
AGI Tx >> agi_extension: 101
AGI Tx >> agi_priority: 1
AGI Tx >> agi_enhanced: 0.0
AGI Tx >> agi_accountcode: 100
AGI Tx >>
AGI Rx << EXEC set "FRI2_AGISTATUS=1"
    -- AGI Script Executing Application: (set) Options: (FRI2_AGISTATUS=1)
AGI Tx >> 200 result=0
AGI Rx << EXEC answer ""
    -- AGI Script Executing Application: (answer) Options: ()
AGI Tx >> 200 result=0
AGI Rx << HANGUP
AGI Tx >> 200 result=1
  == Spawn extension (from-exten-sip, 101, 1) exited non-zero on 'SIP/100-b7c05a68'

 

14:36:43

在router中注释掉这两行...

    -- Executing [101@from-exten-sip:5] AGI("SIP/100-b7c05a68", "agi://127.0.0.1/router?routerline=1&callednum=101") in new stack
AGI Tx >> agi_network: yes
AGI Tx >> agi_network_script: router?routerline=1&callednum=101
AGI Tx >> agi_request: agi://127.0.0.1/router?routerline=1&callednum=101
AGI Tx >> agi_channel: SIP/100-b7c05a68
AGI Tx >> agi_language: cn
AGI Tx >> agi_type: SIP
AGI Tx >> agi_uniqueid: freeiris2-1272609374.34
AGI Tx >> agi_callerid: 100
AGI Tx >> agi_calleridname: 100
AGI Tx >> agi_callingpres: 0
AGI Tx >> agi_callingani2: 0
AGI Tx >> agi_callington: 0
AGI Tx >> agi_callingtns: 0
AGI Tx >> agi_dnid: 101
AGI Tx >> agi_rdnis: unknown
AGI Tx >> agi_context: from-exten-sip
AGI Tx >> agi_extension: 101
AGI Tx >> agi_priority: 5
AGI Tx >> agi_enhanced: 0.0
AGI Tx >> agi_accountcode: 100
AGI Tx >>
    -- AGI Script agi://127.0.0.1/router?routerline=1&callednum=101 completed, returning 0
...少了点输出,问题依旧~

    my $MYSESS = $self->_callsession('router');
    my $FRI2_SESSIONID = $MYSESS->{'FRI2_SESSIONID'};

现在的关键是搞清楚这两行代码做了什么...$FRI2_SESSIONID只在这里赋值,后面的代码都没有用到这个参数

$MYSESS在后面倒是有用到...嗯,那保留第一行再试试

 

14:43:36

调试信息不变,问题没有解决...echo尝试,也不行,试试用被作者注释掉的那行代码

 #my    $FRI2_SESSIONID = $self->_callsession('action=router');

问题依旧...这两行代码看来不是简单的执行了两个赋值操作啊=.=

_callsession('router')难道是从router表中取出sessionid的值?

但是router表中根本没有seesionid字串啊!!

 

15:20:49

多方查找_callsession()方法未果=.=

为什么agispeedy连文档都找不到一个!~

 

15:35:26

在freeiris2/agimod/common.static下找到_callsession的源码0.0

不过是被注释掉的...不知道有没有用,现研究下吧

 

15:37:10

其中语句和调试信息的输出还算匹配,继续研究

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值