Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asterisk 如何从停车场转移到排队?_Asterisk_Asteriskami_Asternet - Fatal编程技术网

Asterisk 如何从停车场转移到排队?

Asterisk 如何从停车场转移到排队?,asterisk,asteriskami,asternet,Asterisk,Asteriskami,Asternet,我用C#AsterNET来管理我的星号命令和事件,现在我有了一个新的功能 这很简单(我想),但我现在很累 脚本 我有两个队列,8100和8300,两个扩展是8101和8301。当我有一个来自PSTN的呼叫时,它被驱动到8100队列。当8101分机可用时,我会将此分机添加到8100队列中,因此呼叫PSTN设备将重定向到此8101分机 在这里之前一切都很顺利 有时,我确实会将呼叫设备停驻,并使用我的应用程序让8301知道,因此使用相同应用程序的8301用户可以发送命令,要求将停驻的频道重定向到他的S

我用C#AsterNET来管理我的星号命令和事件,现在我有了一个新的功能

这很简单(我想),但我现在很累

脚本 我有两个队列,8100和8300,两个扩展是8101和8301。当我有一个来自PSTN的呼叫时,它被驱动到8100队列。当8101分机可用时,我会将此分机添加到8100队列中,因此呼叫PSTN设备将重定向到此8101分机

在这里之前一切都很顺利

有时,我确实会将呼叫设备停驻,并使用我的应用程序让8301知道,因此使用相同应用程序的8301用户可以发送命令,要求将停驻的频道重定向到他的SIP电话。工作也很好

范围 现在我想拥有一些功能,让8101将这个呼叫设备转移到我的另一个队列8300。所以我试着重用我的停驻方法和重定向方法

问题 我可以正常停车,但当我尝试从停车重定向到队列时,呼叫设备刚刚断开,连接丢失


如何将停靠的呼叫转移到我的队列或直接转移到队列(更好)无需发起?

只需等待而不是停车,并列出您自己的呼叫列表。

只需等待而不是停车,并列出您自己的呼叫列表。

要转移到队列中,我可以按照星号网站上的说明进行盲转。以下连结:

为了使用AsterNET实现这一点,我可以使用我使用的相同重定向操作,但我确实需要更改上下文。它不能是上下文的默认值,因为默认情况下,我们让Asterisk管理它,但不知何故,它无法按照我的经验处理。因此,需要明确规定为内部转移。此上下文传输后引发的事件是Manager\u BlindTransfer

因此,在调试引发的事件方法时,我使用SIP电话成功地转接了一个电话,这样我就可以捕获在中使用的上下文。使用正确的上下文

ManagerConnection manager = new ManagerConnection(address, port, user, password);

manager.BlindTransfer += Manager_BlindTransfer;

private void Manager_BlindTransfer(object sender, BlindTransferEvent e)
{

}
在此之后,我创建了另一个方法,使用正确的上下文将其直接传输到队列

internal void TransferToQueue(string channel, string queue)
{
    RedirectAction ma = new RedirectAction
    {
        Priority = priority,
        Context = "from-internal-xfer",
        Channel = channel,
        Exten = queue
    };

    ManagerResponse mr = manager.SendAction(ma);
}

TransferToQueue("abc123456", "8300")
总结 这只是一个正确使用上下文的问题


从内部xfer转移到队列,我可以按照星号网站上的说明进行盲转移。以下连结:

为了使用AsterNET实现这一点,我可以使用我使用的相同重定向操作,但我确实需要更改上下文。它不能是上下文的默认值,因为默认情况下,我们让Asterisk管理它,但不知何故,它无法按照我的经验处理。因此,需要明确规定为内部转移。此上下文传输后引发的事件是Manager\u BlindTransfer

因此,在调试引发的事件方法时,我使用SIP电话成功地转接了一个电话,这样我就可以捕获在中使用的上下文。使用正确的上下文

ManagerConnection manager = new ManagerConnection(address, port, user, password);

manager.BlindTransfer += Manager_BlindTransfer;

private void Manager_BlindTransfer(object sender, BlindTransferEvent e)
{

}
在此之后,我创建了另一个方法,使用正确的上下文将其直接传输到队列

internal void TransferToQueue(string channel, string queue)
{
    RedirectAction ma = new RedirectAction
    {
        Priority = priority,
        Context = "from-internal-xfer",
        Channel = channel,
        Exten = queue
    };

    ManagerResponse mr = manager.SendAction(ma);
}

TransferToQueue("abc123456", "8300")
总结 这只是一个正确使用上下文的问题


从内部xfer

即使保持呼叫,我也无法将其转移到8300队列。如果我想转移等待呼叫,我需要从我的SIP发起到8300队列,就像在另一篇文章中解释的那样,即使保持呼叫,我也不能将其转移到8300队列。如果我想转移等待呼叫,我需要从我的SIP发起到8300队列,就像在另一篇文章中解释的那样