如何从 linux 控制台发送 facebook 消息(命令行)

How to send facebook message from linux console (command-line)

过去,许多管理员使用 sms-gates 从他们的系统发送重要信息,例如"Power down, UPS is working now!"、"Power Up, UPS is off!" 或 "CPU Temp too high!"。今天在 Facebook 时代我们使用 Messenger 而不是 SMS,所以我想知道我是否可以为这样的东西创建一个命令行 bash 或 php 脚本。

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

问题:

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

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

聊天 API 已随 Graph API 的 v2.0 一起删除,无法再使用 API 发送消息。顺便说一句,消息是用于真实用户之间的交流,无论如何都不应该将它们用作通知系统。对于这类警告恕我直言,短信仍然是一个不错的选择。

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

Pages can only reply to a message - they cannot initiate a conversation. Also, a Page can only respond twice to a particular message, the other party will have to respond before they can reply again.

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

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

因此有几​​个命令行应用程序可以执行此操作。

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

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

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

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

在 bash 脚本中发送 facebook 消息

想法

我需要一个脚本(可以在我的 work/local 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 \"\" '"
    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"

自动 Facebook 消息

我一直在寻找类似的东西,发现 Messer 是正确的选择。

解决方案

看看这个名为 Messer 的 repo https://github.com/mjkaufer/Messer
(它也适用于 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只能发送,不能接收。