当用户拨打我的pbx时,他需要输入另一个电话号码。然后星号应该拨打该号码,当该号码的所有者接听电话时,星号应播放声音。
拨打我的pbx的用户可以直接收听另一个电话,他会听到pbx播放的声音和用户的声音。
这样做的最佳方式是什么?
答案 0 :(得分:2)
最好(也是最简单)的方式 - 让用户参加会议并为同一会议创建2个电话。
一个人播放声音,一个人打电话给其他用户。
有关如何创建呼叫,请参阅:
http://www.voip-info.org/wiki/view/Asterisk+auto-dial+out
Chanspy将创建类似于会议的结构,但它更简单的控制(静音/取消静音)会议。
答案 1 :(得分:1)
这是我的解决方案
* 我用AEL写的,更容易理解
首先我假设您有要播放的被叫号码和文件:
context Start
{
catch s {
Wait(1);
...
__NumberToDial=<Number that caller picked>;
FileName=<File you want to play>;
...
// I used SHARED variables to pass all the necessary data to sub channel
SHARED(FileName)=${FileName};
__Channel="${CHANNEL(name)}";
Dial(Local/${CALLERID(num)}@Originate/n,,g);
}
}
context Originate {
_X. => {
Originate(SIP/<YourDialOutTrunk>/${NumberToDial},exten,Play,${Channel},1);
if (${ORIGINATE_STATUS}!=SUCCESS)
{
//do stuff if not connected...
}
else
ChanSpy(,qsSg(${Channel}));
}
}
context Play {
_X. => {
Channel="${CUT(EXTEN,?,1)}";
Set(SPYGROUP=${Channel});
FileName=${SHARED(FileName,${Channel})};
Playback(${FileName});
}
}
* 如果您想允许私聊/谈话,请向ChanSpy添加w
选项
我没试过这个耳语!
你需要添加catch =&gt; h无处不在,还有你需要的其他逻辑。
惠特,你会得到很好的时机。如果调用者决定挂断,唯一的问题是杀死Originate频道,我已经完成了在AMI上发送频道杀死AGI脚本发送频道名称... bla bla ... :)
希望有所帮助:)