我正在尝试从一个旧版本的AsterNet升级到最新版本的Asterisk.Net。我们过去常常用AsteriskManager.OriginateCall()发起调用,后者返回一个Call对象。这个调用对象有一个UniqueId和ChannelName。
现在,我用SendAction()发起调用,并向它发送一个OriginateAction。所以我的第一个问题是:这是正确的方法吗?因为在我得到的结果中,UniqueId是空的,而且它没有ChannelName。我认为通道名可能在属性中,但属性也是空的。
那么,我如何获得我刚刚发起的电话的频道名称和唯一标识?
发布于 2014-03-21 15:46:35
下面是我所做的工作:我创建了一个OriginateAction。在OriginateAction中,我将Asynch设置为true。然后,我用带超时的SendEventGeneratingAction()发送了它。我检查我得到的ResponseEvents不是null,responseEvents.Events.Count > 0,responseEvents.Events是OriginateResponseEvent。然后,responseEvents.Events得到了我需要的所有信息。
发布于 2014-03-07 12:42:25
请查阅行动起源页面。也可以检查你库的源代码。
触发启动后,您将得到事件OriginateResponse,其中包含actoion id信息。在此之后,它将产生更多的事件(取决于版本),这将提供更多基于actionid的信息。
其他解决方案是发送一些变量,然后在拨号播放UserEvent命令中使用它返回所需的所有信息。
PS。在星号中创建没有经验的拨号核心是非常糟糕的想法,因为它会在负载下产生问题。使用已经写好的核心或聘请专家。
https://stackoverflow.com/questions/22225998
复制相似问题