Asterisk参加转移:如何保留来电显示

时间:2015-01-16 10:51:57

标签: asterisk sip

(我是Asterisk的新手。)为什么Asterisk在您上学转学时会在手机上显示asterisk

这是Scenation:

  • 我在我的星号服务器上注册了2个SNOM 300手机和一个软件Switchboard应用程序
  • 当我在电话1上拨打分机号码1499时,它会在总机上响铃
  • 我接听电话,然后将电话转移到电话2.此时,总机正在执行有人值守转接(* 2)
  • 在Asterisk上,通话被放入队列,但是当电话2响铃时,它只显示asterisk而不是电话1的分机号

我正在做的就是看看发生了什么:

当呼叫进入时,它会进入上下文并执行此

exten => _1499,1,Set(CALLERID(name)=${CALLERID(num)})
exten => _1499,n,NoOp(#################### ${CALLERID(num)} ${CALLERID(name)})
exten => _1499,n,Queue(swb_q,tTkK)

在星号上,它将CallerID显示为1904,这是正确的。

当转移呼叫时,它将转到TRANSFER上下文并执行此代码

exten => _19XX,1,Gosub(ENDRECORD,s,1)
exten => _19XX,n,NoOp(#################### ${CALLERID(num)} ${CALLERID(name)})
exten => _19XX,n,Set(_TransToExt=${EXTEN})
exten => _19XX,n,NoOp(IN TRANSFER ${TransToExt})
exten => _19XX,n,Gosub(RECORDING,s,1)
exten => _19XX,n,Dial(Sip/${EXTEN},40,tT,kK)

CALLERID(num)(name)变量不是空白。现在我确定这是因为我在不同的分机或频道上。

如何保留来电的来电显示,当交换机转接来电时,将该CID传递给手机2?

任何帮助将不胜感激。谷歌在转账方面有很多,但我很难找到与此有关的东西。

我看过这个 retain original caller id on Call transfer on asterisk 但是我不确定它是否有用,因为答案中没有太多细节。

1 个答案:

答案 0 :(得分:0)

经过长时间的搜索,我找到了答案。

您可以使用变量继承。 https://wiki.asterisk.org/wiki/display/AST/Variable+Inheritance

这允许我将传入的CID存储到名为EXTERNAL_NUM的变量中,如下所示:

exten => _1499,n,Set(__EXTERNAL_NUM= ${CALLERID(num)})
exten => _1499,n,Queue(swb_q,tTkK)

请注意变量名称中的2x _。 2x _用于多重继承。 1x _用于单继承。请参阅我发布的链接以获得解释。

在我的转移上下文中,我使用此变量而不使用__,如下所示:

exten => _19XX,1,Gosub(ENDRECORD,s,1)
exten => _19XX,n,Set(_TransToExt=${EXTEN})
exten => _19XX,n,NoOp(IN TRANSFER ${TransToExt})
exten => _19XX,n,Gosub(RECORDING,s,1)
exten => _19XX,n,Set(CALLERID(num)=EXTERNAL_NUM)
exten => _19XX,n,Dial(Sip/${EXTEN},40,tT,kK)

希望这可以帮助其他有相同类型问题的人,或者只是需要在某个时候使用变量继承。