【问题标题】:How to send facebook message from linux console (command-line)如何从 linux 控制台(命令行)发送 facebook 消息
【发布时间】:2015-05-15 07:57:29
【问题描述】:

过去,许多管理员使用 sms-gates 从他们的系统发送重要信息,例如“断电,UPS 正在工作!”,“通电,UPS 已关闭!”或“CPU 温度太高!”。今天在 Facebook 时代,我们使用 messenger 而不是 SMS,所以我想知道我是否可以为这样的事情创建一个命令行 bash 或 php 脚本。

这个想法 - cron 每 10 分钟检查一次条件,如果为真,则向我的信使发送消息。

问题:

  1. 我不想使用我的 fb 帐户发送信息 - 我想收到消息 从“系统1”,“系统2”,因为我有不止一个系统 管理员。
  2. bash 部分对我来说很简单,我需要 Facebook 解决方案的提示:
    • 我是否必须获得 FacebookAppId(我是否必须为 每个系统或只有一个 AppId)
    • 如何使用我的 Facebook 帐户“加入/确认/接受”“系统 1”帐户
    • 是否可以向多个 FBAccount 发送消息
    • 任何其他提示我应该寻找什么。

我找到了Notification App,但我认为它不会向Messenger发送消息,所以它没有用。

【问题讨论】:

  • 我认为 Facebook 有一个系统,您可以通过电子邮件更新您的状态?如果是这样,为什么不这样做(但首先将您的帖子限制为特定的受众 [aka, you])?然后,您可以订阅该帐户并在有新更新时接收通知。不幸的是,拥有许多虚拟帐户违反了 Facebook 的规则,但据我所知,他们确实允许开发人员使用额外的帐户;您可以在状态更新中附加“服务器 1”、“服务器 2”等。
  • 不,他们不允许开发人员使用额外帐户。并更新您的状态,让每个朋友都看到它可能是一个非常糟糕的主意。这只是对你自己的警告。

标签: linux facebook bash command-line facebook-messenger


【解决方案1】:

所以有几个命令行应用程序可以做到这一点。

有一个 libpurple 扩展 (https://github.com/dequis/purple-facebook) 可以工作。然而紫色似乎不支持消息历史的想法。这是一种耻辱,因为我认为离线消息是大多数人使用 facebook 的默认方式。

还有一个用于 facebook 的一次性命令工具:https://www.npmjs.com/package/fb-messenger-cli,它支持历史记录。不幸的是,这是一个 TUI 而不是命令行应用程序,并且似乎不依赖于单独的 facebook 库。 一些黑客或可怕的期望胶水可以解决这个问题。

【讨论】:

    【解决方案2】:

    在 Graph API v2.0 中删除了 Chat API,无法再使用 API 发送消息。顺便说一句,消息是用于真实用户之间的通信,无论如何它们不应该用作通知系统。对于此类警告,SMS 仍然是一个不错的选择。

    使用页面和/conversations 端点也不起作用:

    页面只能回复消息 - 他们不能发起对话。此外,一个主页只能回复两次特定消息,对方必须先回复才能再次回复。

    来源:https://developers.facebook.com/docs/graph-api/reference/v2.3/conversation/messages#publish

    【讨论】:

    • 例如,SMS 是按月付费或限制为 10 次的,因此很容易实现命令行 - 所以我正在寻找更便宜的替代方案(每天 10 次或更多)。但我不明白为什么消息仅用于真实用户之间的交流 - 这在 FB 政策中吗?
    • 这是常识 :) - 是的,它实际上也在政策中。即使聊天 API 仍然存在,每条消息都必须 100% 由用户生成,并且不允许使用虚假帐户。您必须创建一个虚假/开发者帐户才能向自己发送消息 > 不允许。
    • 页面账户呢?如果我可以作为页面而不是用户发送消息,我现在无法检查
    • 你只能回复cmets,你不能作为页面发起消息。这一切都在 facebook 文档中。我已将相关部分添加到我的答案中。
    【解决方案3】:

    我刚刚为该用例发布了一项服务: https://www.nimrod-messenger.io/

    还处于早期阶段。非常欢迎您提供反馈:-)

    【讨论】:

    • 这只是您自己的惊人解决方案。如果我想将此类消息发送给多个用户怎么办?
    • 您可以将此消息多次发送给多个人。您只需要他们的 API 密钥即可。您对只需要一个 API 调用的解决方案感兴趣吗?显然,它需要一些额外的配置。
    • 我不知道公众对此有何看法,但我个人会犹豫通过属于我一无所知的人的代理发送任何信息。 “犹豫”是指“我永远不会这样做,永远”。
    【解决方案4】:

    我认为出于您的特殊目的,Twitter 可能是一个更好的选择。 Twitter 接受来自 API 的推文。因此,您需要做的是设置一个帐户以定期或触发事件发布您的系统状态,并在您自己的个人帐户中关注它。 并且已经有很多开源项目专注于通过 API 发送推文,t 是我目前正在使用的。

    【讨论】:

      【解决方案5】:

      在 bash 脚本中发送 facebook 消息

      想法

      我需要一个检查服务器的脚本(在我的工作/本地 mac 上工作)。如果有问题,脚本会在 Facebook 上向我发送消息。

      依赖关系

      需要安装:https://github.com/mjkaufer/Messer

      解决方案,bash 脚本

      FB_SENDER_LOGIN=""
      FB_SENDER_PASSWORD=""
      
      function send_fb_message {
          FB_MESSER_COMAND="messer $FB_SENDER_LOGIN $FB_SENDER_PASSWORD --command='m \"$1\" $2'"
          eval "$FB_MESSER_COMAND"
      }
      
      RECIPIENT_NAME_DISPLAYED_IN_FACEBOOK_WEBSITE="Vasily Bodnarchuk"
      MESSAGE="Houston, we have a problem!!!"
      send_fb_message "$RECIPIENT_NAME_DISPLAYED_IN_FACEBOOK_WEBSITE" "$MESSAGE"
      

      【讨论】:

        【解决方案6】:

        自动 Facebook 消息

        我一直在寻找类似的东西,发现梅塞尔是要走的路。

        解决方案

        看看这个名为 Messer https://github.com/mjkaufer/Messer 的 repo
        (它也适用于 2FA,但不适用于应用密码)

        实施

        1. 参见自述文件

        2. 我需要它自动运行,所以我使用它的非交互模式和 bash 脚本:

        message="Hey, what\'s up bro"
        FULLPATH/node_modules/.bin/messer --command="m \"Myfriends Name\" $message"
        
        • 我不喜欢通过 NPM 全局安装类似的东西,所以我使用了项目文件夹中的 /node_modules/.bin/messer 可执行文件。
        • 使用转义的双引号而不是单引号,以便能够在命令中使用变量。
        • 缺点:Messer 只能发送,不能接收。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-02-21
          • 1970-01-01
          • 2013-03-19
          • 2018-08-11
          • 1970-01-01
          • 2012-10-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多