拨出电话,来电等待连接

问题描述 投票:0回答:2

早安,

呼叫 (A) 到达 Asterisk。它由我们的拨号方案拾取并路由到 php 文件,该文件的任务是管理呼叫。 使用 MusicOnHold 函数暂停呼叫。到目前为止没问题。

目标是在此等待期间,向客户拨出电话 (B) 并询问他是否愿意接听电话(通过 dtmf)。

如果我们直接执行拨号功能,一旦拨出电话 (B) 被客户接听,电话 A 和 B 就会接通。我们不想要的。

如何在没有立即连接呼叫 A 的情况下在新频道上发起呼叫? 我们必须通过 AMI 吗?

谢谢你的帮助

我们使用了 AGI php 和带有 Gosub 的拨号方案。 由于 PHP 是同步的,因此当呼叫 A 处于暂停状态时,您无法拨打 B 电话。

asterisk agi dialplan
2个回答
0
投票

你做错了。

你应该做什么

  1. 带有 m 参数的拨号命令(播放音乐)
  2. Dial command(same) with U param(sub-macro before connect).

首先播放音乐,然后为询问客户端创建拨号方案。

您还可以在谷歌上搜索“星号隐私宏”,了解它的外观。

这里不需要任何 AGI 或外部例程。\

如果你仍然坚持你做错了 - 你有 app_bridge 和 app_conference。 也可以通过异步 AGI/Stasis 应用程序做一些事情。但这也是错误的方式。


0
投票

谢谢您的回复!

我不明白你在 1) 中说要做的事情是一个带有 m 功能的 Dial 和另一个带有 U 功能的 Dial。 您是在谈论不同的 DIAL 吗?

这是我正在运行的拨号方案:

    [default]


exten => 1236,1,Answer()
;same = n,Set(RECORDFILENAME=in-${STRFTIME(${EPOCH},GMT+1,%Y%m%d%H%M%S)}-${STRREPLACE(UNIQUEID,".","-")})
;same = n,MixMonitor(${RECORDFILENAME}.wav)
same =n, Dial(SIP/0169223128@TRUNKAI2,30,m(default),U(subDialer)); L'appel est transfere
exten => 1236,n,Hangup()


[subDialer]


exten => s,1,Verbose("Here we are in a subroutine! Let's listen to some weasels")
 same => NoOp("we are in a SubDialer")
 same => n,agi(googletts.agi,"we are in a SubDialer !!",fr)
 same => n,agi(googletts.agi,"and go back !!",en)
 same => NoOp("and Go back")
 same => n,Return()

(我故意没有把给被叫者的问题/答案插入Sub)

在这个脚本中,当拨打电话时,我在电话 (A) 上播放音乐,但一旦接听电话 (B),我们就会进行通信(没有播放 Sub)。

如果我删除 m 功能,我将播放 Sub,然后链接。但是,如果 (B) 在 Sub 完成之前挂断,则呼叫 (A) 也会挂断。这表明它们已经桥接,我不想要。

感谢您的启迪:)

© www.soinside.com 2019 - 2024. All rights reserved.