代码之家  ›  专栏  ›  技术社区  ›  Ryan French

检测带星号的来电和呼叫对象

  •  4
  • Ryan French  · 技术社区  · 15 年前

    我目前正在编写一个windows服务,该服务使用星号a m i来检测何时有一个呼叫进入,然后根据呼叫的发件人和目标执行web请求。有没有人知道星号里的一个事件,我可以听包括这两个细节?我需要系统外正在呼叫的人的号码,但任何我可以用来识别正在呼叫的内部电话号码的东西都可以,只要它可以在星号之外使用。

    我在查看这些事件,它们都有外部调用方的号码,但是没有一个链接到内部调用方,除非使用uniqueid,除非我在服务中建立了这些事件的字典,否则我将无法使用它。

    有人有什么想法吗?

    2 回复  |  直到 9 年前
        1
  •  6
  •   Ryan French    15 年前

    最后,我只使用了ami并监听了call事件,从而做到了这一点。通过我们想要访问的内容,我收听了新频道事件、拨号事件和挂断事件,尽管如果您只需要知道谁在打电话,他们在打电话给谁,我非常确定您可以只监视拨号事件。

    每次接收到newchannel事件时,我都创建一个channel对象,并将其添加到当前星号服务器上的频道列表中。然后,通过监听带有begin子事件的拨号事件,我能够提取出通话双方的唯一频道id,然后得到相关号码。当收到挂机事件时,我移除了正在被破坏的频道。虽然我们还没有足够的时间来测试它,但现在看来效果很好,所以希望它是正确的。

        2
  •  0
  •   krystan honour    15 年前

    我确实有个主意,但你可能不喜欢答案:)

    我们试图这样做,但失败了,所以我们做了一些邪恶的事:)

    我们所做的是编写agi脚本,然后使用manager接口调用它们,然后擦掉命令行。

    像核心节目频道简洁等,虽然不起眼,但确实管用。我们使用regex解析字符串输出,然后从那里获取信息,这样做的唯一问题是,每次修补时,您都必须看到命令行的输出往往会改变修补程序。

    如果你真的发现了一种使用c api而不使用agi的方法,我会非常感兴趣,但是如果最终不使用agi脚本,我们就无法使用api做我们想要做的事情。