【问题标题】:How can I read Caller ID information in a Cocoa app?如何在 Cocoa 应用程序中读取来电显示信息?
【发布时间】:2009-12-11 21:55:55
【问题描述】:

具体来说,我有一个 Apple USB 调制解调器,它说它支持来电显示,我希望我的应用程序能够知道何时有来电以及谁来电。将来我可能会添加拨号器功能等,但要先行一步。来电显示一站通!

也就是说,我不敢相信这已经被证明是如此难以找到甚至一个 ANYWHERE 的例子(我已经用谷歌搜索了这个垃圾!)但是谁能告诉我如何在 Mac 中进行基本的来电显示检测应用程序?我更喜欢 Cocoa,但如果必须,我愿意去 Carbon。

现在我不是在寻找一个完整的电话 API 示例,尽管如果我必须这样做,我会再走那条路,但我什至找不到!在 Windows 端到处都能找到这个东西,但在 Mac 上却找不到该死的东西!

【问题讨论】:

  • 我可以建议您将标签之一设置为“调制解调器”,或者至少在问题的前面提到它吗?我花了一段时间才意识到你真正想要的是什么。
  • 迈克,调制解调器是次要的。我提到它是因为这就是我所拥有的,但如果有另一种方法可以将呼叫者 ID 从我的家庭线路获取到应用程序中,我完全赞成。毕竟,不仅仅是调制解调器这样做。我有一个基于串行端口的来电显示盒,它不是调制解调器,但可以读取来电显示信息。但是,如果有一个 USB 或其他东西,或者任何其他可以让我获得来电显示的东西,这就是我最终想要的。黑匣子的胆量无关紧要。

标签: cocoa telephony phone-call modem


【解决方案1】:

elsewhere 所述,您可以(而且我已经)使用screen /dev/tty.usbmodem00001 或其他类似方法直接从终端访问调制解调器、发送 AT 命令或查看 RING 和 CallerID(一旦通过 AT 或 NCID 启用)。 他们还介绍了上面提到的 minicom 的用法。

谷歌搜索 /dev/tty mac callerid 揭示了很多想法。

至于编写软件,我想 NCID 要么证明有用(还有一个咆哮插件!),要么可以用作示例代码。请参阅the Mac install instructions,特别是在TEST USING A MODEM 下。这里是an example way of extending NCID to launch your own program/script with CallerID info.

【讨论】:

    【解决方案2】:

    伙计,那是老派。五年来我没有看到任何与模拟调制解调器有关的东西。我知道在过去,甚至 NextStep 调制解调器的东西都在 BSD 中并用 C 编写。我不认为这一切都有 Objective-C API。今天,一切都是 volIP。

    Asterisks 看起来像是您可以使用的东西。

    【讨论】:

    • 是的……这就是问题所在。我已经研究过从手机的蓝牙设备获取来电显示,但无济于事。我也研究过 VOIP 的东西,但除了 Skype 或其他应用程序之外,大多数 VOIP 硬件只是将信号转换回 POTS 线路,因此您仍然可以使用您的普通电话,因此您又回到了起点。正如我在回复上面的“调制解调器”评论时所说,最终的结果是我想以某种方式获得来电显示通知。不要真正关心如何或通过什么方法。只需要得到它。你可以告诉我任何解决方案,我完全赞成。
    • 我认为这会很难。人们只是不再做很多这样的工作了。我建议您寻找一些与 Posix 兼容的 Linux 解决方案并尝试将它们移植过来。 Linux 方面有很多硬件黑客攻击。
    【解决方案3】:

    您可以使用Hayes 命令与调制解调器通话吗?那么我认为您应该能够使用

    启用来电显示功能
    AT#CID=1
    

    如果您需要一个终端程序来与调制解调器通信,我可以推荐minicom。我刚刚用

    为 mac 编译了它
    LIBS=-liconv ./configure ; make ; sudo make install
    

    我不确定来电显示将如何显示,但我认为使用终端程序您应该能够在调制解调器输出 RING 时看到它。

    对此一无所知?也许这可以是start

    然后回到 Cocoa,如何对调制解调器说话?看到这个discussion

    这个page 有一个关于来电显示的讨论,有趣。显然在第一个RING之后输出了呼叫者ID和更多信息

    【讨论】:

    • 如果我能走到那一步,那就太好了……但我还没有找到任何方法可以到达 COM 端口以向下发送命令。我正在研究据称枚举串行端口的Apple示例,但除了查询系统连接了哪些调制解调器/端口和调制解调器时,我什么也得不到,而且当我尝试打开端口时它失败了.如果您知道任何用于与 USB 调制解调器通信的 Mac 代码,甚至只是一个 COM 端口,我很乐意看到它!会是一个巨大的帮助!
    • @MarqueIV 这个示例代码应该可以让你继续前进developer.apple.com/mac/library/samplecode/SerialPortSample 你应该注意到 .c 文件中早期定义的 AT 命令
    【解决方案4】:

    这比你想象的要难,因为没有 API 来控制调制解调器。

    上面 TechZen 提到的 Asterisk 是一个很好的参考,但 Asterisk 没有您尝试使用的 USB 调制解调器的驱动程序。 sunrisetel 的人们开始努力为 Apple 的 USB 调制解调器编写驱动程序,但我不确定他们是否同时放弃了它:see afelio

    引自 Afelio 的页面:

    Apple 在最近的 Mac 和外部 Apple USB 调制解调器中使用的 Motorola SM56 调制解调器的媒体服务器正在开发中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-25
      • 2017-12-31
      • 1970-01-01
      • 2019-11-23
      • 2019-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多