将通知从 python 推送到 android
Posted
技术标签:
【中文标题】将通知从 python 推送到 android【英文标题】:Push notification from python to android 【发布时间】:2018-04-17 13:52:32 【问题描述】:我正在运行一些脚本,并在脚本运行完成后寻找一种简单的方法来 ping 我的手机。
在网络上做一些研究,我看到了使用 Slack、Push bullet、twilio、电子邮件等发送消息的方法。
我正在寻找一种从 python 向我的手机发送 ping/消息的简单方法的建议。
从某种意义上说很简单,它不需要大量配置外部帐户或付费服务。
【问题讨论】:
如果您正在运行 Linux,并且可以接受保持在同一个 WiFi 网络上,KDE Connect 有一个非常好的命令行客户端,您可以使用它来 ping 您的手机。kdeconnect-cli -d <DEVICE_ID> --ping-msg 'Script complete!'
不幸的是我不是!但是感谢您的建议!
嗯...想到的另一件事是ifttt.com。我使用它已经有好几年了,从来没有使用过 Python,但我确实发现它可以与之交互,而且 IFTTT 应该能够做你想做的事。 github.com/briandconnelly/pyfttt
【参考方案1】:
你可以试试 cmd:pip install telegram-send
,然后向你的 Telegram 机器人发送一条消息。
在 BotFather 创建你的电报机器人,从那里获取一个令牌,将其粘贴到
cmd: telegram-send --configure
用法:
import telegram_send
telegram_send.send(messages=["Hello world"])
我发现这比任何其他推送通知都要好。
更多信息: Link1 Link2
【讨论】:
可以在我的手机上使用,但是如何添加第二个人呢?我也想推给别人 @ikel 只需将您的机器人的链接提供给该人,或创建一个私人组并将您的机器人设置为将所有内容重定向到该组,然后关注该组并接受应该看到在那里的每个人。 (百万种方法)【参考方案2】:我找到了一个更简单的方法,但它不适用于 Linux。 Here 是更多详情的链接。
首先你必须安装 notify_run:
pip install notify_run
然后你必须注册:
notify-run register
它会给你一个二维码(在 Windows 上二维码不起作用)和一个链接,它将带你到一个网站,然后按“在此设备上订阅”(也许你必须刷新网站)
然后使用这个代码:
from notify_run import Notify
notify = Notify()
notify.send('any message you want')
【讨论】:
此方法向浏览器发送消息。我在 android 上没有看到任何通知。我错过了什么吗? 是的,这会将消息发送到浏览器,但您应该会收到通知。 此解决方案似乎不适用于有用户的生产环境,而仅适用于个人项目。 我可以让消息显示在我的浏览器中,但我没有收到任何通知(在我的 Android 手机或我的电脑上)【参考方案3】:我尝试过 Twilio,但它很复杂,而且我认为它不能(不再)免费向您发送消息。 Telegram 似乎是一个简单的解决方案。为了延伸到@Nick PV 的答案,以下是我作为 Telegram 初学者所采取的步骤:
1) 使用您的电话号码获取 Telegram 帐户(免费)
网址:https://web.telegram.org 同时下载 Telegram Andriod。当然,你毕竟想要手机上的通知
2) 进入设置(网页或应用)并设置用户名
这是获取id
所必需的,您的机器人将使用该id
向其发送消息
3) 向 RawDataBot 发送消息以获取您的 id
只需搜索 RawDataBot 并发送任何消息(hi
即可)。记下您的id
。
4) 创建您的机器人(您将使用 HTTP 请求对其进行命令)
现在搜索 BotFather 并发送消息/start
。显示帮助。发送消息/newbot
并按照说明进行操作。记下您的令牌以访问 HTTP API
5) 使用 Python 发送 API 请求
您可以安装和使用telegram-send,但如果您像我一样喜欢通用库requests,它将为您提供处理任何 HTTP API 的经验,这就是如何这样做:
import requests
token = "token_from_step_4"
url = f"https://api.telegram.org/bottoken"
params = "chat_id": "id_from_step_3", "text": "Hello World"
r = requests.get(url + "/sendMessage", params=params)
链接: 电报机器人:https://core.telegram.org/bots API 文档 sendMessage https://core.telegram.org/bots/api#sendmessage
【讨论】:
【参考方案4】:最后,我发现最简单的方法是使用 Slack。它需要一个 Python 函数(大约 6 行)和一个 Slack 帐户。
更多细节可以在这里找到on medium
【讨论】:
Medium 上的这个解决方案似乎已经过时了【参考方案5】:我在我的计算机上尝试了pushsafer 和notify-run,但没有成功(Linux Mint 19.3 tricia)
在我的电脑上,只有Slack 可以正常工作。这篇文章来自Youtube video,您将在视频中看到完整的过程。
您首先需要的是设备上的 Slack 应用程序(ios、Android 等)并创建一个 Slack 帐户(如果没有完成)
教程:
创建工作区和应用程序(请参阅this video 中的详细信息。抱歉,我没有将子步骤放在这里,但我将这个答案作为社区 wiki 放置,以便让您完成我开始的工作 :))
安装python库pip3 install sandesh
pip3 安装 Sandesh
获取您的 webhook => https://hooks.slack.com/services/blablabla
使用此示例向 Slack 发送消息:
python 代码:
import sandesh
sandesh.send("This is my test", webhook="<put here the https link of your webhook>")
可以找到开源的sandesh python模块here in gitHub
【讨论】:
还有一个slack
python 库,我用它代替了sandesh
,我发现它非常容易使用——Tech With Tim 上面有一个good tutorial。无需配置网络挂钩——只需将您的 API 令牌提供给 WebClient
并调用 chat_postMessage(channel, message)
以上是关于将通知从 python 推送到 android的主要内容,如果未能解决你的问题,请参考以下文章
无需谷歌云消息(GCM)将通知从 PC 推送到 android